极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:08
登录|注册

微服务实践中需要注意什么?

讲述:丁婵大小:7.05M时长:05:08
你好,欢迎收听极客视点。
架构的演进基本上是按照最早的单体服务架构开始,将所有的功能模块打包到一起。再到后来的微服务架构,就是将复杂臃肿的单体应用进行细粒度的服务拆分,每个微服务可以交给小的团队进行开发和维护,拆分出来的服务各自独立打包部署。
对于经历过整个架构演进过程的技术专家们来说,他们在微服务实践中总结了哪些经验?InfoQ 编辑薛梁在此前的一次 ArchSummit 全球架构师峰会上,就上述问题邀请了业界几位技术专家共同探讨。以下是重点内容。

什时候拆?怎么拆?拆多细?

在实际工作中,很多技术人都会产生这样的疑问:什么情况下单体要拆微服务,有没有一步到位的办法,传统的应用到底怎么拆,拆多细,如何去衡量?
对于什么时候应该考虑微服务,同程艺龙交通首席架构师李智慧认为,如果要做一个创业公司,做一个新的应用,建议刚开始的时候就设计微服务架构。因为服务本来就是隔离的,可以强制你去独立思考业务模块,逼迫你每天去思考:服务之间的关系是什么?应用之间如何用服务进行组合?这样的思考有助于架构设计,模块之间的关系会更清晰。
阿里巴巴资深技术专家雷卷认为,如果只是做 ERP、CRM 或者 OA,就是一个单机的应用,部署到客户环境,客户每天的访问量不大,单机又没有成为瓶颈;或者对于小型创业公司,刚开始做第一个应用,那就没必要做微服务。
另外从技术层面上讲,比如用 HBase 在设计的时候,对事务一致性要求极致,若拆成微服务,就会有网络延迟之类的问题。关于部署问题,如果客户还没有做容器化、虚拟化,通常也不建议采用微服务。
如果你确定采用微服务架构,就需要考虑拆分到多小,按什么力度来拆分。有很多方法论值得参考,例如 DDD 方法论,它会告诉你如何识别业务系统,如何拆分微服务,怎样做通讯等等。
对于微服务中的成本问题,例如业务试错成本,Shopee 高级首席工程师冯湧认为,可以先验证一下商业模式,在这种情况下,把一个服务拆的太细并不是明智的选择。
其次是要考虑建设成本。微服务可以理解为一艘航空母舰,它周边是有很多舰艇组成战斗群。它需要很多的能力支撑,包括服务治理、运维上线、质量保障等等。如果现在还是小团队、小业务,安心做业务就好。

微服务实践中需要注意哪些坑?

雷卷发现,从原来单一进程改为跨进程分布式调用会出现很多问题,比如 Transaction 事务没法控制,之前设计的 API 会失效。
雷卷举了个例子。之前淘宝店铺里卖家都会装修店铺,装修了十几个页面,在节日的时候一次性发布,这些大促时间比较长,有可能在某一个环节就会出现问题。比如远程调 API 的时候出现一次失败,且没有分布式的事务来控制,就比较麻烦。
所以在拆成微服务之后,远程网络确实是一个很大的问题,同时对接口的设计也有很大的挑战。因为在一些关键性事务上,不能按照 Rest API 来做设计,要提供更面向业务性、原则性的 API 暴露给外部调用。解决的办法是把 API 各种页面状态更改之后归拢形成一个原子化,增加一个幂等性判断,以确保最终的事务一致性。
冯湧更关注服务治理,他认为当公司越来越大的时候,服务内容的治理,比服务本身健康度治理更重要。
例如研发团队上千人的公司,每个团队负责一个业务方向,并且都以微服务的方式来进行相关的系统能力建设。一旦遇到公司级促销活动,对于类似于“对账、营销”等底层技术能力的时候,会很疑惑这么多五花八门的技术,到底该用哪个?
所以,冯湧建议,在未来做规划架构、架构治理工作的人,要更加关注技术上如何合并,哪些适合微服务体系,哪些适合底层基础建设体系,防患于未然。同时在做服务拆分的时候,服务定义要明确:业务职责、业务场景,避免给服务治理风暴留下潜在风险。
以上就是今天的内容,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • aoe
    很多创业公司都倒在了微服务上,后台开发5人左右,还要上微服务,开发、硬件、运维成本都上去了。前期每天几百的访问量,单机应用都毫无压力。好比海面上出现了几搜敌方侦查艇,我方派出了整个航母战斗群应战。
    2
  • 小斧
    在未来做规划架构、架构治理工作的人,要更加关注技术上如何合并,哪些适合微服务体系,哪些适合底层基础建设体系,防患于未然。同时在做服务拆分的时候,服务定义要明确:业务职责、业务场景,避免给服务治理风暴留下潜在风险。
收起评论
显示
设置
留言
2
收藏
41
沉浸
阅读
分享
手机端
快捷键
回顶部