【问题标题】:Microservice development with or without Akka.NET有或没有 Akka.NET 的微服务开发
【发布时间】:2019-02-22 04:03:53
【问题描述】:

我们正在尝试使用 Asp.NET Core 在当前环境中创建新应用程序来实现微服务架构。我们的第一代微服务将使用请求/回复通信模式,不需要任何消息代理。但是,我们将在 2 年后拥有一个 Message Broker。

两年后是否需要在开发方面付出很多努力才能使我们的微服务使用 Message Broker 并采用发布/订阅通信模式?

什么是好的方法?我们现在应该在没有 Message Broker 的情况下使用 Akka.NET 之类的东西吗?我们应该稍后实现 Akka.net 以使微服务使用 pub/sub 通信模式吗?

感谢并感谢各种建议。

【问题讨论】:

  • 不相关但是.. 你怎么知道你将在 2 年内拥有消息代理?只是好奇。
  • 你的团队有多大?
  • jpgrassi,因为我们知道微服务的数量会增加,我们需要一个使用 pub/sub 通信模式的松散耦合架构。

标签: asp.net-core microservices akka.net messagebroker event-based-programming


【解决方案1】:

从头开始。微服务的主要目的是松散耦合的服务。您最初可能没有意识到,但在某些时候您可能需要它。从技术上讲,req/resp 是重构的整体。使用带有消息代理的事件驱动架构稍微复杂一些,但好处是深远的。想象一下,您有越来越多的微服务加入俱乐部,使用 pub sub 非常容易。

回到您的第二点,稍后重构和包含消息代理可能需要付出很大的努力。例如您决定使用 CQRS 和事件溯源,这是分布式应用程序非常常见的模式。您将需要系统的主要重新架构师。但是对于简单的应用程序,这些模式可能不是必需的,并且根据您的业务需求,您必须决定您的服务应该具有多大的弹性、可用性和解耦性,并且在可以简单地满足要求时是否值得付出努力。

如果您想采用真正的微服务架构,那么首先要使用消息代理可以进行的异步通信。

希望对您有所帮助。

【讨论】:

  • 感谢 Imran,感谢您提供有用的建议。一个问题。我们是否需要 Akka 能够进行基于消息的通信(发布/订阅),或者我们可以使用纯 .NET Core 来实现它?
  • 对于 pub sub,只要您使用任何类型的消息服务总线,您就可以使用 .Net 核心来实现它。可以是 rabbitMQ 或者 azure service bus 等。
  • 那么一般来说为什么我们需要 Akka(Actor Model)?如果我理解您的回答和您的评论,我的解释是您可以使用演员模型编程范式或使用消息代理(无需任何演员模型)来实现发布/订阅通信。对吗?
  • 没错。实际上,Akka 并不是错误的答案,这一切都取决于。我在这里找到了很好的解释softwareengineering.stackexchange.com/questions/290709/…
  • 当我的演员通过 udp/自定义协议向机器发送字节数据时,是否可以使用 akka .net。我只是想知道使用 akka.net 我是否也必须在接收端有演员?
猜你喜欢
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 2022-01-16
  • 2018-01-19
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多