您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

微服务架构的现状分析

时间:2020-03-27 17:45:55  来源:  作者:

微服务架构的现状分析

 

1. 前言

3 月 10 日,linux 基金会宣布旗下项目 TARS 正式成立 TARS 基金会,宣称致力于构建微服务。该项目是腾讯公司捐献给 Linux 基金会的一个项目,据称该项目在腾讯已经使用了近 10 年,有大量的实践经验。为什么这么多公司打算在微服务领域进行深耕呢?我们真的需要微服务吗?今天来聊一聊这些微服务。

2. Spring Cloud

Spring 官方在 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 基金会。

天下没有免费的午餐,谷歌此时已经联合 IBM 、Lyft 启动了 Istio 项目,开始着手第二代 Service Mesh 的布局。就在Linkerd加入CNCF四个月后,Istio 发布了第一个 Release 版本,虽然 Bug 众多。社区反响热烈,群众们纷纷表示欢迎并站队。Linkerd 直接成了“过气网红”。Istio 的使命是为谷歌K8S生态圈的延伸,建立其在微服务领域的头部位置。

憧憬是美好的,从一开始 Istio 就是一个“早产儿”,数个版本都存在可用性不足的情况,除了一些头部公司很少有相关的落地案例,甚至一些公司也是处于研究阶段。不过随着Istio 1.5的发布这一状况正在得到改善。但是 Service Mesh 目前还属于微服务的金字塔, 需要熟练运用容器技术以及出色的运维能力,学习曲线相对陡峭一些。

4. 其它

还有其它一些企业,也想在微服务领域有一席之地,比如 RedHat 推出了 Quarkus 。Oracle 自己也搞了一个 Helidon。

微服务架构的现状分析

 

都有各自的一些卖点,但是似乎社区并不买帐。但是它们都跟 Reactive Programming(反应式编程) 扯上了关系,这可能是另一种趋势。微服务还在不停的向前推动,现在你不知道微服务都不好意思说你是搞后端的。

然后回到现在的 TARS,现在的公司不搞个基金会弄个开源项目,都不好意思说你是技术公司。TARS 同样走了一条自己的路,但是这条路目前我个人并不看好。

5. 你真的需要微服务吗

在开始实施微服务前你要考虑一些问题,而不是随大流。这也是一些中小企业容易犯的错误。

业务是否需要

技术服务于业务是亘古不变的铁律。微服务解决了你当前业务的什么问题,带来了什么问题你要清楚。一共几万人的应用,日活区区几千人,你搞微服务?

团队是否准备好了

微服务意味着将应用“复杂化了”,从单体应用分割到多个应用,从团队的技术素质、运维能力都是一种考验。团队是否能够充分应对分布式带来的负面作用。



