我有多个
akka-http
服务器实例作为同一 jvm 进程的一部分在不同端口上运行。服务器实例有不同的性能要求,需要进行不同的配置。
是否可以在每个实例的基础上配置它们。
我在官方文档或其他任何地方都找不到任何内容。
https://doc.akka.io/docs/akka-http/current/configuration.html
因为 Akka HTTP 是作为 Akka 扩展实现的(即每个
ActorSystem
最多一个),并且较低级别的配置(调度程序等)是每个 HttpExt
,这是在 JVM 进程中拥有多个 HTTP 服务器的唯一方法将有多个 ActorSystem
。
多个
ActorSystem
当然是可能的,尽管通常不建议这样做:ActorSystem
是相当重量级的(例如,具有关联的线程池),但如果小心的话,在这种情况下确实可以提供更高级别的隔离为了防止它们竞争:您可能希望在知道另一个系统存在的情况下为“主”ActorSystem
和“性能指标”ActorSystem
配置调度程序(默认值实际上假设每个系统都有一个ActorSystem
) JVM;不这样做会显着增加线程饥饿的可能性)。
请注意,只要“主要”和“性能指标/运行状况检查”路由的处理表现出合理的异步卫生,可能就不需要这样做:共享
HttpExt
(允许多个服务器,尽管有一些低级共享)在这种情况下应该可以正常工作。我怀疑改进异步卫生以允许不同服务器共存将比采用多个 ActorSystem
路线获得更好的回报。