13.微服务的独立数据存储每个微服务都需要有一个数据存储库,这在某种程度上给分离数据的管理增加了难度 。由于单个存储系统很容易因为失去同步,而出现不一致性,因此您需要使用能够执行主数据管理(master data management,MDM)的工具 。例如,它可以通过检查每个订阅者ID的数据库,及时发现其中是否存在相同的ID 。据此,就算某个服务停止了工作,它也能够确保用户数据的安全性 。当然,最理想的状况是将数据同时存储在微服务和单体表中 。
14.保留微服务的代码通常,我们与其在性能良好的微服务中添加、重写一段代码,不如为新的或更改后的代码创建或部署一个新的微服务 。据此,我们不但可以简化新代码的测试,而且能够减少现有服务在微服务中出错的可能性 。
15.微服务的单独构建通过对每个微服务采取单独的构建,我们可以在存储库中,以适当的修订级别获取组件文件 。
16.在容器中部署微服务为了尽量简化,我们最好使用同一种工具,在容器中部署微服务 。例如,Docker便是被广为推荐的一种容器标准 。
17.典型的成功迁移案例为了能够全天候地运营,Netflix需要一种架构来优化交付速度,并扩展到下一个数据量级 。因此,Netflix决定摆脱数据中心里由关系型数据库所带来的,在垂直向扩展时的单点故障,使用NoSQL数据库对数据模型进行非规范化处理 。同时,该公司采用了由云服务提供的高度可靠的、可横向扩展的分布式系统,并通过选择AWS作为云服务提供商,获得了大规模且广泛的服务和功能 。此外,微服务架构也方便Netflix将系统分成独立的服务,其中包括:存储所有观看节目的服务,负责每月信用卡支付的服务,以及分析观看历史以提供类似电影节目的服务 。该公司的全部迁移过程耗时整整七年 。

文章插图
Netflix微服务基础设施的逻辑图
Wix.com
由于Wix.com的应用程序是彼此连接的,因此系统一旦在某个部分出现问题,都会导致整个系统的崩溃 。对此,Wix.com开创了新的集成和端到端测试模式,运用JSON/RPC协议,在SpringMVC的基础上,构建了一套微服务框架 。通过迁移,它们解决了处理微服务之间的通信、故障与调试等的技术债 。
Cloud Elements
Cloud Elements使用诸如Minikube和Docker之类的工具,管理本地和远程运行的服务 。由于所有的微服务都在Node.js中,因此他们使用诸如Ava等基于npm的单元测试包,实现了代码测试的全覆盖,以应对业务的指数增长,并根据新增的需求不断迭代其微服务 。
Best Buy(百思买)
过去,相互依赖的架构造成了Best Buy在业务部署上的难题 。长时间的宕机给其在线业务的维持带来了不小的挑战 。开发团队往往需要把新的功能逐个打包,再累计发布 。如今,他们通过诸如:Chef和Jenkins等工具,实现了持续集成与部署,并且将数据库迁移到了Riak(一个分布式NoSQL键值数据存储)上 。
18.小结综上所述,我们是否应该跟上软件架构的趋势,放弃单体架构,投入微服务的怀抱,目前尚无绝对的定论 。我的观点是:如果目标项目既没有高负载,又无频繁地与外部服务交互的需求,那么我们便可以选择或维持单体架构;而如果系统必须在大量的负载和服务请求下工作,那么微服务架构会是更好的选择 。
我们再来看企业的组织结构层面 。如果贵公司只有一个开发团队,那么建议您集中精力构建和维护单体架构;但是如果您有几个IT团队,可以同时开发同一个产品的话,微服务会比较合适一些 。
客观而言,微服务架构有利有弊,它只是构建软件的另一种方式 。是否应该选择完全取决于应用程序的业务需求 。当然,您也可以从一个简单的单体架构开始,随着服务需求的增长,慢慢将应用组件独立出来,并迁移到微服务中 。这可能是更为稳妥的应用实践 。
原文链接:https://dzone.com/articles/Monolith-vs-microservices-architecture-split-or-no
译者介绍
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课 。
【该不该将单体架构迁移到微服务?】
推荐阅读
- 星座男|研究生不只考试难,宿舍都要“抢”?专科、本科毕业该不该考研?
- |老板和副总说有机会让我进下一级的领导那里,该不该答应
- excel|新手会计在小公司工作,没人带全靠自己摸索,经验积累慢该不该辞
- 单体建筑(成都拥有世界最大单体建筑)
- 饭局告密者该不该被鼓励?
- 买房该不该提前还款 提前还贷划算吗
- 体检前该不该喝水? 体检前可以喝水吗
- 大学|考上大专会计专业,但是家里不支持,该不该去?不能放弃读书!
- 特斯拉|单体能量暴增5倍!特斯拉柏林工厂已生产首辆4680电池Model Y
- 中华田园犬到底该不该禁养 中华田园犬为什么禁养
