service mesh 架构_MESHOR

service mesh 架构_MESHOR什么是servicemesh根据LinkerdCEOWilliamMorgan定义,ServiceMesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,ServiceMesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。基本结构图如下:在实践中,ServiceMesh基本来说是一…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

什么是service mesh

       根据Linkerd CEO William Morgan定义,Service Mesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。

基本结构图如下:

service mesh 架构_MESHOR

        在实践中,Service Mesh基本来说是一组轻量级的服务代理和应用逻辑的服务在一起,同生共死,并且对于应用服务是透明的。具体的部署方式类似下面这样。

service mesh 架构_MESHOR

       如何理解sidecar呢?可以参考下面的图,边上的人可以专注的做自己的事情,而sidercar负责处理开车相关的事情,实现业务和通用功能的分离。

service mesh 架构_MESHOR

为什么要这么设计呢?是因为在当前的微服务发展中,有几个问题逐渐暴露出来:

  1. 业务服务的代码和微服务的SDK强耦合在一起导致业务升级和微服务SDK的升级强绑定在了一起。
  2. 对于异构的系统,需要开发多语言的SDK,维护成本很高。

Service Mesh如何解决上述问题呢?Service Mesh会抽离微服务中的通用功能,比如服务注册发现,负载均衡,熔断降级,限流扩容,监控等功能,把这些功能放到sidercar中,通过代理的方式于业务服务进行通信,从而解决上面的问题。

istlo介绍

Istio是Google、IBM和Lyft联合开源的微服务Service Mesh框架,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题。

Istio是对Service Mesh的产品化实践,帮助微服务实现了分层解耦,此时的sidecar具有一下功能:

(1)服务发现(discovery)

(2)负载均衡(load balancing)

(3)故障恢复(failure recovery)

(4)服务度量(metrics)

(5)服务监控(monitoring)

(6)A/B测试(A/B testing)

(7)灰度发布(canary rollouts)

(8)限流限速(rate limiting)

(9)访问控制(access control)

(10)身份认证(end-to-end authentication)

架构图如下:

service mesh 架构_MESHOR

逻辑上Istio分为数据平面(data pane)和控制平面(control pane):

  • 数据平面用于有一些智能代理组成,微服务之间的网络通信,
  • 控制平面负责对智能代理进行管理和配置。

主要由以下组件构成

数据平面,有一个核心组件:

Envoy (proxy)

Envoy的核心职责是高效转发,更具体的,它具备这样一些能力:

(1)服务发现

(2)负载均衡

(3)安全传输

(4)多协议支持,例如HTTP/2,gRPC

(5)断路器(Circuit breakers)

(6)健康检查

(7)百分比分流路由

(8)故障注入(Fault injection)

(9)系统度量

控制平面,有四个核心组件:

Mixer

Mixer的一些核心能力是:

(1)跨平台,作为其他组件的adapter,实现Istio跨平台的能力;

(2)和Envoy通讯,实时各种策略

(3)和Envoy通讯,收集各种数据

Mixer的设计核心在于“插件化”,这种模型使得Istio能够适配各种复杂的主机环境,以及后端基础设施。

Pilot

Pilot作为非常重要的控制平面组件,其核心能力是:

(1)为Envoy提供服务发现能力;

(2)为Envoy提供各种智能路由管理能力,例如A/B测试,灰度发布;

(3)为Envoy提供各种弹性管理能力,例如超时,重试,断路策略;

Pilot的设计核心在于“标准化”,它会将各种流控的控制命令转化为Envoy能够识别的配置,并在运行时,将这些指令扩散到所有的Envoy。Pilot将这些能力抽象成通用配置的好处是,所有符合这种标准的Envoy都能够接入到Pilot来。

潜台词是,任何第三方可以实现自己的proxy,只要符合相关的API标准,都可以和Pilot集成。

Citadel

Citadel组件,它提供终端用户身份认证,以及服务到服务的访问控制。总之,这是一个和安全相关的组件。

Galley

Gally组件,它是一个配置获取、校验、处理、分发的组件,它的设计核心在于“解耦”,它将“从底层平台(例如:K8S)获取用户配置”与Istio解耦开来。

参考资料: https://blog.csdn.net/z50L2O08e2u4afToR9A/article/details/89597120

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215888.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号