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

谈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平台规划和建设。

年轻时英俊潇洒,老了却丑的各有千秋,这8位男明星,好可惜焦恩俊焦恩俊1967年出生。曾是古装男神的头把交椅,他凭借一己之力挽救了很多奇奇怪怪的古装发型。二郎神的天眼画在他脸上不违和。小李飞刀的泡面头。当年的李寻欢,面如冠玉,眼含桃花,外20年前烂大街的歌曲你能记得几首?烂大街的必须要有老鼠爱大米。不知道,还没出生打脸两只蝴蝶老鼠爱大米真的好想你常回家看看偏偏喜欢你我记得四十年前烂大街的歌是日本电影追捕里的草帽歌,印度电影流浪者里的拉兹之歌。还有李初见惊为天人,再见像换了个人,这5位女星颜值成谜,这脸肿么了娱乐圈里有很多女明星刚出道时惊为天人,要美貌有美貌,要灵气有灵气。可观众还没有等到她们大红大紫,她们的颜值就开始走下坡路了,明明年纪并不大,却仿佛在一夜之间泯然众人。下面我们一起来春晚撒贝宁口误,为什么大家伙不计较?主要是因为撒贝宁本人一再承认是自己失误了,不解释,不回避,不退缩,不找其他原因,越是这样的公开大胆地承认,越会得到谅解,再说,这个失误太小了,并没有造成什么损失,真就算是一时的嘴瓢排斥汉服的人都在什么年龄段,汉服什么时候能复兴?汉服,已经流行过了!我们的民族叫汉族,我们的语言叫汉语,这也许就是两汉八百年留下的最宝贵的财富,当然,汉服,作为当时最流行的时尚,已经流行了千百年!服装,总是有着鲜明的时代特色的,黄晓明与baby离婚另有隐情?无关李菲儿,问题在于baby都说相爱结婚很简单,想守住婚姻难上加难,黄晓明与baby离婚真的有那么简单吗?大家都知道因为baby发文澄清自己不是小三后与黄晓明就再也没有微博互动过了。而黄晓明在初遇baby时事贾乃亮和李小璐离婚的前前后后文17编辑嘈坊1999年,十五岁的贾乃亮办理了高中退学手续,走上北漂之路。贾乃亮的父母是哈尔滨当地有名的商人,算是含着金汤匙出生的富二代。从小家境优越的他,本该在家里享受锦衣玉食,陈情令温晁扮演者竟是杨紫第一任男友?在陈情令中也有他的身影,他就是温晁的扮演者贺鹏。温晁是是岐山温氏二公子。杨紫说到杨紫的男朋友,很多人应该只知道秦俊杰一个人,很少有人知道贺鹏。杨紫已经是娱乐圈中的小花旦,秦俊杰也主如果德云社解散,郭德纲及弟子们不说相声了,相声会怎样?那相声会更健康,更环保!会怎样?传统相声就没有了呗!前些年,姜X的说教式主流相声已经把相声带偏了,没人看,只能在非遗里混混日子。好在冒出个德云社,总算把悬崖边上的传统相声又拉回来那你单曲循环最多的歌是什么歌?一直对粤语歌情有独钟,每次挺都有不同的韵味,且百听不厌,以下这些都在我的循环榜单当中Beyond光辉岁月真的爱你唱K必点曲目邓紫棋喜欢你因为这首歌喜欢上邓紫棋古惑仔兄弟友情岁月配上商朝四大天王是谁?商朝四大天王是谁?对四大天王这一称呼的追根溯源,最早出自于佛教的护法天神,又称护世四天王。四指的是东西南北的四个方向,即全方位护世。中文名叫四大天王,别名四大金刚。商朝的四大天王,
恭喜!TVB艺人岑杏贤宣布怀孕5个月,和金融才俊丈夫一起非常快乐本文编辑剧透社年年未经授权严禁转载,发现抄袭者将进行全网投诉恭喜,恭喜!32岁的TVB港姐岑杏贤,虽然从出道至今一直没有什么特别让人记住的作品,但最近几年,她因为在热播处境剧爱回家疑生日与马国明共度甜蜜一夜,TVB力捧小花汤洛雯美景旁秀长腿本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉昨日(6日)是香港艺人汤洛雯的34岁生日,在这个时候,当然是少不了马国明这个男友啦,早前在内地刚拍完剧集白色强人2的马国欣慰!感恩患罕见病女儿积极接受治疗,前TVB女星钟丽淇赞其厉害本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉近日,久未在公众面前露面的香港艺人钟丽淇(Margaret)现身新城接受薛家燕开心大派对的访问,因为二人在此之前已经很久传与歌手前任复合成功,TVB小花林颖彤获对方亲自接送再了解下本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉现年28岁的香港艺人林颖彤近年来可谓是多方面发展,唱歌拍剧主持样样来,看来在不久的将来,林颖彤很快就会变成一个多方面发展期待!TVB收视福将欧阳震华曝挑战幕后工作,已计划编写电影本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉说起香港艺人欧阳震华(Bobby)的名字时,想必网友们已经对他熟悉到不能再熟悉的啦,特别是在近期播出的TVB剧集伙记办大担心!TVB知名老戏骨秦煌被曝急入院,双脚严重浮肿连鞋都穿不进本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉去年11月,体重超200磅的香港资深艺人秦煌在将军澳电视城不慎跌倒,在送医之后检查发现已经出现了骨裂,所以当时秦煌还留院有感而发!TVB当家小生袁伟豪感恩40岁前成家立业,成功但不自满本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉今日(11日)是香港艺人袁伟豪40岁生日的日子,对于踏入四字头的他可以说是感慨万千,袁伟豪也在社交平台上与大家分享了自己TVB港姐冠军陈凯琳妈妈曾抗拒郑嘉颖做女婿,原因竟是不认识他?本文编辑剧透社林纯纯儿未经授权严禁转载,发现抄袭者将进行全网投诉日前,TVB前港姐冠军陈凯琳的妈妈陈刘慧娴到电台接受访问,她开心表示,将会迎来最热闹的母亲节,三个子女已经悉心安排了因负评引赚钱奇想,TVB星梦一姐吴若希称看我和老公吵架要收钱本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉今日,香港歌手吴若希(Jinny)到黄埔宣传新歌只想你记得,吴若希的这首歌是准备送给两个小朋友的礼物,同时也是希望这首歌资治通鉴中8句金言,对我们每个人都有用,毛主席读了17遍导语提起司马光,很多人都会心生敬佩,他是北宋的思想家和文学家,他这一生塑造了很多文学上的传奇,最为经典的便是这部资治通鉴。这部作品历时20年,才打造而成,是中国历史上最重要的史书。继不雅视频流出,TVB小生吴伟豪今已默默复工,监制曝其心情不错本文编辑剧透社小彤未经授权严禁转载,发现抄袭者将进行全网投诉在前段时间,疑似香港艺人吴伟豪的不雅片段在网上流出,一瞬间网友们都对此议论纷纷,在短片流出之后,吴伟豪也被知情人曝出已经