微服务数据存储与部署的深度剖析
1. 传统数据库与微服务下的数据存储选择
传统数据库在数据一致性方面存在不足。例如,Oracle和Postgres默认采用读已提交隔离级别,而MySQL默认是可重复读。作为软件架构师,不能仅仅因为习惯就选择传统关系型数据库,因为数据库会自动做出一些决策,而结果可能并非业务所需。
在构建单体应用时,选择单一数据库解决方案是可以接受的,因为这样能降低代码复杂度并提供统一的数据访问层。但微服务架构打破了这种决策限制,它能让数据存储解决方案更好地匹配需求,并且便于后续更改。
关系型数据库鼓励使用规范数据模型,这容易产生技术债务。严格模式定义规范数据模型虽有优点,但缺点往往更明显。很多时候,使用严格模式是出于惯例,而非对业务场景和系统需求的分析。
规范数据模型通过严格模式确保系统各部分对数据实体及其关系有一致理解,便于业务规则的统一应用。然而,模式的更改会影响整个系统,且难以回滚,模式细节还会硬编码到代码库中。项目开始时就需确定模型和模式,后续很难更改实体的初始高层结构。
曾有一个为股票经纪公司构建系统的案例,项目开始时根据给定指标设计了关系型模型,但上线前发现主机数据与模式不匹配,导致数据导入失败。由于临近截止日期,只能将数据强行放入错误命名的列中并添加注释。
为实现快速开发,应采取宽松策略。新代码不应受旧代码约束,微服务架构通过配置解决前后兼容性问题,将基于旧假设的消息导向遗留微服务,新假设的消息导向新微服务,避免产生技术债务。
2. 微服务数据存储的实用决策指南
微服务的主要优势是能实现快速开发且不产生大量技术债务。在这种情况下,数据存储选择更倾向于
超级会员免费看
订阅专栏 解锁全文
1115

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



