高负载下的系统消息处理与设计策略
1. 有界邮箱类型
有界邮箱分为阻塞和非阻塞两种类型,所有邮箱都由队列支持。当邮箱满时,阻塞邮箱会使线程等待,直到有空间可用;而非阻塞邮箱则会丢弃消息。为了避免系统崩溃,我们选择使用非阻塞有界邮箱 NonBlockingBoundedMailbox 。
配置邮箱的步骤如下:
1. 在配置文件中添加邮箱配置:
akka.actor.boundedmailbox{
mailbox-type = "akka.dispatch.NonBlockingBoundedMailbox"
mailbox-capacity = 1000000
}
- 使用该邮箱实例化演员:
ActorRef clusterController = system.actorOf(Props.create(MyActor.class).withMailbox("akka.actor.boundedmailbox"));
system.actorOf(Props[MyActor].withMailbox("akka.actor.boundedmailbox"))
如果系统负载过重,会丢失一些消息,但系统仍能正常运行。对于丢失消息的情况,与下游系统通信的系统应具备超时和
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



