gengine简介

gengine简介

  • gengine是一款基于golang和AST(抽象语法树)开发的规则引擎,gengine支持的语法是一种自定义的DSL
  • gengine于2020年7月由哔哩哔哩(bilibili.com)授权开源
  • gengine现已应用于B站风控系统、流量投放系统、AB测试、推荐平台系统等多个业务场景
  • 你也可以将gengine应用于golang应用的任何需要规则或指标支持的业务场景

gengine相比于java领域的著名规则引擎drools的优势如下:

对比droolsgengine
执行模式 仅支持顺序模式 支持顺序模式、并发模式、混合模式,以及其他细分执行模式
规则编写难易程度 高,与java强相关 低,自定义简单语法,与golang弱相关
规则执行性能 低、无论是规则之间还是规则内部,都是顺序执行 高,无论是规则间、还是规则内,都支持并发执行.用户基于需要来选择合适的执行模式

为什么不使用gopher-lua或者js on golang

  • 因为我们开发业务的主语言是golang,如果使用gopher-lua或者javascript on golang,那么业务逻辑会从golang中"逃逸"到lua上或者javascript上, 使用者需要额外去学习lua或者javascript, 因此增加了业务逻辑的开发难度与测试难度;使用gengine,业务逻辑始终用golang开发,逻辑实现始终控制在golang代码内,且保持golang的语言性能, 当不再需要gengine支持的时候,基本上无需做任何改动,就可以将gengine上配置的代码(规则)转化为golang原生代码.

设计思想

如果你只依赖gengine,那么go.mod文件这么写:

module your_module_name

require github.com/bilibili/gengine v1.5.3
 

最新tag: https://github.com/bilibili/gengine/tags

posted on   ExplorerMan  阅读(210)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-02-20 一张图搞定OAuth2.0
2019-02-20 OAuth2.0的refresh token
2019-02-20 ACCESS_TOKEN与FRESH_TOKEN
2019-02-20 关于token和refresh token
2019-02-20 如何解决前后端token过期问题
2019-02-20 对外开放的接口验证方式
2019-02-20 python api接口认证脚本

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示