ServiceMesh企业应用分析_servicemesh的应用场景_zzp12的博客-程序员宅基地

技术标签: 微服务  

服务网格+云原生的核心价值

从业务开发团队,运维团队,基础设施团队的接耦,接耦后提高了各团队的工作效率和质量。

在这里插入图片描述

耦合情况举例:

  1. 业务团队内部耦合:

    • 对于巨大的单体应用,业务团队内部不同的人和子团队之间在开发和部署上存在相互依赖。通过微服务化,接耦。
  2. 业务团队和运维团队的耦合:

    • 业务扩容,需由运维团队提供数据,业务团队设计方案(每个服务扩容多少,数据层怎么扩容,缓存层)。扩容的方案,
      要借助服务发现机制或修改配置文件,由运维团队执行。
    • 服务治理相关的内容,因为属于服务化SDK的配置,SDK配置每个语言都不同,通常需要由业务团队给出方案,运维团队部署执行。
    • 灰度方案,同上,业务团队设计灰度方案,运维团队检验并执行。然后再由业务团队验证。
    • 故障注入,需要业务团队在代码级别注入故障,在演练结束后还需要再撤销。由运维团队注入的故障,往往只有kill 服务进程等非常简单。而且需要搭建额外的测试环境,
      很难利用线上环境使用灰度的方式演练。

    最理想的情况是:业务团队只用专心在业务上,而所有其他工作可由运维团队和基础设施团队地理完成。

  3. 业务团队和基础设施团队的耦合:

    • 基础设施团队为服务化SDK添加了新的功能,一个是需要对所有的语言的SDK添加并测试,第2个需要和业务代码一起上线。需要研发上线的窗口和所有语言的业务应用对齐。效率低下。
    • 对监控,策略执行的新的功能的添加,或者对接,更换新的后端应用,也有同上问题。
    • 基础设施团队,希望通过对应用和中间件之间的流量进行治理,缺乏通用工具。要依赖和业务团队合作,分别在中间件和应用SDK上做修改,并部署上线。
  4. 基础设施团队和运维团队的耦合:

    • 基础设施中间件的性能通常需要随着业务性能扩展而扩展,因此和业务团队一样,需要更加接耦的伸缩机制。
    • 对中间件和应用之间的流量进行治理,即使基础能力在,需要由基础设施团队设计配置变更(缺乏通用配置),运维团队执行。
  5. 3个团队的耦合:

    • 对于异常检测,需要由基础设施团队,业务团队设计相应的预案,运维团队执行相应的动作。
    • 对于上线新的指标的监控,需要业务人员开发或至少测试新的探针,基础设施团队对监控中间件修改相应的配置,运维团队执行变更。
    • 对于安全,需要业务团队设计验证安全方案,基础设施团队检验相关的安全设计,提供相应的安全中间件(证书管理),运维团队要负责网络层面的安全,并实际部署。
    • 对于流控等实时策略,需要业务人员完成业务端的开发或验证,基础设施团队提供相应的中间件功能。(redis的桶等),运维人员要实际部署,并做检验。

企业微服务化架构的演变

在这里插入图片描述

  1. 微服务+VM时代
    • 业务团队内部的接耦。极大的提高新业务开发和发布的效率。
  2. 微服务+云原生时代
    • 通过容器化技术让应用和运行平台接耦,K8S又为运维团队提供了强大的资源编排工具。实现了业务团队+基础设施团队和运维团队的解耦。极大的提高了运维和业务发布的效率,提升了业务伸缩性,可用性和发布的安全性。
  3. 微服务+云原生+ServiceMesh时代
    • 在2的基础上,把服务治理,策略,监控,安全等能力基础设施化,实现了业务团队与基础设施团队的解耦。极大的提高了基础设施团队的工作效率。而基础设施能力的提升,又会极大的促进整个公司业务能力的提升。

在企业已经部分应用微服务+云原生的条件下,ServiceMesh应对的痛点场景

在这里插入图片描述

Istio-主流ServiceMesh方案

在这里插入图片描述

