范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

谈ServiceMesh微服务治理在云原生解决方案中作用

  作者:人月神话,新浪博客同名
  简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践
  今天谈下基于ServiceMesh服务网格下的微服务治理在整个云原生解决方案中的关键作用。在前面谈云原生解决方案的时候,我们重点都在谈微服务+DevOps+容器云,但是毕竟少谈到ServiceMesh服务网格。
  要明白在单体拆分为微服务后,各个微服务间通过Http Rest API接口进行交互,那么这些接口的统一管控和治理就非常重要。因此微服务治理也是整个大应用架构集成设计中的一个关键内容。如果微服务间的接口没有统一管控起来,实现统一的安全,日志,流控,负载均衡和路由,那么微服务又将重回到传统IT架构中复杂而又难以管理的局面。微服务治理的几种方式
  对于微服务架构下的服务治理,实际上我们看到三种典型方式。通过服务注册中心+配套组件通过API网关来实现统一的注册,安全,限流和日志管理通过类似Istio的ServiceMesh方案来实现服务治理
  在前面就谈到过,对于服务注册中心方式,实际上服务治理能力偏弱,一般只实现服务注册和发现,负载均衡,而对于限流熔断,日志管理,安全等往往都还需要结合其他技术组件一起来完成。但是服务注册中心最大好处就是去中心化架构。
  而对于API网关前面也讲过,可以统一实现代理路由,服务注册,安全,限流和日志管理,但是API网关本质可以理解为类似ESB总线产品的一种轻量实现,因此通过API网关集成后整个架构变成了中心化架构,API网关如果存在故障异常,那么导致整个微服务架构体系不可用。
  那么是否存在同时兼顾前面两者的解决方案?
  实际上ServiceMesh的思路正好是兼顾两者,通过在微服务中注入Sidecar方式来实现微服务治理管控,同时又实现了数据流和控制流的分离,满足了去中心化架构要求。
  在前面一篇文章我谈到过去中心化的API网关,实际和ServiceMesh思路类似。
  从API网关的去中心化到ServiceMesh分布式服务治理
  这里重点仍然是控制流和数据流分离,类似ServiceMesh架构中的控制面和数据面,通过下发SDK包到微服务模块的方式来实现整体的服务注册调用,限流熔断和日志管理等能力。
  而到了ServiceMesh下解决方案,则是通过数据平面和控制平面,通过在微服务模块中下发Sidecar的方式来实现控制流和数据流的分离。同时实现了我们需要的服务注册发现,安全,日志,流控等各种微服务治理能力。
  服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。采用类似Istio微服务治理的好处在哪里?
  在我前面文章里面就提到过,我们通过将单体应用转换为微服务架构,实现了单体应用本身进一步的业务组件和功能间的解耦。同时我们在谈技术中台的时候又谈到,通过将共性技术能力下沉,来实现微服务和底层技术平台间的解耦。
  单个微服务和技术框架解耦
  那么最好剩下一个问题,即微服务开发技术框架?
  比如前面我们谈到的基于SpringCLoud的微服务开发框架,可以启用Eureka+Feign+Ribbon来完成微服务模块间的内部集成,API接口注册和调用。你也可以看到采用SpringCLoud全家桶来满足整体的微服务治理和管控需求。
  但是实际的问题在哪里?
  即你开发的单个微服务模块实际上和SpingCLoud开发框架又变成了紧耦合的关系。即微服务模块本身是依赖这个技术框架的,而这个技术框架本身也可能很重。
  比如我们常说的声明式调用,在客户端的一些负载均衡,你脱离了这个技术开发框架,脱离了Feign和Ribbon组件往往就无法正常运行。
  包括我们看到类似Consul服务注册发现和服务治理,也是需要在微服务中下沉Proxy代理才能够完成。而这些都加大了单个微服务模块的技术依赖性。
  简单来说,我们实际是希望单个微服务更加纯粹。
  即就是开发一个独立的微服务模块,能够暴露Http Rest API接口服务即可。
  涉及到的服务注册发现,负载均衡,限流,安全,日志等各种微服务治理能力最好都不用对微服务模块的开发有任何的侵入。同时我们在开发微服务模块的时候也不用去关心这些内容。也就是我们说的服务治理管控能力对单个微服务完全透明。
  单个微服务支持多开发语言
  其次,我们希望对于单个微服务的开发支持多种开发语言。比如对于前端你可能采用Python语言来实现,对于后端可能又采用的go语言或Nodejs来实现。
  而我们实际上又期望通过一套微服务治理框架来满足对现有微服务的治理管控能力。如果你采用类似SpringCLoud的解决方案显然是无法满足以上需求。
  对服务注册中心和API网关两种类型的兼顾
  在前面的文章我谈到过,如果一个大应用下的多个微服务模块间有API接口交互,那么直接通过服务注册中心来完成服务治理管控即可。
  但是如果存在以下几个场景,我们可以采用API网关对API接口服务的安全,日志,限流熔断方面有强管控需求需要暴露API接口服务给外部应用或APP使用存在跨多个团队间的协同的时候
  因此,在一个微服务架构体系下往往就存在,内部API接口走服务注册中心,外部的以下API接口发布协同通过API网关管理。如下图:
  这个时候你会发现,对于负载均衡,限流熔断,服务注册发现往往存在独立的两套,而且两套之间还无法互通。其次对于API网关有的日志审计能力,往往对于内部注册中心和点对点调用产生的日志又服务进行记录和统一管理。
  也就是说,在一个大应用同时使用了服务注册中心,API网关的时候。我们整个微服务治理变得反而更加复杂了。也正是这个原因,你可能会要求所有的API接口服务全部注册到API网关进行统一管理,但是这本身又带来了中心化架构的问题和更多的性能消耗。
  也正是如此,我们更加希望一套微服务治理方案来解决问题。
  在这种方式下进行统一后,唯一还需要考虑的就是,对于对外API接口服务的统一代理出口问题。这个即可以使用控制中心的Gateway网关出口,也可以直接将需要对外暴露的接口服务接入到类似Ngnix即可。
  为何通过ServiceMesh来实现微服务治理
  根据上面可以看到,我们实际上目标是希望有一个去中心化的微服务治理框架,去中心化的好处就是可以完全避免中心化节点本身的冗余扩展和性能损耗问题,方便扩展。
  其次,我们又希望在去中心化后实现我们期望的所有场景安全,日志,限流熔断,服务注册发现等微服务治理管控能力。而ServiceMesh架构刚好解决了这个问题。对于这个问题的解决采用ServiceMesh架构方式带来的好处是:去中心化架构,控制流和数据流分析,高性能对微服务模块开发无任何侵入完全透明实现完整的安全,日志,限流熔断,注册发现管控能力异构环境,多语言实现统一治理管控
  而以上正好是我们需要的内容。比如整个Istio开源实现,整体内部机制仍然会很复杂,但是这些复杂性实际对我们开发微服务的开发人员不可见,开发人员也完全不用关心。也就是我们常说的,对于微服务开发人员,可以真正专注业务功能的开发,而不需要关心微服务治理如何实现。和Kurbernetes容器云集成
  如果这个Sidecar边车代理需要我们人工去注入微服务,并进行相关配置和部署。那么说明整个ServiceMesh架构并没有实现和微服务之间的彻底解耦和透明化。
  而类似Istio解决方案,可以看到,其天生就实现了和类似Kurbernetes, Mesos容器云PaaS平台的集成能力。也就是说Istio本身就依托于一个Kurbernetes集群而存在,可以实现和集群之间的无缝集成和动态扩展能力。
  也就是我们常说的,在通过Kurbernetes进行容器部署的时候,我们可以将微服务容器和Sidecar两个容器打包到一个Pod中进行部署和管理,这个过程本身是自动的,不需要任何人工去处理和干预,对开发人员来说也完全透明。
  我们可以摘录《云原生服务网格Istio》内容来理解各组件的功能及相互之间的协作方式。
  1. 自动注入:在创建应用程序时自动注入 Sidecar代理Envoy程序。在 Kubernetes中创建 Pod时,Kube-apiserver调用控制面组件的 Sidecar-Injector服务,自动修改应用程序的描述信息并注入Sidecar。在 真正创建Pod时,在创建业务容器的Pod中同时创建Sidecar容器。
  2. 流量拦截:在 Pod 初始化时设置 iptables 规则,基于配置的iptables规则拦截业务容器的Inbound流量和Outbound流量到Sidecar上。而应用程序感知不到Sidecar的存在,还以原本的方式 进行互相访问。流出frontend服务的流量会被 frontend服务侧的 Envoy拦截,而当流量到达forecast容器时,Inbound流量被forecast 服务侧的Envoy拦截。
  3. 服务发现:服务发起方的 Envoy 调用控制面组件 Pilot 的服务发现接口获取目标服务的实例列表。frontend 服务侧的 Envoy 通过 Pilot 的服务发现接口得到forecast服务各个实例的地址。
  4. 负载均衡:服务发起方的Envoy根据配置的负载均衡策略选择服务实例,并连接对应的实例地址。上图中,数据面的各个Envoy从Pilot中获取forecast服务的负载均衡配置,并执行负载均衡动作。
  5. 流量治理:Envoy 从 Pilot 中获取配置的流量规则,在拦截到 Inbound 流量和Outbound 流量时执行治理逻辑。上图中, frontend 服务侧的 Envoy 从 Pilot 中获取流量治理规则,并根据该流量治理规则将不同特征的流量分发到forecast服务的v1或v2版本。
  6. 访问安全:在服务间访问时通过双方的Envoy进行双向认证和通道加密,并基于服务的身份进行授权管理。上图中,Pilot下发安全相关配置,在frontend服务和forecast服务的Envoy上自动加载证书和密钥来实现双向认证,其中的证书和密钥由另一个管理面组件 Citadel维护。
  7. 服务监测:在服务间通信时,通信双方的Envoy都会连接管理面组件Mixer上报访问数据,并通过Mixer将数据转发给对应的监控后端。上图中,frontend服务对forecast服务的访问监控指标、日志和调用链都可以通过这种方式收集到对应的监控后端。
  8. 策略执行:在进行服务访问时,通过Mixer连接后端服务来控制服务间的访问,判断对访问是放行还是拒绝。上图中,Mixer 后端可以对接一个限流服务对从frontend服务到forecast服务的访问进行速率控制等操作。
  9. 外部访问:在网格的入口处有一个Envoy扮演入口网关的角 色。上图中,外部服务通过Gateway访问入口服务 frontend,对 frontend服务的负载均衡和一些流量治理策略都在这个Gateway上执行。
  从上面可以看到:
  当Kurbernetes完成一个微服务的部署或动态扩展后,我们会自动将Sidecar注入到同一个Pod中形成边车模式,实现统一的代理,路由和负载均衡,同时实现对消息流的拦截能力。
  在微服务模块部署完成后,首先是模块注册到Kurbernetes集群,然后集群将注册信息推送到Pilot组件,Pilot组件再将服务注册信息,相关配置信息通过xDS接口推送到Novy组件。
  具体实现过程可以参考下图:
  在这个过程中我们看到,微服务的部署和资源动态扩展,服务的注册发现,注册信息的注入下发等所有操作完全不需要人工干预,对微服务开发人员本身也是完全透明。
  即ServiceMesh架构本身的技术复杂性对微服务开发人员透明。这个也正是我们在进行微服务治理管控时候最希望达到的一个效果。
  在ServiceMesh架构下实现了控制流和数据流的分离,但是控制平面仍然可以拦截到数据流,并推送到类似消息中间件中。
  需要的订阅端可以对消息进行订阅拿到消息报文信息,然后再对消息报文进行进行后续的日志分析。同时通过消息报文,接口服务运行实例数据的统计分析,结合我们预先配置的规则形成最终的控制规则。而Sidecar仅仅是执行最终的控制指令进行控制即可。
  正是因为这样,我们可以看到,ServiceMesh架构下我们很容易集成各种日志分析工具,服务链监控工具等。同时这种集成本身又是一种松耦合的集成方式。
  比如流量控制的实现,与传统的微服务架构一样,首先就需要知道在一个网格中有多少 Endpoints(端点),这些 Endpoints 都属于哪些 Service ,然后将这些信息都记录到注册中心去便于实现服务发现。Istio 也有一个 Service Registry 用来存储网格内所有可以被路由的服务列表,如果您是 Kubernetes 用户,Istio 会自动从 Kubernetes 的 Etcd 中拉取可用 Service 列表并维护到自己的 Service Registry 中。
  再比如类似监控,日志,服务链跟踪等各观察性功能的实现,则更加基于已经和Kurbernetes实现集成的各种开源组件来完成即可。比如常见的,Prometheus ,ELK,Zipkin等。
  是否还需要服务注册中心和API网关?
  我在前面已经表达了观点,即通过Istio实现微服务治理后,不再需要类似Eureka, Consul,Nacos等服务注册中心。这些注册中心有的服务注册发现,负载均衡等能力在Istio中已经具备。
  其次也不再需要类似Kong API网关进行集成。如果整个微服务架构下有API接口需要进一步对外暴露,直接通过Ngnix来实现一层DMZ区的服务代理就可以了。
  对于类似SpringCloiud,Dubbo等微服务框架来说,实际上仅仅保留单个微服务模块和API接口开发发布的能力即可,而不需要再采用完整的SpringCloiud全家桶进行服务治理。
  欢迎关注@人月聊IT 分享SOA,微服务,DevOps平台规划和建设。

