java Akka如何在使用TimerBasedThrottler和RoundRobinRouter时进行缩放
我有一个设计,一个主管演员根据Akka TimerBasedThrottler
类创建一个演员。该参与者动态创建子参与者,以执行对上游系统的web服务请求。这在小范围内运行良好,但是随着请求数量开始增加,我的Actor邮箱开始增长,响应时间也开始缩短
我需要的是能够创建一个RoundRobinRouter
,它将负载平衡请求发送到多个主管实例。但是我需要TimerBasedThrottler
是一个单独的实例,由RoundRobinRouter
创建的每个参与者实例共享
有人能帮助我如何使用RoundRobinRouter
创建新的supervisor-Actor实例,并传入TimerBasedThrottler
的单个实例吗
# 1 楼答案
你的描述似乎自相矛盾:限制将限制可以处理的请求数量,而在前面添加路由器也不会有帮助,因为限制将强加给整个参与者组
当您的系统有这样的容量限制时,内置流量控制是至关重要的:您的主管必须监控未完成请求的数量,并对其进行限制,以使响应时间低于所需的限制。如果收到更多请求,你只能拒绝它们(即立即发回否定回复)
# 2 楼答案