14、构建可演化的软件架构:数据管理与架构原则

构建可演化的软件架构:数据管理与架构原则

1. 数据管理在架构中的挑战与策略

1.1 数据完整性与事件驱动同步

在数据管理中,确保信息删除能传播到可能仍引用该删除实体的其他服务至关重要。事件驱动架构中的一些模式可处理这类后台任务。例如,当用户界面通过交易员 blotter 服务拒绝一笔交易时,它会在持久消息队列上传播一条消息,所有感兴趣的服务都会监听该队列,并根据需要更新或删除更改。不过,数据库中的引用完整性虽然强大,但有时会造成不必要的耦合,需要权衡其利弊。

1.2 数据复制问题

当团队习惯使用单一关系数据库时,往往不会将读写操作分开考虑。但在微服务架构中,必须仔细区分哪些服务可以更新信息,哪些只能读取信息。常见的情况是多个服务需要访问系统的关键部分,如参考数据、审计表、配置信息和客户数据等。一种解决方案是将表共享给所有感兴趣的服务,这种方式虽然方便,但违反了微服务架构避免服务与公共数据库耦合的原则。一旦表结构发生变化,会影响到与之耦合的服务。另一种方法是将每个共享信息建模为一个独立的服务,但这可能会导致服务间通信过多,影响性能。还有一种常见做法是使用进程内缓存进行只读访问,左侧的服务组件“拥有”数据,每个感兴趣的服务在启动时读取并缓存感兴趣的数据,并设置合适的缓存更新频率。若右侧服务需要更新共享值,可通过向拥有该数据的服务发送请求来实现。

1.3 替换触发器和存储过程

数据团队常用的存储过程,虽然在操作数据方面功能强大且性能高,但在现代软件工程实践中存在一些挑战,如难以进行单元测试、重构支持差以及将行为与源代码中的其他行为分离等。向微服务迁移时,由于数据不再集中在单个数据库中,数据团队通常需要重构存储过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值