在这里,我目前对这个问题的研究结果是正确的,还是缺少一个方面?
微服务有两个主要原则:
使用共享数据库(如未解耦)架构,这两个原则都没有涵盖。这是由于以下事实:
为避免上述问题:分离的数据库可以与微服务一起使用,而不是与共享数据库一起使用。所以每个微服务都应该有自己的数据库。这也将简化系统的扩展,提供更多的系统可用性,因为“只”一个真正受影响的服务将失败。
更新: 微服务的另一个好处是它可以提高开发的灵活性和速度。由于正确分解的微服务,可以独立开发和部署,并与其他服务并行。
答案 0 :(得分:1)
值得一提的是,微服务不必共享相同的模式,通常称为Integration Database antipattern。但是,只要每个微服务使用自己的模式,您实际上可以在同一个关系数据库中拥有不同的模式。这里重要的是可以随时轻松地将一些微服务数据移动到不同的物理服务器。部署和备份1个数据库比使用7个左右更简单,这意味着如果您只是在项目的最初阶段并且不想花太多钱,这个选项是一个不错的选择管理大量数据库的时间。但是您和您的团队必须非常自律,以确保微服务仅与他们自己的模式中的数据进行通信。
另一件事是耦合。您无法使微服务完全隔离,这意味着它们仍然会在一定程度上相互依赖。只需举一个简单的产品,订单,发货服务示例。这些服务必须彼此了解,无法使它们完全分开。但是你可以使用certain design strategies使它们暂时解耦。当服务以这种方式解耦时,它们中的每一个都可能在一段时间内不可用(例如重新部署)而对其他服务没有影响。
由于共享数据库的整体架构越多,故障就会影响许多服务器,因为它们都捆绑在一起,即使由于耦合也可能发生完整的系统故障。
即使您的微服务不共享同一个数据库,时间耦合也会产生相同的效果。要遵循的简单规则:不要同步调用另一个微服务,而是使用异步事件和命令。