微服务之间的通信管道

本文关键字:通信 管道 之间 服务 | 更新日期: 2023-09-27 18:17:54

我想在我的下一个基于ASP的项目中使用微服务架构。净的核心。

我可以通过REST在服务之间交换,但是维护起来真的很繁重。

微服务之间是否有其他通信方式,例如通过像vertx这样的事件总线。

我可以使用rabbitmq,但不知道,如果它是一个好的选择

微服务之间的通信管道

我认为Rabbit MQ会工作得很好,特别是如果你有很多消费者,例如需要负载平衡,和/或如果你需要消息是持久的,而且从概念上讲,你的微服务可以处理消息。

否则,既然您正在考虑REST,我建议您改用WCF。

忽略微软的例子,那些太复杂了。您需要创建一个程序集,其中包含协议(在WCF术语中称为服务契约)+它们发送/接收的消息(在WCF术语中称为数据契约),这些消息将在您的服务之间共享。共享程序集将使您摆脱企业风格的XML配置废话。这也将使维护比REST更简单,因为编译器将验证您的网络调用的正确性:您在更改协议后忘记更新一个服务,服务将停止编译。

下面是我的演示,它使用WCF在c#中实现零配置客户机-服务器通信。它目前设置为使用命名管道绑定,即只在本地工作。但是很容易从NetNamedPipeBinding切换到NetTcpBinding,这样就可以很好地进行网络连接。

注:如果您选择WCF,请不要忘记抽象可能而且将会泄漏。任何网络调用都可能因网络相关异常而失败。此外,你有时需要重新连接(如果你不想,你没有太多的消息每秒,你可以使用一个无连接的协议,如NetHttpBinding,但那些是低得多的性能)。