据我了解,Esper是使用查询构建的,以区分相关内容与传入事件之间的关系。
我正在考虑使用Esper,但是我不确定它是否非常适合我的情况。
我的情况:
我需要跟踪大量客户的一些信息。
我每秒将收到大量事件,并且每个事件都需要确定特定客户的进度。
范例一:
假设我卖火柴,因此我卖得很快。
因此,我一直都有很多交易,并且我想跟踪每个客户购买的匹配项数。
当客户购买了10支火柴时,我希望他得到一个免费的火柴盒。
因此,对于这个简单的例子,我经常说,不要使用Esper。
但是随着这种情况的发展,问题可能出在,客户应该为购买的第10场比赛获得一个免费的盒子,然后每获得第3场比赛,他就将获得2场比赛,以获得一等奖。
买了50根火柴后,他会得到一个XL尺寸的火柴盒,里面装满了火柴。
依此类推,多个规则相互叠加。
我对Esper将如何解决它的猜测:
因此,我认为应该在Esper中完成此操作的方式是在运行时为每个客户创建一个查询。但是,由于我有2000000个客户,因此我售出的每场比赛的查询量都将迅速增加。 (也许我误解了Esper的工作原理?)
现在我只被问题困扰...
查询的增加会使Esper的性能降低多少?
是否可以使Esper在客户级别进行计算而无需创建客户特定的查询?
我也听说Esper有时缺乏线程和稳定性,有人对此有任何疑问吗?
总体而言,我对Esper真的很陌生,可能根本不是我想要的东西。或者,也许我只是误解了Esper的用法。 :)
感谢您的阅读!
最佳答案
我是Esper的团队负责人。 Esper团队很想听听稳定性或线程问题或问题。在许多主要公司中,我们都有大量运行Esper / EsperHA的生产应用程序,而没有出现问题。我们一直渴望进一步改进产品。
性能降低多少取决于查询和配置的类型以及线程和CPU /内存等。是的,可以针对每个客户运行计算,例如group-by和其他构造。
关于java - Esper基于客户的查询非常适合多个客户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13877913/