侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

微服务的代价非常容易被低估

技术  /  管理员 发布于 2年前   437

在过去的几年里,我曾围绕微服务这个话题采访过数百个人,很多人都自豪地讲述了他们使用微服务架构开发项目的故事。然而,无需太多提问就可以看出他们发射了一枚大火箭,最后却只是干掉了一只老鼠。

微服务很难。每个接触过这类架构的人都有着痛苦的经历。终有一天,你会被复杂性淹没,而且你不得不对架构进行多次重构。我很纳闷,为什么这种架构对开发人员如此有吸引力?然后,我想起十年前自己也被这种框架所吸引。

大多人的共同经历是,他们不得不面对一个遗留下来的单体系统,而且整个代码库都是一团糟。遇到这种情况很令人沮丧。实现需要很长时间,编写测试很乏味甚至几乎不可能,理解代码也很困难,bug 堆积如山,部署也不可靠,每次代码变更都会引发问题。重构遗留代码似乎是不可能的,而且一想到这个问题就会让你觉得头疼,甚至彻夜难眠。

这个时候,微服务就会变得非常具有吸引力。那一刻,小型、可管理、分离的代码库会带给你极大的安全感和解脱感。

但是,使用微服务也是有代价的,而且往往容易被低估。

弊端1:无法正确切分领域

只有当你能够正确切分领域时,使用微服务才有效。然而,领域的划分非常艰难。你需要知道自己构建的是什么,但往往大多数时候我们并不是特别清楚。完全绑定到一个领域,会导致系统的灵活性降低,而这恰恰与你实际的期望背道而驰。

在切分领域时,有可能你还不清楚产品需求。将来难免会出现一个功能,迫使两个服务纠缠在一起,这就导致它们属于同一个领域,却还是分布式的。

弊端2:复杂性

虽然刚开始的时候,微服务的架构看起来非常简单。架构师非常确定这种架构不会被打破,而且对于团队来说,只需要维护一个小型代码库,感觉很舒服。然而到了部署服务时,情况就会发生变化。你需要协调一切。仪表板、监控系统、日志聚合器、部署、CI 作业、警报、文档……而且你引入这些服务只是因为你的架构有这种需求。你需要分布式队列、共享缓存、共享数据库、服务发现、多个负载均衡器、动态路由器、API 网关、中央配置服务器……

于是,代码泥沼变成了基础设施泥沼。优步这样的大公司经历过惨痛的教训后,终于意识到了这一点:

弊端3:过早优化

几十年来,我们将软件分割成了各种服务,只不过我们没有称它们为“微服务”。我们拆分应用程序主要有两个原因。

首先,这种拆分对组织来说有意义。

很明显,我们应该建立两个独立的团队分别负责客户关系管理工具和电子商务平台,尽管这两个平台有时候需要相互交流。这已经是一个面向服务的架构。为了实现销售产品的单一业务目标,我们需要两项服务。只不过我们从未称其为微服务架构。

其次,为了性能。

根据我的经验,受这个原因影响的软件只有1%。如果只有几百个用户,使用垂直扩展就可以了。我们开发的系统有数以万计的并发用户,这些用户与系统进行了大量交互,但我们仍然能够垂直扩展。

我们想要什么?

我们发现了一个问题:遗留系统这个巨大的泥潭。可惜微服务架构并不是解决这个问题的正确方法。你需要的是模块,正确的模块,因为模块使得我们很难越界,而且可以根据需要轻松、独立地部署模块。这个概念本身并不新颖,但很多人往往无法正确实施。

十年前,我想要模块,却采纳了微服务架构,现在是时候结束这种过度设计了。

转:

https://code-held.com/2022/07/28/microservices/

  • 上一条:
    Linux中负载的原理、负载高低和、CPU开销等场景浅析
    下一条:
    本站zongscan祝大家除夕快乐,2023有奔头
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    • 2025-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客