OSB 深度使用总结 1 通过Workmanager 进行流量控制 首先我们来看一下流量控制能为系统带来哪些不一样的效果,我们假设有转账交易A和查询交易B,我们希望在遇到ESB 繁忙的时候A 能够得到优先处理,而当系统不繁忙的时候A 和B 都能够尽可能的得到处理
为了能够比较容易的看到效果,我们让 A,B 交易的处理过程完全相同,这样便于看到因为请求数量变化所带来的影响
当没有流量控制时:如果让 A,B 的初始请求数量完全 1:1,可以看到AB 交易的处理能力和响应时间的曲线是基本重叠的,并且随着达到系统处理能力的上限,响应时间会随并发请求数量的增长而增长
如果这个时候增加低优先的B 交易的并发数量,B 的TPS 会上升,高优先的A 会下降,同时响应时间会增长,这并不符合高优先的控制原则
Oracle 在测试中使用的流量控制机制可以达到如下的效果: 如果只有低优先的业务,系统可以使用全部的资源进行处理,当出现高优先的业务时,按照比例让位给高优先业务
如果高低优先的业务同时在ESB 上处理,并且并发数量相同,OSB 可以直接控制高优先的处理多,低优先的处理少
传统厂商的产品中也可以设置处理的优先级,但以消息优先级居多,通过控制消息的处理频率和密度,间接实现对处理资源的使用
Oracle 除了设置消息的优先级之外,更重要的是可以调控不同级别的请求在ESB 上所占用 CPU 的时间开销比例,真正实现了处理资源上的分配和管理
1 流量控制实现机制 LocalProxy调用时会使用前面ProxyService的线程模型继续执行,因此前面ProxyService上的Dispatch Policy 会一直作用到LocalProxy 的处理过程之中
Business Service 会使用新的线程去执行,因此如果在Pipeline 中routing 到了其他的非Loc