Tags:微服务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  Tags: 微服务  点击:(9)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 微服务  点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  Tags: 微服务  点击:(35)  评论:(0)  加入收藏
实施微服务架构,我们一直在遵循一个实践原则:每个微服务要有自己独立的数据库,避免数据库层面的耦合。这种理所当然感觉好像不需要多加思考,就是应该这样做; 图片来源:James Lewi...【详细内容】
2021-10-11  Tags: 微服务  点击:(42)  评论:(0)  加入收藏
在今年的NGINX Sprint 2.0虚拟大会上,NGINX(来自流行的开源web服务器/负载均衡器和反向代理背后的公司F5),发布了NGINX现代应用参考架构(MARA)。该公司在一篇博客文章中说,这将帮...【详细内容】
2021-09-26  Tags: 微服务  点击:(61)  评论:(0)  加入收藏
今天,字节跳动正式宣布开源 CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合,具有高性能、可扩展、高可靠的特点。项目地址:https://github.com/clo...【详细内容】
2021-09-08  Tags: 微服务  点击:(93)  评论:(0)  加入收藏
1. Spring Boot 与 Spring Cloud Spring Boot 是用于编写微服务的 Java 基础框架。在Spring Cloud 提供了各种构建全栈微服务的功能。构建小型和大型系统都适合。由于控制反...【详细内容】
2021-08-31  Tags: 微服务  点击:(163)  评论:(0)  加入收藏
现有问题在 EFK 日志收集 篇中,我们讲解了如何利用 EFK 收集 Kubernetes 集群日志。但是,还存在如下问题。 Elasticsearch 以单节点的形式部署,不能满足生产环境的要求 Fluentd...【详细内容】
2021-08-13  Tags: 微服务  点击:(104)  评论:(0)  加入收藏
在 Java 和 Kotlin 中, 除了使用Spring Boot创建微服务外,还有很多其他的替代方案。 名称 版本 发布时间 开发商 GitHub ...【详细内容】
2021-08-06  Tags: 微服务  点击:(175)  评论:(0)  加入收藏
一、微服务的现状及未来1.服务架构的演变1.1 单体架构  单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问...【详细内容】
2021-07-22  Tags: 微服务  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
现在很多手机的摄像头都会比电脑的高,因此有不少小伙伴想要在有些时候用手机摄像头代替电脑摄像头,那么具体应该如何操作呢?下面就和小编一起来看看连接手机摄像头的方法吧。更...【详细内容】
2021-12-28  装机吧    Tags:Win10   点击:(2)  评论:(0)  加入收藏
今天教大家通过windows的CMD终端查看WIFI密码 使用管理权限打开CMD 查看本机连接过WIFI名称netsh wlan show profiles 查询某一个WIFI的密码比如这里我想查询猪猪侠的...【详细内容】
2021-12-27  吉祥同学学安全    Tags:wifi密码   点击:(1)  评论:(0)  加入收藏
从本质上来讲,PE系统最广泛的用途只是用来安装系统。通过其内置的Ghost软件来调用第三方的GHO系统镜像来完成系统的安装。从表面来看,最终的系统是否纯净、是否安全,与Gho镜像...【详细内容】
2021-12-27  u盘装系统    Tags:pe工具   点击:(3)  评论:(0)  加入收藏
Safari是苹果在iPhone和iPad上的默认网络浏览器。虽然我们天天都在使用,但是,你是否深入研究了Safari的所有功能和设置?"无痕浏览"、"阅读器"视图和下载文件等标准选项只是其...【详细内容】
2021-12-16  趣玩公社    Tags:Safari   点击:(21)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的 HTML5 视频播放器插件——MuiP...【详细内容】
2021-12-16  GitHub精选    Tags:插件   点击:(23)  评论:(0)  加入收藏
给电脑安装软件,最让人担心的就是安装到“拖家带口”的,而这样的手法正是国产软件惯用的!全家桶自动安装、软文弹窗等等,这些让我们讨厌的却是软件的直接收入来源。 那么在你安...【详细内容】
2021-12-15  老毛桃winpe    Tags:软件   点击:(18)  评论:(0)  加入收藏
不知道你是否遇到过这么一种情况:在一个A4大小的图框画一个接近满框的图形,在打印的时候却发现图形很小根本不符合模型空间的实际情况。看似明显是比例问题,但又不知道究竟是什...【详细内容】
2021-12-14  设计师小仁君    Tags:CAD   点击:(21)  评论:(0)  加入收藏
哈喽大家好! 前几天一个朋友向我疯狂吐槽。 快到年底了,公司要统计年度数据。 需要把一月到十二月份,十二张表格的数据,全部汇总到一个表格内。 这样的数据汇报每年都会有,每到年...【详细内容】
2021-12-14  秋叶Excel    Tags:Excel   点击:(23)  评论:(0)  加入收藏
我发现最近不少小叶子的留言都和 Excel 相关,我寻思是时候出一期解决 Excel 疑难杂症的小合集了。于是毛毛在众多问题中,挑了三个被问次数最多的有关 Excel 的问题,今天就来给...【详细内容】
2021-12-14  叶PPT    Tags:Excel   点击:(30)  评论:(0)  加入收藏
大家好,我是Stark-C。油猴简介【油猴】一款免费的浏览器扩展和最为流行的用户脚本管理器,它是一个附加组件(扩展程序),让用户安装一些脚本使大部分HTML为主的网页改变得更方便易...【详细内容】
2021-12-13  什么值得买    Tags:油猴   点击:(46)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条