整体到微服务

用户名

我有一个单一的应用程序,我试图将其转换为基于微服务的应用程序。

方法1:

  1. 数据库仍然保持不变,但是将有多个微服务连接到同一数据库

方法2:-

不同的微服务用于不同的模块,每个微服务将具有自己的数据库。但是,每个模块都需要用户数据(表->用户)。

说,我们分为4个模块。管理模块,计费模块,约会模块,库存模块

在这里,对于Ex:-管理模块,约会模块和计费模块需要用户数据。对于约会模块,某些约会查询需要与其他数据库中存在的用户表联接。

如何处理?

詹金特

首先,您应该考虑是否确实需要微服务架构,因为如果微服务非常独立,那么您将仅能从这种架构中受益,我的意思是它们之间的连接很少。

这样说,第一种方法是完全不建议的,因为微服务体系结构的关键是微服务应该完全解耦,并且如果它们共享相同的数据库+模式+表,则其中一个所需的更改将触发对微服务的更改。休息,所以您将拥有一个分布式的整体(这是两个世界中最糟糕的)。

有两种可能的解决方案。其中之一是每当您需要用户信息时都调用用户服务,这很糟糕,因为每当您需要该信息时,您都必须拨打电话,因此您依赖于其他服务,并且等待时间会增加。

另一个解决方案是在需要此信息的其他服务上复制用户表(仅需要的部分),并使用消息异步更新它,例如,使用kafka或其他消息队列,以及用户何时有任何更新用户服务将在表中发布特定主题中的消息,其他服务将被订阅,因此他们可以相应地更新其用户信息。

这里的问题是最终的一致性,我的意思是,其他服务不会立即看到更新。

如您所见,这两个选项都有一些缺点,并且两者都是因为服务之间的通信,所以它们之间的通信越少,对于微服务架构而言就越好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章