该不该将单体架构迁移到微服务?
微服务架构是将应用程序表示为微小的、松散耦合的服务集合。由于整体的复杂性被转移到了服务的协调级别上,因此每个服务都代表了一种业务功能,可以更加容易地去定位相关代码。 而单体架构是将几个离散的功能组成一个单元,作为一个整体进行测试、部署和扩展。由于所有组件都是相互依赖的,因此通常不能够单独运行。这就意味着某个模块中的错误,可能会减慢、甚至破坏整个应用程序。
微服务架构的优点
易于扩展 应用组件相互独立 有清晰的边界,并能通过HTTP实现通信 可以使用不同的编程语言和数据存储 开发过程可被分到多个团队 可被独立部署 易于更新和维护 使用较小的代码库
微服务架构的缺点
难以监控 具有更为复杂的服务部署 服务之间的通信需要额外安全加固 性能会有所降低 鉴于分布式系统的远程调用较慢,因此经常存在着编程难度大和失败的风险 增加了运营的复杂性
何时选择微服务
繁重的系统负载,需要与不同的支付系统进行交互。 用户需求不断增长和规模持续扩大,现有应用系统常出现中断。 单体应用变得不够灵活且无法升级。 为了在竞争激烈的业务环境中取得成功,需要加快应用的开发和发布时间,并可在后续着手进行功能的更新与升级。 需要实施人工智能之类高级的商业智能方案,以获得更深入、更具竞争力的业务数据、报告和分析。 目前的基础设施无法提供所需的横向可扩展性,无法处理大数据的处理负载。
上图是Amazon在2008年完成的被称为“死亡之星”的微服务基础设施
迁移至微服务所面临的挑战
麻烦且耗时。由于从单体应用整体迁移到微服务是非常耗费时间和精力的,因此企业往往选择以“小步快跑”的方式进行分步迁移。如果需要在迁移的过程中引入新的服务特性,那么开发团队还要投入更多的精力。 成本较高。无论是从开发与编写代码的角度,还是从支持、运维、以及更改的角度,迁移到微服务的成本都比较高。企业需要在构建基础设施、开发文档、以及重构应用等方面进行大量的投资。 由于微服务是一个分布式系统,因此开发团队需要选择,并实现基于消息传递或RPC的进程间通信机制。 移动代码库。为了顺利地将数据从现有的单体架构提取至配合微服务的数据库和代码库,我们有可能需要重构其实现的过程,并通过完备的测试覆盖率,以避免引入新的bug。 组织的转变。为了实现迁移,企业需要将现有的大型项目团队,拆分成能够自主开展工作的小型团队。同时,企业仍需要保持组织架构的一致型。 团队应对其服务负责。在完成迁移后,各个团队将拥有自己的代码库,一旦出现服务交付的失败,他们将不再可以归咎他人,而需要从自身找原因,动手解决,负责到底。 此外,在系统不宕机的情况下进行迁移,并保证用户持续有权访问应用程序。这本身就有一定的风险。
从审查和分析开始迁移
您希望达到什么目的? 您考虑过使用微服务的折中方案吗? 您怎么判断迁移的有效性?
设定目标
定义迁移对于业务和最终用户的好处,明确企业想通过微服务获得什么。例如:是为了快速开发的整体进程,还是需要减少服务的相互依赖、亦或增加正常运行时间、以及增强可扩展性。 同时,我们需要事先预测系统在完成迁移后的负载和用户数。
盘点业务与功能现状
在现有的单体架构中,可能许多函数由于在其使用域中尚未被明确地定义,或者是业务流程的逻辑较为混乱,因此往往无法被直接迁移或替换。例如:某个组件持续与其他多个组件相关联,那么就很难被拆分为多个普通的微服务。 分析当前的功能,并考虑对其进行优化。例如,通过剔除大量不必要的信息,来优化数据库的查询,或者可以直接更换新的硬件,以及通过开发新的功能,来引入微服务。
团队的能力和折中方案
评估团队的DevOps成熟度水平,包括:是否了解DevOps的核心实践,是否具备基本的自动化文化?运营团队是否支持脚本式部署?是否拥有代码即基础设施?是否已有代码评审的标准?团队只有具备了这些成熟的开发和运维实践能力,才能发挥微服务架构的优势。 由于依赖性在服务之间创建了连接,模糊了组件的边界,并导致它们必须组合成单个的模块功能,因此团队只能尝试着从应用的垂直或水平方向进行扩展。 根据项目的特点,仅分离并迁移诸如:电子邮件的发送、通知的推送或电话的呼叫等部分受限的功能。当然,如果您只想从仪表盘系统内剥离出来,从已连接的数据库中收集与分析数据,进而单独形成微服务的话,那么应全面考虑相互之间的关联性。
选择可扩展平台
考虑创建跨职能团队
定义边界
选择单体架构中可以被迁移的功能
微服务的独立数据存储
保留微服务的代码
微服务的单独构建
在容器中部署微服务
典型的成功迁移案例
小结
直播预告
直播主题:智能计算与深度学习在信号处理中的应用探索
点击视频号卡片,立即预约直播
●B站回应“核心用户都是Loser”、微博崩了、Meta 因过度收集用户数据被起诉 | T资讯
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 和人民在一起 7943844
- 2 柯洁被判负 7945069
- 3 警惕!今年第一场大寒潮或波及全国 7850641
- 4 今天明天 都是小年 7718301
- 5 王菲时隔7年再上春晚 将唱这首歌 7687534
- 6 女子称因未婚生育被取消村集体分红 7530892
- 7 公务员省考:学历要求越来越高 7453990
- 8 59岁陈慧娴演唱会上出意外 7331582
- 9 尹锡悦穿10号囚服 狱警叫他10号 7244992
- 10 造谣“董明珠停职” 5人被行政处罚 7121394