主要优势:

  1. 生态兼容性好,很容易和其他(如监控,分布式跟踪,策略)开源产品一起组成完整的企业后端解决方案方案。
  2. 由IBM, google发起,项目架构优异,可扩展性好。功能强大。
  3. 社区活跃度最高,github 2018年贡献者发展最快的top 5项目。
  4. 和容器化编排的事实标准K8S深度融合,复用大量K8S的概念和基础能力,与K8S的能力整合得最好,在使用K8S的基础上,学习和应用复杂度相对较低。
  5. 对应用可实现零侵入。
  6. 跨云统一治理能力好。
  7. 通过ServiceEntry来实现云原生内外互通,和部分统一治理能力。

Istio的能力和架构概述

在这里插入图片描述

功能概述:

  1. 流量治理:包括服务发现,负载均衡,路由控制,限流,熔断,容错,故障注入,灰度发布,流量镜像等。
  2. 可观测性:包括监控,日志聚合,计量,分布式跟踪
  3. 实时规则(策略)
  4. 安全:加密通信,认证,授权。
  5. 服务访问接口:南北向通信
  6. 跨云融合

可以看到其功能丰富,对与大部分企业来说在功能上能满足。并且能构成企业后端的完整解决方案和统一的技术栈

架构概述:

  1. Proxy即为数据面,负责规则的执行。使用功能强大,扩展性好,性能优异的Envoy
  2. Mixer复杂把监控信息,和实时规则(策略)信息转发给对应的后端,支持多种不同的后端
  3. Citadel负责维护分发安全证书,可实现透明的,可插拔的双向认证TLS通信,保障服务间通信安全。也能执行RBAC。
  4. Pilot负责所有的配置的下发。
  5. Galley 代理屏蔽不同的运行时实现,和Istio其他组件通信。验效配置。

Istio的现阶段的不足-可发展的潜力

  1. 所有的公司现有的非ServiceMesh的服务基础设施,因其做为业务的底座,和业务高度绑定,更新的成本很大。考虑到业务的连续性和稳定性,也几乎不可能将其同时的迁移至Istio,所以需要更高效的模型,工具,帮助客户实现第1代SDK微服务,和第2代Service Mesh微服务Istio的互通调用和统一治理。
  2. 可以考虑把SDK变成独立进程并下沉至基础设施这一想法继续深化,不限于服务治理,监控的范畴,比如把Envoy扩展为包含对分布式redis访问的SDK,这样当需要升级redis的SDK实现时,业务代码不用变化,同时也让分布式redis的水平伸缩变得更加容易。同样的考虑也适用MQ,数据库。从另一个观点来看,就是让Envoy支持更多特殊协议。
  3. 安全模块的功能,架构还在高速变化,还未到达生产可用。
  4. 因Istio重架构,暂时在性能优化方面分配较少精力。所以在大规模ServiceMesh场景下会遇到性能瓶颈,主要集中在Mixer和Pilot, 可以做进一步优化。

初步设计方案A:

在这里插入图片描述

  1. 注册中心ServiceCenter要添加服务治理的配置储存功能
  2. ServiceCenter要支持MCP协议
  3. 改造Java-chassis支持xDS协议
  4. 改造Mesher支持xDS协议
  5. 控制面Pilot改造,提高其性能,后期可以考虑添加服务注册透传功能
  6. Sidecar可以发展Mesher,也可以folk envoy,为其添加ServiceCenter服务注册能力。
  7. Mixer复用Istio的。对于非云原生业务,要另外实现相关功能。

初步设计方案B:

在这里插入图片描述

  1. Edge-Sidecar既是所有跨云和非云的流量的代理,也是作为非云原生应用的边车的集群,要能部署多个实例,能执行xDs协议,实现和Istio的更多功能的统一治理。
  2. 扩展Scb已有组件Syncer实现和Istio的服务同步,和互相发现。
  3. ServiceCenter作为所有非云原生的注册中心。
  4. 对于所有的SDK微服务(包括Spring cloud,Dubbo)的存量应用,通过让其支持ServiceCenter来实现与Istio的融合。
  5. 对于没有SDK的服务,可以通过Mesher实现无侵入接入Mesh。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zzp12/article/details/111695617

智能推荐

JavaScript 收藏夹_aghedoc1749的博客-程序员宅基地

Javascript OO1.在JavaScript中使用面向对象(Truly)2.设计模式在JavaScript中的应用(1)(Truly)3.设计模式在JavaScript中的应用(2) -- Observer(Truly)转载于:https://www.cnblogs.com/cancer_xu/archive/2013/02/20/Javascript-favor...

