apache.camel
希望一切都很好,您可以安全进入2020年。
Camel团队已经在忙于开发下一个Camel 3.1版本。 目标之一是继续优化骆驼核心,这一次我们花了一些时间来寻找路由引擎中的一些热点。
我们所研究的方面之一也是在Camel路由的每个消息中发生的对象分配。 JVM本身擅长分配对象,并在不再使用对象时对其进行垃圾回收。 但是,如果您可以识别路由中每个EIP不必要的对象,则还有改进的余地。
因此,今天我通过运行一条基本的骆驼路线找到了其中几个
来自(timer:foo?period = 1“)
.to(“ log:foo”);
基本上每秒路由1000条消息。 并将每个消息打印到日志中。
对象分配中最大的罪魁祸首之一是React式执行器的人为记录,该执行器以TRACE级别记录。 因此,通过避免这种情况,我们可以减少大量分配,并减少用于记录消息的字符串构建。
我们优化的其他方面是EIP(最常用的EIP),它现在在启动时更加智能,可以避免创建不必要的缓存。 这与我们现在懒惰地在Camel中创建很少使用的某些功能的区域一起使用,否则这些功能也会设置和创建一些缓存。
我们还确定了Camel 3工作的一部分,因此LRUCache并未早于预热,这意味着Camel的启动会比其他方式慢一些。 因此,通过将此预热移至较早的阶段,Camel可以通过在启动时执行并发工作直到LRUCache被预热(其咖啡因缓存需要此操作)来更快地启动。
还对日志组件进行了优化,以减少其构建日志消息的对象分配。
因此,总的来说,这是美好的一天,如果我们将Camel 3.0.0与3.1.0-SNAPSHOT的启动与上述Camel路线进行比较,那么每秒的对象分配将大大减少(这要归功于Profiler的YourKit)。
该配置文件指出,在Camel 3.0.0中,Camel每秒大约可大致生成22.000个对象(路由1000条消息)。 在Camel 3.1中,每秒的对象减少到了约6.000。 这太棒了,几乎减少了4倍。
翻译自: https://www.javacodegeeks.com/2020/01/apache-camel-3-1-more-camel-core-optimizations-coming.html
apache.camel