央视春晚彩排开启,秦海璐黄子韬贾玲到场,网友喊话提要求还有半个月的时间,就要到除夕了,到时候央视春晚又将成为全国收视率最高的节目。而春晚的彩排也已经开启,根据现场群众的反馈,有不少明星到场。秦海璐穿着一件十分喜庆的大红衣裳出现在现场,知名女爱豆似乎被封杀?网友对其争论,央视剪其镜头央视剪其镜头,公司拒其参加综艺录制,知名女爱豆被封杀?5月25日,有人发现,喻言没有参与爆裂舞台这项音乐节目的录制,便怀疑她被封杀了,她的相关行程和通告似乎全被取消,这是怎么回事?邓紫棋连唱三首超稳,拼接扎染上衣又美又飒,金属链条显质感说到邓紫棋,应该没多少人不认识吧?她是中国香港流行乐女歌手,同时也是词曲创作人和音乐制作人,自从2008年发行个人首张音乐EPG。E。M。后,就正式出道,并在乐坛里获得不小人气。随何炅爸爸成老赖吗?何畏因未按时履行法律义务被法院强制执行说到何炅这位有实力有担当的主持人,相信很多小伙伴们都是看着他主持的快乐大本营这个综艺节目长大的,何炅凭借自己的才华和独特的主持风格也迅速成为娱乐圈大名鼎鼎的明星,可以说娱乐圈的每一赵丽颖离婚后首现身,穿灰色运动装很朴素,好友谢娜却高调秀恩爱最近赵丽颖和冯绍峰离婚的事情可以说惊动了整个娱乐圈,对于这突如其来的消息大家一开始真的不敢相信,毕竟赵丽颖和冯绍峰一直都超级恩爱,两人从公开爱情到结婚生子没有传出一点不好的事情,说陈冠希和美女网聊记录曝光说到陈冠希这位过气的男明星,相信大家立马就会想到他的很多绯闻,也正是他的这些风波才让他在娱乐圈一蹶不振,本来他不管是在演技上还是在颜值上都是让人非常喜欢的一位大帅哥,要不是当年陈冠窦骁吴奇隆曾舜晞何昶希和宋轶录制综艺,何超莲也现身现场说到综艺节目,相信很多小伙伴们都非常喜欢看,毕竟在这样的节目中不仅可以看到自己喜欢的偶像,还能看到他们生活中的一面,令小伙伴们非常惊喜的是最近又一档综艺节目已经悄悄开始录制了,而这4月23日,我要记住这一天大家也知道娱乐圈中有很多明星的感情都是让人捉摸不透,看着非常般配的一对谁也想不到他们最后的结局怎么样,就像大家知道的宋慧乔和宋仲基这么恩爱般配的情侣最后也是分道扬镳,可是令人难以想baby黄晓明一家三口罕见同框,小海绵吃着冰棍超级可爱说到baby和黄晓明这对颜值超高的明星夫妻,相信很多小伙伴们都超级喜欢他们,毕竟两人在娱乐圈也是大名鼎鼎,曾经饰演的很多作品都非常经典,给观众和粉丝留下了深刻的印象,但是大家喜欢他顶流男星衰败史?贾乃亮陈意涵新剧再现真实娱乐圈贾乃亮和陈意涵的新剧爱在星空下悄然开播,该剧与怪你过分美丽都是编剧李花执笔,又是一部反映真实娱乐圈的电视剧。剧情反应真实的娱乐圈剧情主要讲述了当红巨星苏星从顶流跌落谷底,最后在爱人1921陈坤为入戏蓄胡子,李晨拍行刑戏前一夜未眠电影1921在三八妇女节那天,发布了片中女性群像演员阵容,刘诗诗殷桃袁泉倪妮宋佳宋轶等实力派女明星都在片中出演重要角色。3月23日,片方再次发出重磅消息,官宣陈坤和李晨将在片中出演
花木兰撤档尚气停拍,迪士尼拿什么延续百亿票房神话迪士尼最终还是怂了。原定于3月27日北美上映,3月26日起在全球多地上映的花木兰宣布撤档,上映日期未知。做出这个决定,迪士尼一定是百般地不愿意。但无可奈何。3月3日,迪士尼仍然心存周迅新剧遇冷演技被嘲,冷静过后,我有话要说2012年,可以说是周迅最风光的一年。主演的电影票房遥遥领先,更有30亿票房女王的头衔加持。2014年的红高粱尽管争议不断,但依然是当年的口碑大剧。种种迹象都似乎表明,属于周迅的大日本新片又毁女神了,角色遭遇人神共愤,哭着看完结尾怜香惜玉这个词,似乎永远和日本电影挂不上钩。在毁女神方面,日本电影从来就不遗余力。千年一遇的天使桥本环奈,自从拍完银魂我是大哥大后,在放飞自我的路上越走越远当大长腿美女长泽雅美碰上郑恺四年前参演的角色即将重见天日,为何引来一片骂声?20日,导演扎克施奈德在直播中正式宣布他的正义联盟导演剪辑版将发行,明年在华纳流媒体平台HBOMax上线。粉丝们三年以来的念念不忘,终于有了回响。23日,扎克施耐德曝光郑恺在正义联迈克尔杰克逊的死因背后,小说都不敢这么写说起世界乐坛最受欢迎的流行音乐之王,迈克尔杰克逊当仁不让。迈克尔杰克逊可谓是世界音乐史上的一个奇才。他5岁出道,8岁成名,一亮嗓就展现出了异于常人的音乐天赋。有人做过统计,说世界上从菜市场卖鱼到鬼才编剧,何庆魁经历了什么?2001年,赵本山的卖拐成为那年春晚小品类一等奖,2002年,赵本山自导自演了第一部电视剧刘老根,随后的卖车送水工依旧保持着高水准,让赵本山成为当之无愧的小品之王,同样也让他和高秀七小福同门师兄却不同命,有的人大红大紫,有的人却销声匿迹7月15日电影七小福召开发布会,宣布将由梁家辉担任男主角,并启用年轻演员担任新七小福。这部电影由洪金宝担任总导演,一众元字辈师兄弟将齐聚电影向师父于占元致敬。说起七小福,很多人都已农村捞金,颜值崩塌,未婚无子,52岁的高胜美经历了什么?赵雅芝和叶童主演的新白娘子传奇是无法超越的经典,几十年后依然称得上封神之作。而这部剧的主题曲千年等一回也传唱至今,已经有过无数个版本的翻唱,但没有人可以超越原唱高胜美。她那甜美清透从称霸东北到两次入狱,魏三到底有多嚣张?魏三这个名字很多人都不熟悉,他是曾经拒绝过赵本山的东北二人转演员,还曾经登上春晚和李咏合作小品。在东北,魏三曾经红极一时,称得上家喻户晓,然而他却得意忘形,两次入狱,如今拜潘长江为56岁香港第一败家狐狸精近照曝光会花钱的女人最好命近日,56岁章小蕙参加访谈节目问答时光机。记者挑选了2000年到2010年10年间她上节目被问到的问题,其中有11个问题回答跟当年的回答不一样。这十年章小惠经历了什么,记者想知道其票房被叶问4碾压,评分6。5,冯小刚这次输了吗1997年,冯小刚执导的甲方乙方上映,正式开启了贺岁档的时代。在之后的20年间,冯小刚曾连续8年拿下贺岁档票房冠军,风头一时无两。2017年一部芳华更是以14。23亿的票房,创造了