在微服务中,一般一个服务承担一种职责。如果各个微服务之间是流水线处理,即一个微服务的 output 是另外一个微服务的 input ,对于一个任务来说,需要依次被这些微服务处理。
应该如何设计比较好?
如果是 RESTful API ,则需要一个中心的类似 dispatcher 一类的微服务,这样问题是一些微服务处理事件比较长,则 HTTP 等待的事件也比较长,容易形成瓶颈。
如果是 EDA(Event Driven Architecture),则每个微服务都使用 message queue 连接,似乎也不太合理,因为任务可以认为是串行的。微服务多,那 queue 的层级也比较多。
或者将这两种方式综合起来?
大家在微服务中有什么 best practice 吗?