关于Felix框架中的服务监听分发存在性能问题。


Felix框架中当注册新的服务时,会遍历触发所有满足条件的服务监听器。

如果系统中存在大量服务监听器时,新服务的注册性能明显下降。

实测数据,当服务监听器数量达到接近4000个时,新注册300个服务,
耗时将近20秒(CPU:i3双核,4G内存)。

----------
如果系统使用Felix,组件框架使用ipojo,可能会产生这样的情况。
ipojo的机制,每声明一个Component/Instance,每增加一个@Require/Bind
(即对其他服务的依赖),都会产生新的服务监听器,从而导致系统内存在
大量的服务监听器。

这些服务监听器的过滤表达式通常稍微复杂,例如:
(&(objectclass=org.apache.felix.ipojo.extender.ExtensionDeclaration)(ipojo.extension.name=component))
这样的形式。每一个新的服务注册或者修改,都会触发所有的监听器过滤表达式
被执行。

查看Felix框架关于服务注册时触发服务事件的代码,大概:
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(
            this, Request.SERVICE_EVENT, listeners, event, oldProps);



 







 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值