微服务架构的现状分析


微服务架构的现状分析

文章插图
 
1. 前言3 月 10 日,linux 基金会宣布旗下项目 TARS 正式成立 TARS 基金会,宣称致力于构建微服务 。该项目是腾讯公司捐献给 Linux 基金会的一个项目,据称该项目在腾讯已经使用了近 10 年,有大量的实践经验 。为什么这么多公司打算在微服务领域进行深耕呢?我们真的需要微服务吗?今天来聊一聊这些微服务 。
2. Spring CloudSpring 官方在 14 年下半年出了 Spring Cloud 。2016 年底无意中看到这个,当时国内资料很少也很少听说便没有过于在意 。2017 年有同事安利了这个东西,也是从这个时候“微服务”这个概念在技术圈“热”了起来 。我便花了很大的精力学习了一番 。一直到 2018 年下半年才有机会实践中使用 Spring Cloud  。但是这个项目半年就“夭折”了,需求不明确,业务推进缓慢 。
我一直不明白为什么当时 Leader 坚持使用 Spring Cloud ,从当时人力和业务都不应该使用它 。毕竟很多场景需要的路由控制、限流等一些需要定制化的功能要花一些精力去处理,而且业务划分是否合理也决定了微服务的复杂程度 。我觉得更多的有“炫技”成分在里面 。我个人觉得是否使用微服务一定要看业务的推进情况 。不过 Spring Cloud 也为面试作出了很多的贡献 。
微服务架构的现状分析

文章插图
 
2018 年 11 月,当 Netflix 宣布旗下被 Spring Cloud 所依赖的诸多项目进入维护模式后,Spring Cloud 开始出现了一些危机 。因为 Spring Cloud 只是作为上层的规范,底层依赖于第三方的轮子 。这也符合 Spring 官方的一惯风格 。
不过好在危机持续时间并不长,因为早在 2018 年 7 月底 Alibaba 就开始孵化 Spring Cloud Alibaba 项目了 。这应该是国产项目第一次进入 Spring 体系进行孵化并在2019 年 8 月 1 日正式毕业 。目前Spring Cloud Alibaba 已经发布了数个正式版本,成为目前 Spring Cloud 生态圈的重要组成部分 。
借助于 Spring 的头部地位,Spring Cloud 也成为目前受众最广的开源微服务体系 。对于普通 JAVA 开发者来说从一般应用过渡到微服务的最好途径可能就是 Spring Cloud 了 。
3. Service Mesh正当我学习 Spring Cloud 的时候,另一个微服务体系 Service Mesh 也出现了 。当然 Service Mesh 出场有点霸道,直接宣布它就是下一代的微服务的标准 。什么?下一代?这一代我还没搞明白呢!相信很多人跟我一样都是这么想的 。
3.1 什么是 Service Mesh
Service Mesh 是微服务时代的 TCP 协议
我们拿比较好理解的 Spring Cloud 来说,它实现了微服务所需要的一系列基础功能:负载均衡、服务治理、熔断降级等,并屏蔽了其中的技术细节,让我们很容易就可以开发出稳定的分布式系统 。但是我们发现我们需要花更多精力去研究Spring Cloud本身才能更好的来贴合我们的业务 。同时我们需要集成很多的库来实现诸如服务注册与发现,熔断降级,负载均衡等业务无关的功能,就像一个既要搞前端又要后端,甚至需要自己去收集需求的开发一样 。
我们需要有一个专门的代理帮我们来做这些事情,而我们只专注于业务 。服务之间的复杂交互由代理来做,我们不再过分操心非业务功能 。这种组合模式也就是 Sidecar 模式,Sidecar来源于“三蹦子” 。
微服务架构的现状分析

文章插图
 
然后所有的代理连起来就组成了一张通讯网:
微服务架构的现状分析

文章插图
 
为了更加清晰展示我们把业务服务隐藏掉,同时为了集中对代理组建进行拓扑更新和控制,又抽象出一个控制面板:
微服务架构的现状分析

文章插图
 
Service Mesh 更像是一种微服务的呈现风格 。
3.2 Service Mesh 发展史【微服务架构的现状分析】Service Mesh 的高调面市正是各家容器技术标准抢占地位的时候,虽然 Docker 在容器领域先下一城,但是 K8S 也开始发力,谁赢得标准之争谁就会占据市场的核心地位 。我认为这一时期 Service Mesh 正好契合了谷歌的需要,使得谷歌为之站台,Service Mesh 布道者William Morgan 和 Oliver Gould 发起的第一个 Service Mesh 项目Linkerd 顺利加入谷歌主导的 CNCF 基金会 。


推荐阅读