日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gengine规则引擎

發布時間:2024/1/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gengine规则引擎 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近對B站開源的gengine規則引擎進行了入門級的研究。現在整理的資料記錄如下。(歡迎交流討論)

原博客地址:?https://www.cnblogs.com/feixiang-energy/p/15572292.html

一:簡介:

  Gengine是一款基于golang和AST(抽象語法樹)開發的規則引擎, Gengine支持的語法是一種自定義的DSL, Gengine通過內置的解釋器對規則文件進行解析,構建規則模型,進行相應的規則計算和數據處理。Gengine于2020年7月由嗶哩嗶哩(bilibili.com)授權開源。Gengine現已應用于B站風控系統、流量投放系統、AB測試、推薦平臺系統等多個業務場景。

官網上給出的Gengine相比于Java領域的著名規則引擎drools優勢如下:

對比

drools

gengine

執行模式

僅支持順序模式

支持順序模式、并發模式、混合模式,以及其他細分執行模式

規則編寫難易程度

高,與java強相關

低,自定義簡單語法,與golang弱相關

規則執行性能

低、無論是規則之間還是規則內部,都是順序執行

高,無論是規則間、還是規則內,都支持并發執行.用戶基于需要來選擇合適的執行模式

  Gengine開源地址:GitHub - bilibili/gengine

