linux cpu占用率如何看
307
2022-10-12
云原生技术专题-Service Mesh-为什么会出现(一)
Service Mesh的起源
目前基于微服务架构搭建自己的应用,已经成为主流的开发方式,从几年前的星星之火到现在的大规模的落地,构建微服务应用是每个开发者都需要面对的工作,然后软件开发行业从来没有银弹,微服务在给我们带来一系列便利的同时,也依赖会存在缺点,其中最核心的问题就是如何管理好服务间的网络通信,特别是应用规模变得越来越庞大的时候,这个问题就会变得越来越突出,而Service Mesh技术就是解决这个问题而生的,通过它可以让开发者从软件通信的泥泞中解脱出来,省去了开发和维护控制逻辑的繁重工作,让开发人员只关注业务。
云原生是未来软件架构的方向,而且它现在正以燎原之势席卷着整个软件开发行业,现在开发的应用一般都在云上,或者正在全面上云的路上,并且或多或少已经引入了云原生架构中的技术,而service mesh是云原生中重要的一环。
有人把kubernetes和service mesh和serverless称为云原生架构的三架马车,如果把k8s比如云原生的操作系统,而serverless是让应用不在关注机器与实例,那么service mesh就好比应用的网络通信层,它让应用与服务节藕,让开发者只关注业务,有很多业务逻辑中夹杂着大量控制逻辑的应用程序,而service mesh帮你完成了这些工作,而服务不在出现超时,重试这样的控制逻辑控制,也不用集成各种流量控制相关的类库工具包,你的代码只有业务本身,service mesh让你着眼于现在,解决当下微服务的痛点,并稳定的迈向云原生的未来。
有的人把service mesh称为第二代微服务,这不无道理,而现在的微服务也有一些问题,著名的软件大师马丁福勒曾经写过一篇著名的文章叫《微服务》,这里面描述了微服务的概念与特性,其中有两个特性非常重要
而微服务架构中整个开发团队会围绕业务去构建,所以它的结构和单体是不太一样的,可以看到它不同的职能被划分成了一个个小的团队,每个小的团队会对应实现一个独立的业务,那么这样的出现,这就引出了一个著名的理论叫康威理论,康威定理是这样描述的,它是说它一个团队的结构会决定这个团队最终开发的产品的结构。
在左边的单体模式下,整个数据库是一个整体,它的数据是中心化的,而微服务的架构下也业务是绑定在一起的,它的数据库和业务也是绑定在一起的,不同业务会持有不同的数据库,这就是所谓的去中心化的数据特点,这两个特点会带来什么样的优势?
微服务架构的优势团队层面:当我们把团队划分为一个小的内聚的团队的时候,就会发现一个非常大的优势,就是沟通成本会急剧的降低,比如说之前在开发单体应用的时候,前端和后端需要连接一个接口,就不得不去跨团队去协调去沟通,但是现在大家坐在一起沟通就可以了,它的沟通成本会降低,同时我们这些小的团队可以在一起快速的去独立的去完成业务,和别的team不会有太多的耦合,也不会有太多的依赖。产品层面:从产品角度来讲,因为不同的业务划分了一个个小的微服务,那么就带来一个大的优势就是可以去独立的去部署,独立部署有两个好处,第一个好处就是可以充分的去利用系统资源,比如说模块一可能访问量比较高,那么我们可以把它多部署几份,模块二访问量比较低,就可以部署一到二份就可以,而原来这样的优势在单体应用是不存在的,不得不去部署多个实例,哪怕这里面有一部分的业务它访问比较高,访问量比较低的那部分业务也同样被部署了多份,它整体的系统利用率是比较低的,另外一个优势就是可以独立的部署,字节的业务开发完成,我就可以直接独立部署,不需要去协调,去等待其他的模块一起去上线。
微服务是软件架构的银弹吗?什么是银弹理论,银弹理论起源于1975年写的一本书叫人月神话,它是这样描述银弹理论的,没有任何一种技术和管理上的进步,可以极大的提高生产效率,这句话的意思可以理解为没有任何一种技术可以完美的可以完美的解决软件开发出现的问题,而软件开发的本质就是取舍,我们总是在天平的两端不断的去摇摆,去寻找其中的平衡点,算法中有一个重要的原理就是用空间换时间,或者用时间换空间,这就是一种取舍,软件开发中也是一样,无论是进行应用系统开发,还是架构的设计,都需要寻找平衡点,甚至是给一个函数在命名的时候,都要去纠结名词在前还是动词在前,曾经有个笑话说程序员50%的时间都是在函数起名上,这其实不无道理,那么微服务带来了很大的优势,同样也存在一些缺点。
微服务架构面临什么样的问题?
如何管理和控制服务间的通信?而解决微服务网络通信的痛点,也就如何去管理和控制服务网络通信的问题,一般情况下主要有以下的一些需求1、服务注册/发现2、路由,流量转移3、弹性能力(熔断、超时、重试)系统出现故障,如何通过熔断、超时、重试这些弹性能力来提升系统整个健壮性和可靠性4、安全,网络安全,如何进行授权,进行身份认证5、可观察性,对于微服务来说,服务的可视化是非常重要的,也就是服务的可观测性,如何通过可视化的方式去查看整个服务的状态,系统的资源使用情况而这些功能组合在一起就是service mesh
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~