微服务设计与事务处理全解析
1. 技术能力的运用
在微服务架构中,技术能力的合理运用至关重要。技术能力可用于支持和简化其他微服务,限制业务能力的规模和复杂性。以下几种情况适合对技术能力进行分区:
- 若将某能力包含在面向业务的服务中会使该服务变得过于复杂,增加未来替换的难度。
- 多个服务都需要某一技术能力,例如发送电子邮件通知。
- 技术能力独立于业务能力变化,如复杂的第三方集成。
将这些能力封装在单独的服务中,能够捕捉易变区域,即可能独立变化的区域,从而最大程度地提高服务的可重用性。
然而,在某些场景下,对技术能力进行分区并不明智。例如,在经典的SOA中,系统常被水平分解,认为将数据存储与业务功能分离可最大程度地提高可重用性。但这种做法带来了高昂的代价,导致不同可部署单元之间紧密耦合,新功能的实现需要跨多个应用同时进行更改,容易出错且部署困难,形成分布式单体应用。
2. 应对微服务边界的模糊性
微服务的范围界定既是一门科学,也是一门艺术。在软件设计中,面对模糊性时找到最佳解决方案是一项重要任务。这主要源于两方面的原因:
- 对问题领域的理解可能不完整或不正确,理解业务问题的需求是一个复杂、耗时且迭代的过程。
- 需要预测服务在未来的使用方式,而不仅仅关注当前需求,但短期功能需求与长期服务可扩展性之间往往存在矛盾。
次优的服务分区会增加开发的摩擦和重构的成本。为应对这种模糊性,可以采取以下策略:
- 从粗粒度服务开始 :当对服务边界不确定时,构建较大的服务可能是更好的选择。如果服务构建得太小,可能会导致不同服务之间紧密
超级会员免费看
订阅专栏 解锁全文

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