Jenkins+Docker+Git+Harbor流水线打包_weixin_30897079的博客-程序员宅基地

Jenkins+Docker+Git+Harbor流水线打包环境:CentOS Linux release 7.6.1810 (Core)192.168.247.214 Jenkins+docker192.168.247.215 git+harbor[[email protected] ~]# systemctl stop firewalld...

步进电机的使用教程以及步距角和细分讲解_步进电机步距角和细分的关系_mosiwi的博客-程序员宅基地

步进电机外形结构步进电机内部结构图步进电机分类单段反应式步进电机内部结构图磁场形成节拍运动动画定子通电方式两转子齿转动方式方式一--------------------------------------------------------------------------------------------------方式二---------------------------------------------------------------------------

Ubuntu nVidia显卡双显示器手动调节分辨率_土逗甜菜的博客-程序员宅基地

在上一篇文章中,我们成功安装了英伟达的显卡驱动。但当同一显卡外接两台不同分辨率的显示器的时候,第二台显示器的分辨率只有640x480与320x240两个选项。本文将解决这个问题。首先,安装好英伟达显卡驱动后,在终端敲入sudo nvidia-settings 可以打开英伟达控制中心。如下图如果在这里可以更改分辨率,那么很幸运,文章到此结束。如果不能更改,那么需要用到另一条命令也就是xrandr。

js 对象型数组和字符串互转_奋斗的小小骚年的博客-程序员宅基地

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script&am

PGN: 指针生成网络(Get To The Point: Summarization with Pointer-Generator Networks)_十里清风的博客-程序员宅基地

seq2seq模型可用于文本摘要(并非简单地选择、重排原始文本的段落),然后这些模型有两个缺点:不易关注真实细节,以及倾向于生成重复文本。本文提出一种新颖的架构:使用两种方式增强标准的seq2seq注意力模型。第一,使用混合指针生成网络,利用指针从原文精确地复制单词,同时保留生成器产生新单词的能力。第二,使用覆盖机制跟踪哪些单词已经被摘取,避免生成重复文本。引言文本摘要任务旨在输出仅包含原文主要信息的压缩文本,大致具有两种方法:抽取式和摘要式。抽取式方法直接抽取段落原文,而摘要式方法可能生成一些原文中

随便推点

jquery function_write less ,do more----轻巧jQuery_weixin_39795845的博客-程序员宅基地

开篇寄语:当你无法改变周遭环境时,至少可以调整自己的心态去面对它。感觉很难时,告诉自己:再坚持一下,别辜负了曾经经历的苦难与磨练。从这一篇开始,我们开始学习jQuery。一、jQuery的下载安装1、官网jQuery官网:http://jquery.com/2、版本jQuery 2.x has the same API as jQuery 1.x, but does not support Int...

Redmine基础:Plugin开发:3:部署Plugin_淼叔的博客-程序员宅基地

开发的Plugin部署到Redmine的服务中,最为简单的方式即是将整个内容进行打包,然后解开至Redmine的plugins目录中,重启Redmine的服务即可。

oracle net manager检测到必要的配置更新 保存不了_wem520的博客-程序员宅基地

oracle net manager检测到必要的配置更新 保存不了win7系统,配置oracle的net manager保存出错的解决办法 问题:win7系统,配置oracle的net manager保存出错。问题截图:1、错误提示:Error writing entry to local tnsnames.ora file 或者在保存的

VS2010批量注释快捷键_weixin_34185320的博客-程序员宅基地

批量注释快捷键:Ctrl + K + C批量取消注释快捷键: Ctrl + K + U转载于:https://www.cnblogs.com/nangongyibin/p/10433526.html

rrweb记录前端用户的操作_rrweb跳过无用户操作_那么烦的博客-程序员宅基地

这个工具能将用户在 Web 页面上的操作过程记录下来,并转成可序列化的日志数据,也可进行回放。程序员可以拿它来远程调试 Bug,产品经理可以拿来收集分析用户行为,感觉还挺实用。当然rrwen还有缺陷,不能完美的展示出原画面,某些复杂的样式会出现问题。期待以后的版本能更加完美。js下载参考下面的博客https://blog.csdn.net/w926400c/article/details/106867343...

推荐文章

热门文章

相关标签