【发布时间】:2013-12-14 01:26:56
【问题描述】:
我的 Java 服务器具有一个通用操作,可在内部满足多种功能。
服务器调用期间一个或多个函数的执行取决于调用的是哪个客户端以及客户端传递的参数。
服务器根据客户端参数在内部执行功能编排(通常参数是客户类型、国家/地区、产品类型等)
作为服务器的一部分,我们目前已经设置了 if/else 块来确定这一点,但对此进行任何更改都需要更改代码并发布。
我计划改变这一点并使用非常轻量级的规则引擎,我可以在其中传递一组参数并通过规则(或从那里淘汰)编排功能。
最重要的要求是,此规则引擎可以动态配置(通过一些 UI),无需任何代码发布(如存储在缓存中的规则)。
另外,我的服务器每天要处理千万个请求,而且它的响应速度必须非常快,而且我无法承受每个 HIT 上的 DB 命中或繁重的规则引擎。
我的一个想法是引入特征矩阵(使用一些数据结构)并将其发布到缓存,每个服务器 HIT 都会首先检查这个矩阵并确定这个请求需要做什么,我可以改变特征矩阵通过一些 UI 进行配置,新配置将尽快发布以缓存,下一个服务器请求将使用新配置。
对实施有什么想法或建议吗?
【问题讨论】:
标签: java soa rule-engine