我想知道我的两种方法中哪一种更合适,还是有另一种方法?
UI
向HTTP
发送GATEWAY
请求GATEWAY
向HTTP
发送μSERVICE A
请求μSERVICE A
返回SUCCESS
或ERROR
EVENT STORE
中并发布到QUEUE
PROJECTION DATABASE
已更新μSERVICES
可能会消费事件UI
向HTTP
发送GATEWAY
请求GATEWAY
已向QUEUE
μSERVICE A
使用事件EVENT STORE
中并发布到QUEUE
PROJECTION DATABASE
已更新μSERVICES
可能会消费事件GATEWAY
使用事件并将响应(SUCCESS
或ERROR
)发送到UI
如果我误解了一些概念,我真的很抱歉,我对这种建筑风格还比较陌生。
在此先感谢您的帮助! :)
答案 0 :(得分:2)
第二种方法是首选方法,并且是异步方法。
直接
第一种方法是您的microsvc B和C等待事件被发布。该系统的可伸缩性直接取决于microsvcA。如果microsvc A出现故障或落后于将事件写入队列怎么办?就像单点故障和瓶颈一样。您无法轻松扩展系统。
事件
在微服务中,我们保持系统异步,以便它们可以扩展。 网关应该使用pub / sub将其写入队列,并且所有这些微服务都可以同时使用事件。整个系统更加健壮并且可以扩展。