我们有一个Azure服务结构微服务,可以收听多个azure服务总线主题(主题A,主题B)。
主题A的消息流量超过主题B的10倍。为了处理服务的扩展能力,我们将创建多个服务实例。
2为Topic A和Topic B监听器创建不同的微服务是否更好,并创建10x微服务实例来监听主题B和主题B监听器服务的x实例?
感谢大家的支持。
答案 0 :(得分:0)
答案 1 :(得分:0)
微服务提倡松散耦合的服务,每个微服务都将处理自己的域名。
遵循微服务方法,如果您了解必须创建两个不同的主题来发布消息,可能是因为它们具有不同的范围\域,需要自己的微服务。
在您的描述中,很难确定TopicA和TopicB的域名是否相关,因此我们无法提供好的建议。
在任何情况下,如果一个服务监听这两个主题,我们假设TopicA处理1000条消息,而TopicB每秒处理100条消息。 如果您必须发布应用程序的新版本以处理TopicB消息的更改,则必须停止处理TopicA,这是不必要的。所以你要耦合服务,首先应该是两个独立的服务,或者两个主题应该作为一个单独处理。
关于你的问题:
1我的第一个问题是,在大多数服务实例中都不会得到 主题B中的消息,因为主题B的流量较少,所以它会是 浪费资源?
浪费资源与设计应用程序的方式相关,可能是您的服务侦听queue \ topic并同时处理它,并使用太多内存来保持一直运行。在这种情况下,将分割它们并创建一个队列\主题监听器和其他消息处理程序来接收要处理的消息,如果它保持太久没有处理你关闭它的消息,只留下监听器。您也可以使用演员而不是服务。
2为主题A和主题创建不同的微服务是否更好? 主题B听众,并创建10倍微服务实例 听主题B侦听器服务的主题A和x实例?
对于服务是的,关于实例的数量,它应该由队列的大小驱动,否则你会有太多的听众而且浪费资源,如果你按照分割服务的方法,你会需要一个侦听器接收来自queue \ topic的消息,它会将消息传递给多个消息处理程序(服务实例\ actors),而queue \ topic侦听器同时控制正在运行的实例的数量。
3在天蓝色服务总线中创建一个消息监听器,继续拉动 每次都有消息?意味着不断查看/检查消息, 消息是否存在。
不是唯一的方法,但它是正确的。