当前位置:  开发笔记 > 编程语言 > 正文

通信间微服务 - 如何?

如何解决《通信间微服务-如何?》经验,为你挑选了0个好方法。

我正在开展一个个人项目,即将单片Web应用程序转换为微服务(每个服务都有自己的数据库).

此时,整体后端由NodeJS构成,并且能够回复REST请求.当我开始将应用程序拆分为多个服务时,我遇到了下一个问题:如何很好地进行它们之间的通信?

首先,我尝试在下一个示例中使用REST调用:"注册服务"将有趣的东西插入其数据库,然后将用户信息转发(HTTP POST)到"用户服务",以便将其保存到"用户"数据库中.从这个例子我们有2个服务,因此有2个数据库.

我意识到这一刻并不是一个好的选择.因为我的"注册服务"取决于"用户服务".它们是一种耦合,这是微服务概念的反模式(从我读到的).

第二个想法是使用像RabbitMQ这样的消息代理."注册服务"仍然将有趣的东西插入到自己的数据库中,并将用户信息作为数据发布到队列中."用户服务"使用此消息并将数据持久保存到其"用户"数据库中.通过使用这个概念,两种服务都是完全隔离的,可能是一个好主意.

但是,发送给客户端的响应如何(谁向"注册服务"发出请求).根据第一个想法,我们可以发送"200,一切都好!" 或400.这不是问题.根据第二个想法,我们不知道消费者("用户服务")是否持久保存用户数据,那么我需要回复客户端?

我对Web应用程序的商店方面存在同样的问题.客户将他想要购买的产品发布到"订购服务".如果用户有足够的钱,这个需要检查他已经进入"用户服务"的虚拟货币然后将产品细节转发到"交付服务".如何通过完全隔离的服务实现这一目标?

我不想使用客户端的http请求时间在消息代理上进行异步请求/回复.

我希望你们中的一些人能够启发我.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有