规则引擎(Rule Engine)
规则引擎解耦了业务规则和系统代码
Execution Model
顺序模式(sort model)
如上图,规则的顺序模式(sort model)
规则优先级高越高的越先执行,规则优先级低的越后执行。这也是 drools 支持的模式。此模式的缺点很明显:随着规则链越来越长,执行规则返回的速度也越来越慢。
并发执行模式(Concurrent Model)
在此执行模式下,多个规则执行时,不考虑规则之间的优先级,规则与规则之间并发执行。规则执行的返回的速度等于所有规则中的执行时间最长的那个规则的速度(逆木桶原理)。执行性能优异,但无法满足规则优先级。
混合执行模式(mix model)
规则引擎选择一个优先级最高规则的最先执行,剩下的规则并发执行。规则执行返回耗时= 最高优先级的那个规则执行时间 + 并发执行中执行时间最长的那个规则耗时;此模式兼顾优先级和性能,适合于有豁免规则(或前置规则)的场景。
逆混合模式(inverse mix model)
优先级最高的 n-1 个规则并发执行,执行完毕之后,再执行剩下的一个优先级最低的规则。这种模式适用于有很多前导判断规则的场景。其特性与混合模式类似,兼顾性能和优先级。
桶模式
名字源于《算法导论》中的桶排序。规则引擎基于规则优先级进行分桶,优先级相同的规则置于同一个桶中,桶内的规则并发执行,桶间的规则基于规则优先级顺序执行。
Example
- Drools
- gopher-lua
- gengine
Reference
- https://tech.meituan.com/2017/06/09/maze-framework.html
- https://tech.meituan.com/2018/04/19/hb-rt-operation.html
- https://tech.meituan.com/2020/05/14/meituan-security-zeus.html
- https://github.com/bilibili/gengine
- https://xie.infoq.cn/article/40bfff1fbca1867991a1453ac
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper