从单体应用到微服务架构:转型与实践
在将单体应用向微服务架构转型的过程中,涉及诸多关键步骤和技术要点。以下将详细介绍相关内容。
1. 数据库拆分与主数据处理
在完成某些步骤后,代码已准备好将 ORDER 和 PRODUCT 拆分为独立的服务,每个服务拥有自己的数据库。同时,我们可以把单个数据库拆分成多个小数据库,实现每个服务对应一个数据库。
主数据(也称为静态数据)的处理方式有两种选择:
- 使用配置文件或代码枚举 :若主数据长期不变且记录数量较少,可采用此方式。不过,一旦主数据发生变化,需要有人手动更新配置文件。而且,由于系统其他部分依赖该模块,若此模块出现问题,可能会对其他部分产生负面影响。
- 将主数据封装在单独的服务中 :通过服务提供主数据,服务能立即感知数据变化并理解如何消费。请求该服务的过程与读取配置文件类似,虽可能稍慢,但只需按需进行。此外,还能支持不同的主数据集,方便维护每年不同的产品集。
2. 事务处理
随着外键的移除和数据库的拆分,我们需要设计自己的数据完整性处理机制。在处理事务时,要考虑并非所有服务都能在各自的数据存储范围内成功完成事务。
例如,用户订购特定产品时,订单接受时库存充足,但记录订单时,产品服务可能因某些原因无法记录。可能是库存不足,也可能是系统内部通信故障。此时有两种处理方式:
- 重试 :稍后重试未完成的事务部分。这要求我们对整个事务进行编排,跟踪跨服务的单个事务。对于长时间运行的操作,此方法可能有效;但对于非长时间运行的操作,重试可能导
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



