对微服务非常陌生…
如果我有一个为客户和订单处理crud的api,这是否可以转换为两个微服务一个为客户,一个为订单?
客户API
CreateCustomer
ReadCustomer
UpdateCustomer
DeleteCustomer
订单API
CreateOrder
ReadOrder
UpdateOrder
DeleteOrder
最佳答案
我们通常在总边界上削减服务。域驱动的设计非常适合微服务,因为它有助于用松耦合设计聚合。我建议你先这么做,不要在客户中提及订单,反之亦然。仅通过域事件进行通信。这样,在另一个进程或服务器上运行一个聚合的决定只是一个实现细节,可以稍后完成。
如果将它们分成两个服务,则必须实现某种形式的通信。这通常比在同一个进程上实现并运行它们更为昂贵,但是在扩展方面您获得了更大的灵活性。如果你只有两个聚合,我会让它们保持一个服务。microservices的一大优点是它们太小了,您可以删除、重写和替换它。我认为有了两个集合,这仍然是可能的,因此不值得争论。
但是,做一个mircorservice架构应该是一个实现细节。您的域必须首先设计好,否则将aggergate切割成服务将是一场噩梦。
预先创建微服务的唯一好处是,您已经开始设计时考虑到了一个事实,即您不能仅仅引用另一个聚合并阅读一些属性来决定某个东西。如果您的团队不习惯DDD或松耦合,WICH可能很有价值。