服务器端的轻量级规则引擎,用于服务器功能编排

时间:2013-12-14 01:26:57

标签: java soa rule-engine

我的Java服务器有一个通用操作,可以在内部提供多种功能。

在服务器调用期间执行一个或多个函数取决于调用哪个客户端以及客户端传递的参数。

服务器根据客户端参数在内部执行功能编排(通常参数是客户类型,国家/地区,产品类型等)

作为服务器的一部分,我们现在设置了if / else块来确定这一点,但是这需要对代码进行更改和释放。

我打算改变它并使用非常轻量级的规则引擎,我可以通过规则传递一组参数和编排功能(或从那里敲出)。

最重要的要求是,可以动态配置此规则引擎(通过某些UI),而无需释放任何代码(如缓存中存储的规则)。

此外,我的服务器每天需要10万个请求,并且在响应方面必须超快,我无法承受每个HIT上的数据库命中或重型规则引擎。

我的想法之一是引入特征矩阵(使用一些数据结构)并将其发布到缓存,每个服务器HIT将首先检查此矩阵并确定需要为此请求做什么,我可以更改特征矩阵配置通过一些UI和新配置将发布到缓存ASAP,下一个服务器请求将使用新配置。

有关实施的任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Prolog作为规则引擎:存在许多轻量级实现。

当然,这些并不总是闪电般快,但可能对你来说足够快,特别是如果规则是谨慎编写的。

然后您可以缓存结果。

如果你有一堆通常的参数,那就把那一组作为一个对象,根据参数的内容提供一个哈希函数,并用作一个哈希映射的键。要保持缓存的大小合理,请为密钥实现LRU列表。