首页 > 其他分享 >gengine简介

gengine简介

时间:2024-02-20 15:00:24浏览次数:39  
标签:bilibili 简介 模式 golang lua 规则 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

标签:bilibili,简介,模式,golang,lua,规则,gengine
From: https://www.cnblogs.com/ExMan/p/18023138

相关文章

  • STL简介
    01.STL的介绍(重点)1.STL(StandardTemplateLibrary,标准模板库)2.STL提供了六大组件:容器,算法,迭代器,仿函数,适配器,空间配置器​ 容器:各种数据结构​ 算法:各种常用的算法(冒泡,排序)​ 迭代器:扮演了容器与算法之间的胶合剂(类似于指针等)​ 仿函数:行为类似函数,可作为算法的某种策略......
  • OCV, AOCV, POCV, LVF 简介
    芯片生产过程中,由于外界条件和生产条件的变化,如PVT,可能导致同一晶圆上不同区域的芯片晶体管速度变快或变慢,从而产生corner概念。BCWC代表bestcasecorner和worstcasecorner,分别表示两种不同的PVT环境。OCV、AOCV、POCV和LVF模式是在不同PVT(不同corner)基础上添加derate。1.OCV......
  • 异步编程简介
    异步编程是一种编程模式,旨在提高程序的性能和响应速度。通过将某些任务异步执行,程序可以在等待结果时继续执行其他任务,从而减少了阻塞和等待的时间。在本篇博客中,我们将详细探讨异步编程的各个方面,并介绍常见的异步编程技术和工具。什么是异步编程?传统的同步编程方式中,代码会按照......
  • Spring - 简介
    Spring发展至今,已经形成了一个生态体系(Spring全家桶)  Java web架构演变过程1、Servet+JSP+ JavaBean(跳转页面、业务逻辑判断、数据库查询)2、MVC三层架构(web-跳转页面、service-业务逻辑判断、dao-数据库查询)3、使用EJB进行应用的开发,但是EJB是重量级框架(在使用的......
  • Go语言精进之路读书笔记第22条——使用defer让函数更简介、更健壮
    22.1defer的运行机制在Go中,只有在函数和方法内部才能使用defer。defer关键字后面只能接函数或方法,这些函数被成为deferred函数。defer将它们注册到其所在goroutine用于存放deferred函数的栈数据结构中。在执行defer的函数退出前,按后进先出(LIFO)的顺序调度执行。22.2defer的......
  • SharePoint Online "Site Sharing"功能简介
    前言最近,发现一个可以让SharePointOnline站点更安全的设置,也就是站点分享设置,可以设置那些人可以分享站点。正文1.在网站设置里,点击站点权限,如下图:2.点击"Changehowmemberscanshare",可以设置谁能Share这个站点或者站点里的文件夹和文档,如下图:......
  • SharePoint Online "Content Type Gallery" 简介
    前言在使用SharePointOnline的时候,我们经常会使用内容类型,用来确保数据格式在多个列表中保持一致,然而,跨站点的时候,还是依旧容易出现问题,这里我们就需要用到内容类型集了。正文1.既然是可以跨网站使用的内容类型,那么就需要来到管理中心来创建了,首先来到Microsoft3......
  • 3D点云目标检测网络简介
    https://www.cnblogs.com/xiaxuexiaoab/p/17970121前面的文章介绍了点云目标检测的几篇综述文献,这一篇参考第二篇综述介绍一些经典的网络,主要包含其大体内容、贡献点和一些细节,后续还会慢慢补充。===========OneStage============一、VoxelNetPDF:https://arxiv.org/abs/1......
  • Linux系统中一些重要目录的用途简介及各种常用命令
    1.Linux系统中一些重要目录的用途简介Linux文件系统的目录结构设计遵循了文件系统层级标准(FilesystemHierarchyStandard,FHS)。以下是Linux系统中一些重要目录的用途简介:/(根目录):Linux文件系统的起点。所有的文件和目录都在这个目录下开始。/bin:存放基本的用户二进制文件,......
  • 个人简介
    我是xhgua,ZJ高一OIer。#include<bits/stdc++.h>usingi64=longlong;constexprintN=1e5+5,INF=(1<<30);intn,m,k;boolvis[N];intdis1[N],dis2[N];std::vector<std::pair<int,int>>G1[N],G2[N];intmain(){s......