我正在开始一个新项目,我有兴趣将其设计为微服务。我试图绕过它:
假设我有订单服务和产品服务。现在我想制作一个报告服务,它为我提供包含某个产品类别的产品的所有订单。
由于订单不了解产品,这意味着我需要获取所有订单,循环它们并获取每个订单的产品,然后返回那些匹配的产品。
这个假设是正确的还是使用微服务有更有效的方法吗?
答案 0 :(得分:7)
在微服务架构中,程序是提取应用程序的用例和服务边界。在上面的问题中,至少有两个服务边界,一个用于交易,另一个用于报告。
当您有两个不同的服务边界时,典型的方法是在它们之间复制一些数据元素,例如。无论何时进行销售,数据都应发送给报告和交易服务。将数据广播到不同边界的一种可能方法是使用消息队列。复制数据使它们能够独立发展和运行,并且自给自足,这是微服务的目标之一。
虽然是个人建议,但在进入微服务路线之前,您可能希望从一块巨石开始。微服务通常操作更重;在初始申请阶段很难推断其优势。在开发单片应用程序之后,它往往会更好地工作,因为更容易看到什么不起作用以及可以通过类似微服务的系统改进什么。