:環境準備:

  Go語言環境準備:

  • Go語言官網(Downloads - The Go Programming Language)下載安裝go語言開發包:go1.15.2.windows-amd64.msi
  • 設置環境變量:GOROOT、GOPATH、GOPROXY、GO111MODULE:
  • 執行go env命令進行測試:
  •     

      開發工具準備:

  • 推薦JetBrains GoLand:goland-2020.2.3.exe
  •   第三方庫準備:

  • 在goland新建項目gengine。
  • 在goland的settings中設置go mod庫管理方式。
  • 在src目錄下新建go.mod文件:使用github.com/bilibili/gengine:v1.5.7版本
  • hello world測試程序:
  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    package?main

    //庫引用

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/builder"

    ???"github.com/bilibili/gengine/context"

    ???"github.com/bilibili/gengine/engine"

    )

    //定義規則 (通過函數注入的方式,打印"hello world")

    const?rule = `

    rule?"1"?"rule-des"?salience 10

    begin

    println("hello world, gengine!")

    end `

    //主函數

    func?main(){

    ???//初始化數據環境變量

    ???dataContext := context.NewDataContext()

    ???//注入println函數

    ???dataContext.Add("println",fmt.Println)

    ???//初始化規則

    ???ruleBuilder := builder.NewRuleBuilder(dataContext)

    ???//讀取規則

    ???err1 := ruleBuilder.BuildRuleFromString(rule)

    ???fmt.Println(err1)

    ???//初始化規則引擎

    ???eng := engine.NewGengine()

    ???//執行規則引擎

    ???err2 := eng.Execute(ruleBuilder,true)

    ???fmt.Println(err2)

    }

    :功能簡介:

      支持的規則語法:

    • 邏輯運算:&&、||、!、==、!=、>、>=、<、<=等。
    • 四則運算:+、-、*、/、()等。
    • If else條件選擇。
    • 預加載API。

      規則文件:

    • 支持規則名稱、描述、優先級設置。
    • 支持規則注釋。
    • 支持@name、@id、@desc獲取規則信息。
    • 支持自定義變量。
    • 支持報錯時行號提示。
    • 支持規則內調用注入的函數。
    • 支持規則內conc{}語句塊并發執行。
    • 目前不支持web可視化編寫規則文件,還需要技術人員進行手動配置。

      執行模式:

    • 順序模式:當指定規則優先級時,按照優先級順序執行。
    • 并發模式:不考慮優先級、各個規則并發執行。
    • 混合模式:先執行優先級最高的一個,剩余的n-1個并發執行。
    • 逆混合模式:先并發執行優先級最高的n-1個,都執行結束后執行最后一個。

      對外API接口:

    • dataContext:支持注入需要在規則中使用的結構體、函數。
    • ruleBuilder:與dataContext關聯,支持通過字符串方式導入規則。
    • engine:創建規則引擎,執行ruleBuilder關聯的規則。
    • GenginePoll:引擎實例池,支持在高QPS下實現高并發和線程安全。

      支持的規則注入:

    • golang的struct結構體。(以指針方式注入)
    • 基礎類的map、array、slice。
    • Golang編寫的函數。

      支持引擎池:

    • 類似于線程池或數據庫連接池。

    :實驗驗證:

      單規則:

      一個比較全的單規則例子:

      驗證了:結構體注入、函數注入、加法運算、自定義變量、結構體變量修改。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    package?main

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    ???"strconv"

    )

    type?User?struct?{

    ???Name string

    ???Age int64

    ???Male bool

    }

    func?(u *User) SayHi(s string){

    ???fmt.Println("Hi "?+ s +?", I am "?+ u.Name)

    }

    func?PrintAge(age int64)? {

    ???fmt.Println("Age is "?+ strconv.FormatInt(age, 10))

    }

    const?(

    ???rule1 = `

    rule?"rule1"?"a test"?salience 10

    begin

    ???println(@name)

    ???user.SayHi("lily")

    ???if?user.Age > 20{

    ??????newAge = user.Age + 100

    ??????user.Age = newAge

    ???}

    ???PrintAge(user.Age)

    ???user.Male = false

    end `

    )

    func?main(){

    ???dataContext := context.NewDataContext()

    ???user := &User{

    ??????Name:?"Calo",

    ??????Age:? 25,

    ??????Male: true,

    ???}

    ???dataContext.Add("user",user)

    ???dataContext.Add("println",fmt.Println)

    ???dataContext.Add("PrintAge", PrintAge)

    ???ruleBuilder := builder.NewRuleBuilder(dataContext)

    ???err1 := ruleBuilder.BuildRuleFromString(rule1)

    ???if?err1 != nil {

    ??????panic(err1)

    ???}

    ???eng := engine.NewGengine()

    ???err2 := eng.Execute(ruleBuilder,true)

    ???if?err2 != nil {

    ??????panic(err2)

    ???}

    ???fmt.Printf("Age=%d Name=%s,Male=%t", user.Age, user.Name, user.Male) 

      順序執行:

      一個多規則順序執行的例子:

      模擬探測站總貌狀態共3個規則:正常、預警、異常。順序執行。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    package?main

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    )

    type?Station?struct?{

    ???Temperature int64?????//溫度

    ???Humidity int64???????//濕度

    ???Water int64?????????????//水浸

    ???Smoke int64?????????????//煙霧

    ???Door1 int64?????????????//門禁1

    ???Door2 int64?????????????//門禁2

    ???StationState int64????//探測站狀態:?? 0正常;1預警;2異常;3未知

    }

    const?(

    ???stateRule = `

    rule?"normalRule"?"探測站狀態正常計算規則"?salience 8

    begin

    ???println("/***************** 正常規則 ***************")

    ???if?Station.Temperature>0 && Station.Temperature<80 && Station.Humidity<70 && Station.Water==0 && Station.Smoke==0 && Station.Door1==0 && Station.Door2==0{

    ??????Station.StationState=0

    ??????println("滿足")

    ???}else{

    ??????println("不滿足")

    ???}

    end

    rule?"errorRule"?"探測站狀態預警計算規則"?salience 9

    begin

    ???println("/***************** 預警規則 ***************")

    ???if?Station.Temperature>0 && Station.Temperature<80 && Station.Humidity<70 && Station.Water==0 && Station.Smoke==0 && (Station.Door1==1 || Station.Door2==1){

    ??????Station.StationState=1

    ??????println("滿足")

    ???}else{

    ??????println("不滿足")

    ???}

    end

    rule?"warnRule"?"探測站狀態異常計算規則"?salience 10

    begin

    ???println("/***************** 異常規則 ***************")

    ???if?Station.Temperature<0 || Station.Temperature>80 || Station.Humidity>70 || Station.Water==1 || Station.Smoke==1{

    ??????Station.StationState=2

    ??????println("滿足")

    ???}else{

    ??????println("不滿足")

    ???}

    end `

    )

    func?main(){

    ???station := &Station{

    ??????Temperature: 40,

    ??????Humidity:? 30,

    ??????Water: 0,

    ??????Smoke: 1,

    ??????Door1: 0,

    ??????Door2: 1,

    ??????StationState: 0,

    ???}

    ???dataContext := context.NewDataContext()

    ???dataContext.Add("Station", station)

    ???dataContext.Add("println",fmt.Println)

    ???ruleBuilder := builder.NewRuleBuilder(dataContext)

    ???err1 := ruleBuilder.BuildRuleFromString(stateRule)

    ???if?err1 != nil {

    ??????panic(err1)

    ???}

    ???eng := engine.NewGengine()

    ???err2 := eng.Execute(ruleBuilder, true)

    ???if?err2 != nil {

    ??????panic(err2)

    ???}

    ???fmt.Printf("StationState=%d", station.StationState)

    }

      并發執行:

      一個多規則并發執行的例子:

      模擬探測站報警事件共3個規則:溫度報警、水浸報警、煙霧報警。并發執行。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    package?main

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    ???"github.com/bilibili/gengine/engine"

    )

    type?Temperature?struct?{

    ???Tag string?????????????//標簽點名稱

    ???Value float64???????????//數據值

    ???State int64????????????????//狀態

    ???Event string????????????//報警事件

    }

    type?Water?struct?{

    ???Tag string?????????????//標簽點名稱

    ???Value int64?????????????//數據值

    ???State int64????????????????//狀態

    ???Event string????????????//報警事件

    }

    type?Smoke?struct?{

    ???Tag string?????????????//標簽點名稱

    ???Value int64?????????????//數據值

    ???State int64????????????????//狀態

    ???Event string????????????//報警事件

    }

    const?(

    ???eventRule = `

    rule?"TemperatureRule"?"溫度事件計算規則"

    begin

    ???println("/***************** 溫度事件計算規則 ***************/")

    ???tempState = 0

    ???if?Temperature.Value < 0{

    ??????tempState = 1

    ???}else?if?Temperature.Value > 80{

    ??????tempState = 2

    ???}

    ???if?Temperature.State != tempState{

    ??????if?tempState == 0{

    ?????????Temperature.Event =?"溫度正常"

    ??????}else?if?tempState == 1{

    ?????????Temperature.Event =?"低溫報警"

    ??????}else{

    ?????????Temperature.Event =?"高溫報警"

    ??????}

    ???}else{

    ??????Temperature.Event =?""

    ???}

    ???Temperature.State = tempState

    end

    rule?"WaterRule"?"水浸事件計算規則"

    begin

    ???println("/***************** 水浸事件計算規則 ***************/")

    ???tempState = 0

    ???if?Water.Value != 0{

    ??????tempState = 1

    ???}

    ???if?Water.State != tempState{

    ??????if?tempState == 0{

    ?????????Water.Event =?"水浸正常"

    ??????}else{

    ?????????Water.Event =?"水浸異常"

    ??????}

    ???}else{

    ??????Water.Event =?""

    ???}

    ???Water.State = tempState

    end

    rule?"SmokeRule"?"煙霧事件計算規則"

    begin

    ???println("/***************** 煙霧事件計算規則 ***************/")

    ???tempState = 0

    ???if?Smoke.Value != 0{

    ??????tempState = 1

    ???}

    ???if?Smoke.State != tempState{

    ??????if?tempState == 0{

    ?????????Smoke.Event =?"煙霧正常"

    ??????}else{

    ?????????Smoke.Event =?"煙霧報警"

    ??????}

    ???}else{

    ??????Smoke.Event =?""

    ???}

    ???Smoke.State = tempState

    end

    `)

    func?main(){

    ???temperature := &Temperature{

    ??????Tag:?"temperature",

    ??????Value:? 90,

    ??????State: 0,

    ??????Event:?"",

    ???}

    ???water := &Water{

    ??????Tag:?"water",

    ??????Value:? 0,

    ??????State: 0,

    ??????Event:?"",

    ???}

    ???smoke := &Smoke{

    ??????Tag:?"smoke",

    ??????Value:? 1,

    ??????State: 0,

    ??????Event:?"",

    ???}

    ???dataContext := context.NewDataContext()

    ???dataContext.Add("Temperature", temperature)

    ???dataContext.Add("Water", water)

    ???dataContext.Add("Smoke", smoke)

    ???dataContext.Add("println",fmt.Println)

    ???ruleBuilder := builder.NewRuleBuilder(dataContext)

    ???err1 := ruleBuilder.BuildRuleFromString(eventRule)

    ???if?err1 != nil {

    ??????panic(err1)

    ???}

    ???eng := engine.NewGengine()

    ???eng.ExecuteConcurrent(ruleBuilder)

    ???fmt.Printf("temperature Event=%s\n", temperature.Event)

    ???fmt.Printf("water Event=%s\n", water.Event)

    ???fmt.Printf("smoke Event=%s\n", smoke.Event)

    ???for?i := 0; i < 10; i++ {

    ??????smoke.Value = int64(i % 3)

    ??????eng.ExecuteConcurrent(ruleBuilder)

    ??????fmt.Printf("smoke Event=%s\n", smoke.Event)

    ???}

    }

      引擎池:

      一個引擎池的例子:

      創建了一個最大3個實例的引擎池。并發執行5個計算引擎。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    package?main

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/engine"

    ???"math/rand"

    ???"sync/atomic"

    ???"time"

    )

    const?rulePool = `

    rule?"rulePool"?"rule-des"?salience 10

    begin

    sleep()

    //print("do ", FunParam.Name)

    end `

    type?FunParam?struct?{

    ???Name string

    }

    func?Sleep() {

    ???rand.Seed(time.Now().UnixNano())

    ???i := rand.Intn(1000)

    ???time.Sleep(time.Nanosecond * time.Duration(i))

    }

    func?main(){

    ???Sleep()

    ???apis := make(map[string]interface{})

    ???apis["print"] = fmt.Println

    ???apis["sleep"] = Sleep

    ???pool, e1 := engine.NewGenginePool(1, 3, 2, rulePool, apis)

    ???if?e1 != nil {

    ??????panic(e1)

    ???}

    ???g1 := int64(0)

    ???g2 := int64(0)

    ???g3 := int64(0)

    ???g4 := int64(0)

    ???g5 := int64(0)

    ???cnt := int64(0)

    ???go?func() {

    ??????for?{

    ?????????param := &FunParam{Name:?"func1"}

    ?????????e2 := pool.ExecuteRules("FunParam", param,?"", nil)

    ?????????if?e2 != nil {

    ????????????println(fmt.Sprintf("e2: %+v", e2))

    ?????????}

    ?????????//time.Sleep(1 * time.Second)

    ?????????atomic.AddInt64(&cnt, 1)

    ?????????g1++

    ??????}

    ???}()

    ???go?func() {

    ??????for?{

    ?????????param := &FunParam{Name:?"func2"}

    ?????????e2 := pool.ExecuteRules("FunParam", param,?"", nil)

    ?????????if?e2 != nil {

    ????????????println(fmt.Sprintf("e2: %+v", e2))

    ?????????}

    ?????????//time.Sleep(1 * time.Second)

    ?????????atomic.AddInt64(&cnt, 1)

    ?????????g2++

    ??????}

    ???}()

    ???go?func() {

    ??????for?{

    ?????????param := &FunParam{Name:?"func3"}

    ?????????e2 := pool.ExecuteRules("FunParam", param,?"", nil)

    ?????????if?e2 != nil {

    ????????????println(fmt.Sprintf("e2: %+v", e2))

    ?????????}

    ?????????//time.Sleep(1 * time.Second)

    ?????????atomic.AddInt64(&cnt, 1)

    ?????????g3++

    ??????}

    ???}()

    ???go?func() {

    ??????for?{

    ?????????param := &FunParam{Name:?"func4"}

    ?????????e2 := pool.ExecuteRules("FunParam", param,?"", nil)

    ?????????if?e2 != nil {

    ????????????println(fmt.Sprintf("e2: %+v", e2))

    ?????????}

    ?????????//time.Sleep(1 * time.Second)

    ?????????atomic.AddInt64(&cnt, 1)

    ?????????g4++

    ??????}

    ???}()

    ???go?func() {

    ??????for?{

    ?????????param := &FunParam{Name:?"func5"}

    ?????????e2 := pool.ExecuteRules("FunParam", param,?"", nil)

    ?????????if?e2 != nil {

    ????????????println(fmt.Sprintf("e2: %+v", e2))

    ?????????}

    ?????????//time.Sleep(1 * time.Second)

    ?????????atomic.AddInt64(&cnt, 1)

    ?????????g5++

    ??????}

    ???}()

    ???// 主進程運行5秒

    ???time.Sleep(5 * time.Second)

    ???// 統計各個子進程分別運行次數

    ???println(g1, g2, g3, g4, g5)

    ???// 統計在引擎池下總的各個子進程總的運行測試

    ???println(g1 + g2 + g3 + g4 + g5, cnt)

    }

      規則文件熱更新:

      一個單例引擎增量更新規則文件的例子:

      驗證了在不中斷引擎計算的情況下:1)更新指定名稱的規則配置;2)添加規則配置。

      規則文件還支持動態刪除、引擎池熱更新等操作。不再驗證。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    package?main

    import?(

    ???"fmt"

    ???"github.com/bilibili/gengine/builder"

    ???"github.com/bilibili/gengine/context"

    ???"github.com/bilibili/gengine/engine"

    ???"math/rand"

    ???"strconv"

    ???"time"

    )

    type?Student?struct?{

    ???Name string????????????????//姓名

    ???score int64????????????????//分數

    }

    const?(

    ???ruleInit = `

    rule?"ruleScore"?"rule-des"?salience 10

    ???begin

    ???if?Student.score > 60 {

    ??????println(Student.Name, FormatInt(Student.score, 10),?"及格")

    ???}else{

    ??????println(Student.Name, FormatInt(Student.score, 10),?"不及格")

    ???}

    end

    `

    ???ruleUpdate = `

    rule?"ruleScore"?"rule-des"?salience 10

    ???begin

    ???if?Student.score > 80 {

    ??????println(Student.Name, FormatInt(Student.score, 10),?"及格")

    ???}else{

    ??????println(Student.Name, FormatInt(Student.score, 10),?"不及格")

    ???}

    end

    `

    ???ruleAdd = `

    rule?"ruleTeach "?"rule-des"?salience 10

    ???begin

    ???if?Student.score < 70 {

    ??????println(Student.Name, FormatInt(Student.score, 10),?"需要補課")

    ???}

    end

    `

    )

    func?main(){

    ???student := &Student{

    ??????Name:?"Calo",

    ??????score: 100,

    ???}

    ???dataContext := context.NewDataContext()

    ???dataContext.Add("FormatInt", strconv.FormatInt)

    ???dataContext.Add("println",fmt.Println)

    ???dataContext.Add("Student",student)

    ???ruleBuilder := builder.NewRuleBuilder(dataContext)

    ???err1 := ruleBuilder.BuildRuleFromString(ruleInit)

    ???if?err1 != nil {

    ??????panic(err1)

    ???}

    ???eng := engine.NewGengine()

    ???go?func() {

    ??????for??{

    ?????????student.score = rand.Int63n(50) + 50

    ?????????err2 := eng.Execute(ruleBuilder,true)

    ?????????if?err2 != nil {

    ????????????panic(err2)

    ?????????}

    ?????????time.Sleep(1 * time.Second)

    ??????}

    ???}()

    ???go?func() {

    ??????time.Sleep(3 * time.Second)

    ??????err2 := ruleBuilder.BuildRuleWithIncremental(ruleUpdate)

    ??????if?err2 != nil {

    ?????????panic(err2)

    ??????}

    ??????time.Sleep(3 * time.Second)

    ??????err3 := ruleBuilder.BuildRuleWithIncremental(ruleAdd)

    ??????if?err3 != nil {

    ?????????panic(err3)

    ??????}

    ???}()

    ???time.Sleep(20 * time.Second)

    }

      

    :總結:

      Gengine將規則文件的配置與程序代碼的編寫進行了一定程度的分離。規則文件采用類編程語言的方式進行編寫,支持簡單的數學運算、邏輯運算、if/else操作、結構體/函數注入等功能,同時能支持規則優先級設置和多種執行模式選擇。規則引擎可以較便捷的通過規則文件的配置來反映實際業務場景中所需要的規則指標,并且能較靈活的適應業務規則的變化。

      Gengine是由golang語言開發的,為了實現跨語言協同開發,通常可以將規則引擎封裝為一個獨立運行的規則引擎模塊,通過zmq、mqtt等方式進行數據的接入,根據配置的規則進行業務計算,然后將計算結果對外發布。

      Gengine規則引擎也可以搭配rpc、restful等接口,將其封裝為一個獨立的規則服務或計算服務,通過被其它服務調用的方式對外提供計算能力。

      在實際的業務場景中通常采用微服務架構,各微服務之間通過rpc、restful等接口進行交互。由于Gengine規則文件支持函數注入,因此甚至可以將已編寫好的接口調用進行事先羅列,在規則引擎中根據規則計算結果進行不同的業務調用。

      Gengine的規則文件熱更新功能也為生產環境中不停機更新業務規則提供了可能。

      Gengine作為B站開源的號稱“第三代規則引擎”,還有很多其它的一些特性功能等待去研究發現,并將其融入到業務應用中去。

    ?

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Gengine规则引擎的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产 日韩 在线 亚洲 字幕 中文 | 日韩高清免费在线 | 黄色av播放 | 日韩中文字幕国产精品 | 成年人在线免费看片 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产成人久久久77777 | 日日操操操| av在线com | 伊人永久在线 | 黄色a级片在线观看 | 麻豆精品在线 | 国产精品久久久久久69 | 不卡的av电影在线观看 | 国产美女精品人人做人人爽 | 久久亚洲私人国产精品 | 久久国产综合视频 | 又大又硬又黄又爽视频在线观看 | 亚洲成av人影院 | 亚洲 欧美变态 另类 综合 | 九色精品 | 国内精品久久久久久久久 | 成人试看120秒 | 亚州欧美视频 | 免费在线观看av电影 | 在线国产能看的 | 久久综合久久综合这里只有精品 | 一级黄色在线免费观看 | 在线播放 日韩专区 | 伊人伊成久久人综合网小说 | 91成人免费在线 | www.夜夜操.com | 久久精品一二三区白丝高潮 | 国产午夜精品一区二区三区四区 | 国产精品免费久久久 | 午夜影视剧场 | 国产婷婷视频在线 | 97视频免费在线 | 天天射天天干天天插 | 人人看人人做人人澡 | 亚洲精品久久久久久中文传媒 | 激情五月播播久久久精品 | 999精品网 | 日韩午夜剧场 | 国产精品久久久久久久久免费 | 亚洲天堂色婷婷 | 国产精品理论片在线播放 | 国产精品第二页 | 免费韩国av | 色网站在线免费观看 | 婷婷在线免费 | 久久99热久久99精品 | 精品久久久久久电影 | 午夜久久福利视频 | 国产精品久久精品国产 | 亚洲国产精品500在线观看 | 欧美日韩精品免费观看视频 | 最近中文字幕免费视频 | 国产69精品久久久久9999apgf | 欧美另类色图 | 在线免费色视频 | 久久久久国产精品免费免费搜索 | 国产亚洲人成网站在线观看 | 在线a人v观看视频 | 中文字幕av免费观看 | 国产福利一区二区三区在线观看 | 国产玖玖精品视频 | 色综久久 | 国产自在线观看 | 国产精品理论视频 | 美女视频黄是免费的 | 久久久国产精品电影 | av解说在线观看 | 天天操天天谢 | av丝袜天堂| av电影在线不卡 | 99这里只有久久精品视频 | 日韩在线视频免费观看 | 午夜精品福利一区二区 | 99自拍视频在线观看 | 亚洲精品视频二区 | 黄色在线看网站 | 四月婷婷在线观看 | 91在线网址 | 96av在线| 亚洲美女精品区人人人人 | 久久久久免费精品 | 国产精品视频久久久 | www.狠狠插.com | 亚洲一级久久 | 久久久久欧美精品 | 日韩精品一区二区三区视频播放 | 国产视频日韩视频欧美视频 | 最近中文字幕完整视频高清1 | 久久成人精品电影 | 999视频网| 天天色天天射天天干 | 久久久久北条麻妃免费看 | 久久人人添人人爽添人人88v | 国产亚洲精品美女 | 丁香五月网久久综合 | 81精品国产乱码久久久久久 | 久久av影院 | av在线影片| 亚洲成人第一区 | 中文字幕av在线不卡 | 麻豆视频在线免费 | 99999精品视频 | 免费碰碰 | 亚洲午夜精品久久久久久久久 | 久久性生活片 | 最新av中文字幕 | 在线黄色观看 | 黄色激情网址 | 99久久精品久久久久久清纯 | 国产精品毛片久久久久久久 | 国产电影黄色av | 综合在线亚洲 | 欧美大荫蒂xxx | 日韩欧美一区二区在线 | 久久国产成人午夜av影院潦草 | 综合天堂av久久久久久久 | 91亚洲影院 | 91污在线观看 | 日批在线观看 | 中文字幕一区二区三区乱码在线 | 亚洲成人国产精品 | 国产精品99久久久久久久久 | 99 精品 在线 | 国产视频一区二区三区在线 | 国产精品久久电影观看 | 成人免费大片黄在线播放 | 激情欧美丁香 | 日韩理论电影在线 | 香蕉久久久久久久 | www.福利视频 | 日韩一二三 | www免费看| 久久一区二区三区四区 | 丁香免费视频 | 国产在线 一区二区三区 | 亚洲视频电影在线 | 韩日精品中文字幕 | 成人av在线播放网站 | 黄色软件大全网站 | 久久精品草| 99精品区| 色五月成人| 天天操天天谢 | 一区二区三区高清在线 | 欧美一区中文字幕 | 草免费视频 | 午夜 在线 | 二区视频在线观看 | 久久精品成人热国产成 | 丁香六月婷婷 | 亚洲精品视频在线观看免费视频 | 91桃色国产在线播放 | 在线 国产一区 | 九九热在线视频免费观看 | 97伊人网| 国产男女免费完整视频 | 日韩av在线免费播放 | 六月色播| 久久综合九九 | 天堂资源在线观看视频 | a视频在线看 | www黄| 久草网视频在线观看 | 日韩高清网站 | 在线播放亚洲 | 人人干,人人爽 | 日韩欧美精品在线 | 99精品一级欧美片免费播放 | 在线国产黄色 | 91精品网站| 久久国产欧美日韩 | 最近字幕在线观看第一季 | 97精品国产一二三产区 | 在线视频 成人 | 在线观看视频一区二区三区 | 婷婷av资源| 精品九九九九 | 99精品小视频 | 中文字幕 国产精品 | 五月婷婷中文网 | 午夜av免费在线观看 | 亚洲三级网 | 一级免费片 | 美女久久视频 | 国产1级视频 | 久久免费视频在线观看 | 国产精品一区二区久久 | 久久婷婷视频 | 天天操网站 | www.人人草 | 国产成人精品三级 | 欧美精品久久久久久久久久久 | 蜜臀久久99精品久久久久久网站 | 99久久精品国产一区二区成人 | 91精品国产91久久久久福利 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久久久亚洲国产 | 99精品视频在线 | 一区二区日韩av | 69视频永久免费观看 | 日韩v欧美v日本v亚洲v国产v | 色综合久久88色综合天天6 | 中文字幕免费国产精品 | 久久精品亚洲一区二区三区观看模式 | 久久激情精品 | 91精品视频在线看 | 天天干天天怕 | 欧美日韩免费观看一区=区三区 | 欧美91视频 | 狠狠色狠狠综合久久 | 看片网站黄色 | 一区二区三区中文字幕在线 | 国产精品久久久久久久久久东京 | 在线观看蜜桃视频 | 成人在线视频论坛 | 国产亚洲成人精品 | 日本中文字幕电影在线免费观看 | 日韩精品免费一区二区三区 | 天天综合天天做 | 中文字幕一区二区三区在线观看 | 极品美女被弄高潮视频网站 | 国产视频精品视频 | 亚洲精品久久久蜜桃直播 | 日韩a欧美 | 欧美一级性生活视频 | 久久影院亚洲 | 国产精品国产三级国产专区53 | 日本在线观看视频一区 | 国产亚洲精品久久19p | 丁香婷婷射 | 九九免费精品视频在线观看 | 色网站在线免费观看 | 激情视频久久 | 国产高清精品在线观看 | 永久免费精品视频 | 四虎在线观看精品视频 | 97人人人人 | 视频 天天草 | 狠狠色狠狠色综合系列 | 中文字幕在线观看视频一区二区三区 | 国产精品激情在线观看 | 亚洲综合五月 | 久久午夜视频 | 99国产精品视频免费观看一公开 | 色中文字幕在线观看 | 欧美精品久久久久久久久免 | 久久久国产成人 | 手机av资源| 婷婷在线播放 | 欧美日产一区 | 人人擦 | 日韩最新中文字幕 | 免费成人结看片 | 在线精品视频免费播放 | 成人在线观看免费 | 三级动态视频在线观看 | 日韩精品一区在线播放 | 六月丁香激情综合色啪小说 | 久久一区二区三区国产精品 | 五月天,com | 美女很黄免费网站 | 天天操天天操天天 | 国产精品美女 | 欧美亚洲精品一区 | 久草在线91 | 成年人免费看片网站 | 最近中文字幕免费大全 | 98精品国产自产在线观看 | 国内精品久久久久国产 | 日本午夜免费福利视频 | 不卡av在线播放 | 免费男女羞羞的视频网站中文字幕 | 久久电影网站中文字幕 | 三级在线视频播放 | 久久免费国产精品 | 美女黄频在线观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 成人av网站在线 | a黄色大片| 五月婷婷黄色网 | 国产福利午夜 | 午夜性色 | 午夜精品久久久99热福利 | www.com久久| 国产亚洲精品成人av久久ww | 91观看视频 | 中文字幕 在线 一 二 | 久久任你操 | 精品在线观看一区二区 | 久久日韩精品 | 亚洲视频在线免费观看 | 成人免费视频视频在线观看 免费 | 日韩精品一区二区三区丰满 | 99热这里只有精品国产首页 | 久久久精品99 | 日韩精品视频久久 | 91丨九色丨勾搭 | 夜夜爽夜夜操 | 日韩色av色资源 | 免费看黄在线网站 | 国产日韩欧美网站 | 亚洲视频高清 | 国产精品12| 激情九九 | 99久久精品免费看国产一区二区三区 | 激情综合五月网 | 欧美日韩天堂 | 六月激情久久 | 四虎永久国产精品 | 免费观看完整版无人区 | 丁香花在线视频观看免费 | 欧美日本三级 | 久久久久久久毛片 | 国产精品久久久久毛片大屁完整版 | 天天躁天天操 | 精品字幕 | 91影视成人 | 日韩在线网 | 91精品视屏 | 麻豆免费观看视频 | 国产一区二区在线观看视频 | 欧美aa在线 | 高清不卡一区二区在线 | 久久久久久久久电影 | 精品久久网| 国产亚洲视频系列 | 久久成年人网站 | 91av原创 | 2020天天干夜夜爽 | 中文字幕av免费观看 | 99视频久久| 国产又粗又猛又黄 | 日日夜夜天天人人 | 午夜精品久久久久久久久久久 | 综合天堂av久久久久久久 | 久久国产精品99久久久久久丝袜 | 97国产超碰在线 | 国产精品女同一区二区三区久久夜 | 国产成人在线免费观看 | 蜜臀久久99精品久久久无需会员 | 久久久久久黄色 | 国产亚洲va综合人人澡精品 | 99久久精品国| 国产盗摄精品一区二区 | 日韩最新在线视频 | 国产精品一区免费观看 | 亚洲婷婷在线视频 | 欧美激情在线看 | 麻豆va一区二区三区久久浪 | 亚洲视频精品在线 | 亚洲国产中文在线观看 | 99久久国产免费看 | 欧美大片大全 | 在线不卡视频 | 国产在线观看国语版免费 | 精品 一区 在线 | 在线观看韩日电影免费 | 久草在线综合网 | 国产一区私人高清影院 | 四虎影视成人永久免费观看亚洲欧美 | 三级免费黄色 | 国产一性一爱一乱一交 | 91精品视频在线 | 国内精品久久久久久久久久 | 欧美一级日韩免费不卡 | 曰本三级在线 | 亚洲va在线va天堂 | 久久久蜜桃一区二区 | 97精品国产91久久久久久 | 天天色天天上天天操 | 一级片视频在线 | 久久久久久激情 | 99久久久久国产精品免费 | 亚洲国产日韩精品 | 亚洲理论视频 | 精品免费久久久久 | 欧美日韩免费观看一区二区三区 | 中文字幕一区二区在线播放 | 日韩欧美国产视频 | 亚洲精品视频在线 | 欧美在线你懂的 | 成人性生交大片免费观看网站 | 人人网av | 久久a v电影 | 视频一区二区在线 | 精品国产视频一区 | 成人一级在线观看 | 国产成人精品久 | 亚洲无吗视频在线 | 日韩在线视频在线观看 | 在线电影 一区 | 欧美日本一二三 | 六月婷操 | a天堂免费 | 狠狠狠狠狠干 | 伊人五月综合 | 日韩国产欧美视频 | 17videosex性欧美 | 在线视频app | 99精品视频在线观看视频 | 国产精品情侣视频 | 亚洲v欧美v国产v在线观看 | 99视频在线看 | 久久久久免费观看 | 91麻豆精品国产自产 | 亚洲天堂毛片 | 免费观看视频黄 | 国产亚洲成av人片在线观看桃 | 在线观av| 日韩大片在线播放 | 黄色精品久久久 | 免费在线观看日韩 | 午夜aaaa | 激情欧美一区二区三区 | 毛片.com| 中文字幕欧美日韩va免费视频 | 五月在线视频 | 久草干| 最新国产精品拍自在线播放 | 91av播放 | 麻豆视频成人 | 色资源网在线观看 | 亚洲国产精品电影在线观看 | 久久久免费网站 | 国产精品com | 精品视频网站 | 人人射人人射 | 亚洲欧美日韩精品久久奇米一区 | 成人资源站| 丁香网婷婷 | 色婷婷亚洲婷婷 | 97国产在线视频 | 亚洲涩综合 | 黄色a在线| 久草视频在线播放 | 三级黄色a | 中文字幕亚洲欧美 | 中文久久精品 | av资源中文字幕 | 狠狠躁18三区二区一区ai明星 | 国产亚洲精品女人久久久久久 | 国产精品视频区 | 欧美精品久久久久久久久久白贞 | 国产午夜精品一区二区三区在线观看 | 天天爽天天做 | 国产剧情在线一区 | 美女视频久久久 | 国产精品色婷婷 | 四虎永久网站 | 久久久久久黄 | 黄色片视频在线观看 | 国产精品美女久久久久久久网站 | 日韩在线观看你懂的 | 国产成人av网址 | 日韩三区在线 | 日本 在线 视频 中文 有码 | 7799av | 国产成人精品一区二区三区在线 | 麻豆91网站 | 国产精品一区二区在线看 | 天天射天天干天天插 | 久久人91精品久久久久久不卡 | 最近最新中文字幕视频 | 96精品高清视频在线观看软件特色 | 国产一级片免费播放 | 国产一区二区在线影院 | 欧美一区二区免费在线观看 | 国产看片网站 | 91九色自拍 | 欧美人交a欧美精品 | 久久精品高清 | av电影在线观看 | 天天爱天天 | 成人97视频一区二区 | 深夜福利视频一区二区 | 国产精品欧美在线 | 日韩理论在线 | 特级毛片网 | 成人精品99 | 久久久精品视频网站 | 亚洲 欧美 另类人妖 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 日本中文不卡 | 色婷婷在线观看视频 | 五月婷婷久 | 99精品在线免费在线观看 | 欧美日韩高清在线 | 日本在线观看一区二区三区 | 一级a毛片高清视频 | 国产无遮挡又黄又爽在线观看 | 午夜电影久久久 | 日韩在线观看高清 | 久草精品在线观看 | 久久精品在线 | 中文伊人| 国产精品99精品久久免费 | 91免费高清视频 | 久久国产精品影片 | 成人福利在线观看 | 91九色视频在线观看 | 国产精品久久久久久久久久久久久久 | 国产真实在线 | 国产一区二区免费 | 久草热久草视频 | 成人免费在线观看电影 | 免费亚洲片 | 91久久国产综合精品女同国语 | 欧美成人91 | 国产午夜精品一区二区三区在线观看 | 免费高清在线一区 | 亚洲精品大片www | 美女免费视频一区 | 精品国产成人在线影院 | 亚洲国内精品在线 | 色综合久久网 | 国产成人亚洲精品自产在线 | 超碰公开在线 | 免费能看的av | 在线日韩精品视频 | 久久免费视频这里只有精品 | 黄色精品一区二区 | 高清中文字幕av | 国产精品美女久久久久久久久久久 | 午夜久久久精品 | 亚洲精品中文字幕视频 | 国产专区视频在线 | 91久久国产精品 | 欧美高清视频不卡网 | 伊人婷婷在线 | 99久久99视频只有精品 | 亚洲国产一区二区精品专区 | 天天射天天色天天干 | 色婷婷福利视频 | av 在线观看 | 欧美一区免费观看 | 成人免费网站在线观看 | 精品国产aⅴ一区二区三区 在线直播av | 日韩一区二区三区在线观看 | 久久久久久国产精品 | 精品在线99| 国内视频在线 | 国偷自产视频一区二区久 | 婷婷5月激情5月 | 天天操天天爱天天爽 | 三级av黄色 | 色视频网站免费观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 亚洲一区精品人人爽人人躁 | 91精品久久久久久综合乱菊 | 亚洲影院国产 | 免费在线一区二区 | 一本色道久久综合亚洲二区三区 | 探花视频在线观看免费 | 久久久久久久国产精品视频 | 欧美日韩国产在线精品 | 狠狠色伊人亚洲综合网站色 | 最新高清无码专区 | 国产一区免费观看 | 久久999精品| 国产精品美乳一区二区免费 | 99色国产 | 成人97视频一区二区 | 色综合久久99 | 国产精品久久久久久久久免费 | 一区二区在线影院 | 亚洲免费av一区二区 | 蜜桃麻豆www久久囤产精品 | 美女免费视频一区 | 在线看片91 | 欧美一区二区在线看 | 国产精品99爱 | 狠狠干在线 | 超碰在线网| 欧美在线视频一区二区三区 | 青青看片 | 日韩中文字幕国产精品 | 日日操天天爽 | 人人盈棋牌 | 亚洲精品免费在线观看视频 | 久久久久久久久久久久久国产精品 | 亚洲一区二区视频在线播放 | www五月天婷婷| 久久99精品久久久久久秒播蜜臀 | a级片韩国| 日本h在线播放 | 国产亚洲精品久久久网站好莱 | 激情在线网址 | 中文字幕精品三级久久久 | 91精品国产欧美一区二区成人 | 黄色免费网站下载 | 国产精品网红福利 | 黄色国产高清 | 黄色网址av | 久久伊人免费视频 | 亚洲在线精品视频 | 亚洲欧洲在线视频 | 蜜臀av性久久久久蜜臀av | 九九欧美 | 高清av免费一区中文字幕 | 中文字幕在线有码 | 国产系列精品av | 国产成人精品在线播放 | 九九视频在线播放 | 97夜夜澡人人双人人人喊 | 久久欧美在线电影 | www日韩视频 | 999久久精品 | 精品999 | 黄污网站在线观看 | 国产成人综合图片 | 国产一区久久久 | 国产手机在线 | 久久99精品久久久久婷婷 | a黄色片在线观看 | 国产日韩中文字幕在线 | 国产女人40精品一区毛片视频 | 免费麻豆视频 | 亚州精品国产 | 亚洲成人一二三 | 精品一区二区三区四区在线 | 国产精品成 | 人人看黄色| 久久一精品 | 五月婷婷六月丁香 | 色综合天天干 | 国产黄色精品在线观看 | 久久视频在线观看免费 | 综合中文字幕 | 密桃av在线| 色全色在线资源网 | 亚洲精品乱码久久久久久蜜桃不爽 | 天天综合网天天综合色 | 国产伦精品一区二区三区在线 | 日韩免费不卡av | 国产精品久久久久久久电影 | 久久久国产精品一区二区三区 | 91在线看黄 | 在线免费观看麻豆视频 | 91综合色 | 免费在线播放视频 | 激情伊人五月天 | 精品一区中文字幕 | 在线看的毛片 | 成人国产一区二区 | 91精选| 最近中文字幕高清字幕免费mv | 一区二区精品在线 | 日韩在线激情 | 欧美做受高潮 | 国产不卡视频在线播放 | 天天综合操 | 国产 一区二区三区 在线 | 天天干天天操天天爱 | 久久国产精品久久精品国产演员表 | 久久理论视频 | 欧美精品久| 国产精品久久久久高潮 | 久久久免费毛片 | 日本99久久 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | av在线成人 | 在线观看免费视频你懂的 | 在线免费av网站 | 久久激情小视频 | 色综合久久久久综合 | 久久综合给合久久狠狠色 | 中中文字幕av在线 | 亚洲精品1234区 | 婷婷视频在线 | 一级特黄av| 在线电影中文字幕 | 日韩av一区二区在线播放 | 国产福利午夜 | 亚洲一区精品二人人爽久久 | 欧美精品亚洲精品 | 日韩在线看片 | 国产中文字幕一区二区 | 成人av观看| 亚洲jizzjizz日本少妇 | 91探花国产综合在线精品 | 久久久五月天 | 狠狠色丁香婷婷综合久小说久 | 欧美日韩在线第一页 | 日日爽天天 | 日韩免费一区二区三区 | 国产美女视频免费观看的网站 | 人人dvd| 超碰在线人人爱 | 日韩啪啪小视频 | 国产在线播放一区二区三区 | 欧美激情视频在线免费观看 | av国产在线观看 | 三级av在线 | 最新成人av| 99爱在线观看 | 成人理论在线观看 | 久久久久久视频 | 麻豆精品传媒视频 | 9热精品 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | www.超碰97.com| 色噜噜噜噜 | 在线播放日韩 | 天天做天天爱天天爽综合网 | 久久超| 亚洲黄色免费网站 | 500部大龄熟乱视频使用方法 | 亚洲精品久久久久999中文字幕 | 91精品专区 | 欧美少妇xx | 六月丁香激情网 | 三日本三级少妇三级99 | 国产伦精品一区二区三区无广告 | 不卡av电影在线观看 | 成人免费xyz网站 | 视频在线一区二区三区 | 成人国产一区 | 亚洲精选视频免费看 | 日韩中文字幕免费看 | www.亚洲| 日韩精品在线观看视频 | 成人免费一区二区三区在线观看 | 国产精品久久亚洲 | 久久午夜国产精品 | 欧美日韩成人 | 成人毛片在线视频 | 久久久久久97三级 | 国产一级大片免费看 | 91麻豆精品国产91 | 久久999精品 | 免费看片日韩 | 久久免费观看少妇a级毛片 久久久久成人免费 | 美女网站色在线观看 | 99热网站| 色五婷婷 | 婷婷久久综合九色综合 | 成人高清在线 | 国产69精品久久久久久久久久 | 久久视频精品在线 | 91精品国产综合久久福利 | 麻豆影视在线播放 | 亚洲1级片| 亚洲精品国产成人av在线 | 欧美福利精品 | 高清不卡一区二区三区 | 在线观看国产亚洲 | 欧美一二三区在线观看 | 亚洲 欧美 另类人妖 | 国产一级做a爱片久久毛片a | 国内久久看| 国产精品三级视频 | 国产一级免费观看视频 | 日韩国产精品久久久久久亚洲 | 亚洲成成品网站 | 久久久国内精品 | 久久视频在线看 | 久久视频在线免费观看 | 日韩在线观看一区二区三区 | 亚洲欧洲精品视频 | 久久精品国产免费看久久精品 | 99视频这里有精品 | 国产日产亚洲精华av | 欧美一级性生活视频 | 日韩大片在线 | 国产精品久久久久久久久久久久午夜片 | 日韩欧美在线视频一区二区 | 最近免费中文视频 | 久产久精国产品 | 毛片一区二区 | 天天插天天干 | 欧美一级日韩免费不卡 | 欧美精品在线观看免费 | 亚洲天堂网视频 | 久久不射电影院 | 热久久视久久精品18亚洲精品 | 日韩福利在线观看 | 国产在线成人 | 国产码电影 | 日韩精选在线观看 | av一区二区三区在线播放 | 成人国产精品一区 | 成年人在线免费看视频 | 日韩视| 日韩免费一级电影 | 美女久久久久久久久久久 | 狠狠色丁香久久婷婷综合_中 | 国产精品免费观看在线 | 欧日韩在线视频 | 久久免费视频在线观看6 | 一级黄色电影网站 | 色噜噜噜| 久久在现| 日韩精品在线观看av | 高清视频一区 | 日韩一区二区三免费高清在线观看 | 91成人精品一区在线播放69 | 亚洲精品免费观看 | 精品毛片在线 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲无吗天堂 | 一区二区欧美在线观看 | 国产精品久久久久久超碰 | 婷婷丁香狠狠爱 | 亚洲www天堂com | www.玖玖玖 | 国产精品免费看 | 国色天香永久免费 | 97视频在线免费播放 | 一级黄色大片在线观看 | 国产精品精品久久久 | 日日夜夜精品视频 | 又黄又爽又色无遮挡免费 | 天天激情天天干 | 成人免费在线观看电影 | 日韩av成人在线观看 | 丁香六月网 | 欧美精品一区二区在线观看 | 中文字幕123区 | 91免费版成人 | 欧美精品一区二区蜜臀亚洲 | 亚洲精品乱码久久久久久蜜桃不爽 | 日韩视频免费在线 | 狠狠干夜夜操 | 日韩av片免费在线观看 | 亚洲午夜在线视频 | 亚洲干| 日日干网| 毛片3| 狠狠躁夜夜躁人人爽超碰91 | 久久另类小说 | 在线 欧美 日韩 | 午夜性色 | av一二三区 | 国产成人久久 | 日日成人网 | 日韩在线视频免费看 | 国产精成人品免费观看 | 91九色网站 | 黄色大片免费网站 | av成人在线网站 | 激情五月婷婷综合 | 奇米网网址 | 免费网站在线观看人 | 又色又爽又黄高潮的免费视频 | 免费看黄20分钟 | 久久久国产精品亚洲一区 | 免费看国产黄色 | 国产视频2| 国产99久久久久久免费看 | 天天爽人人爽夜夜爽 | 亚洲最新在线 | 久久这里精品视频 | 久久精品日本啪啪涩涩 | 在线观看完整版 | 欧美日韩另类在线 | 国产高清av免费在线观看 | 99热这里只有精品在线观看 | 性色av免费观看 | 国产精品久久久久毛片大屁完整版 | 国色综合 | 深夜免费网站 | 操操爽 | 久久tv视频 | 中文免费观看 | 欧美伦理一区 | 在线视频观看91 | 久久线视频| 国产精品乱码一区二三区 | av在线激情 | 91精品免费视频 | 欧美一级性视频 | 激情网在线观看 | 特级a毛片 | 精品国产伦一区二区三区观看体验 | 免费黄色a级毛片 | 久久视频免费在线 | av成人免费观看 | 一级黄视频 | 亚洲 中文 在线 精品 | 最近中文国产在线视频 | 成人国产网站 | 欧美日产在线观看 | 久久精品99国产 | 在线韩国电影免费观影完整版 | 欧美另类激情 | 狠狠地操| 玖玖玖影院 | 毛片a级片 | 免费看国产精品 | 国产精品美女毛片真酒店 | 欧美成年黄网站色视频 | 91精品国产成人观看 | 亚洲国内精品 | 嫩草91影院 | 福利电影一区二区 | 99成人免费视频 | 在线观看亚洲精品视频 | 免费毛片aaaaaa| 久久免费黄色 | 98超碰在线| 欧美与欧洲交xxxx免费观看 | 婷婷激情久久 | 免费涩涩网站 | 成人国产网址 | 黄色成人在线网站 | 奇米网在线观看 | 日本中文字幕在线播放 | 最新亚洲视频 | 欧美91视频 | www.午夜| 天天色天天骑天天射 | 欧美一二三区在线观看 | 亚洲精品日韩一区二区电影 | 成人国产一区二区 | 色综合久久综合中文综合网 | 日韩免费电影一区二区三区 | 亚洲成人av在线电影 | 色综合天天综合网国产成人网 | 亚洲成人av在线播放 | 婷婷久久一区 | 国产高清一区二区 | 欧美精品亚洲二区 | 亚洲va欧美va | 免费日韩av片 | 色老板在线 | 五月开心激情网 | 美女视频是黄的免费观看 | 五月激情电影 | 欧美亚洲精品在线观看 | 成人电影毛片 | 日韩欧美在线不卡 | 日本性高潮视频 | 黄色a级片在线观看 | 最近中文字幕在线中文高清版 | 亚洲人成网站精品片在线观看 | 亚洲每日更新 | 国产国产人免费人成免费视频 | 久久久久久久99精品免费观看 | 这里只有精品视频在线 | 狠狠综合网 | www.黄色网.com | 最新av在线播放 | 国产视频一区二区三区在线 | 国产成人在线网站 | 久久 一区 | 免费在线成人av | h网站免费在线观看 | 黄色精品久久 | 久草在线免费看视频 | 一区二区欧美激情 | 国产精品99久久99久久久二8 | 亚洲成人av片 | 午夜视频一区二区三区 | www.97视频 | 亚洲 欧美 国产 va在线影院 | 国产69精品久久久久久 | 日韩一区二区三区不卡 | 91黄色免费网站 | 视频国产精品 | 色五月色开心色婷婷色丁香 | 婷婷丁香七月 | aaa毛片视频 | 亚洲永久精品国产 | 在线中文字幕视频 | 欧美一级乱黄 | 99视频精品在线 | 久久视频 | 91精品夜夜| 深夜福利视频一区二区 | 欧美午夜精品久久久久 | 2019中文字幕网站 | 免费日韩 精品中文字幕视频在线 | 久久精品视频4 | 97在线看 | 久久精品免费播放 | 成av人电影 | 精品国产乱码久久久久久三级人 | 中文字幕在线免费观看视频 | 婷婷深爱网| 激情五月在线观看 | 在线观看香蕉视频 | 亚洲美女视频在线观看 | 超碰在线网 | 99久久夜色精品国产亚洲96 | 99久久婷婷国产综合亚洲 | 丁香久久五月 | 黄色大全视频 | 欧美日韩一区二区视频在线观看 | 四虎8848免费高清在线观看 | 精品久久一区二区 | 国产原创中文在线 | 国内精品国产三级国产aⅴ久 |