SOA(Service-Oriented Architecture)。它是指在分布式环境下,系统或者其组件可以在网络上通过通用协议调用另一个系统,使得多个系统彼此协作,它是令被调用系统成为调用者的服务SOA架构中的各个子系统通过企业服务总线(Enterprise Service Bus,ESB)实现了松散耦合。ESB是构建SOA时所使用的关键技术,可以简单地理解为它是一个通信系统,为各个应用提供交互能力SOA体系结构
API网关发送请求,业务数据被拆分到不同的数据库,只能由对应的服务进行访问
UNIX的设计哲学,某个服务只做一件事,是一种可以独立开发和部署的无状态服务Library)而用服务来构建组件以便于独立部署A/B测试、灰度发布、限流、熔断和访问控制等一系列与网络相关的功能,这是多么复杂的一件事情。开发和运维人员在转型到微服务架构时不得不面对这一新的挑战
Circuit Breaker)这样的网络层功能和业务代码封装在一起,使服务具备了网络控制能力,
Sidecar模式Sidecar的方式进行网络代理,对应用服务没有侵入性,不会受到应用服务的语言和技术限制,而且可以做到控制层和业务逻辑的分开升级和部署。Sidecar在逻辑上和应用服务部署在同一个结点(如Pod)中,它们拥有相同的生命周期。每个服务都配备了一个Sidecar代理。Sidecar可以迅速方便地为应用服务提供扩展,而不需要应用服务的改造。它的主要功能如下Sidecar可以帮助服务注册到相应的服务发现系统,并对服务做相关的健康检查。如果服务不健康,则可以从服务发现系统中移除服务实例Sidecar可以帮助从服务发现中找到相应外部服务的地址,然后进行服务路由Sidecar接管了进出的流量,这样我们就可以进行相应的日志监视、调用链跟踪、流控熔断等操作,这些都可以在Sidecar中实现Sidecar来控制应用服务,如流控、下线等应用服务终于可以做到专注于业务逻辑

Sidecar代理应用于一个大型的系统,其中包括很多个相互通信的服务,那么每个服务都将有一个配套的Sidecar代理,服务之间通过Sidecar代理进行通信,最终得到一个如下图的网络拜年结构,这就是服务网格
Sidecar模式Sidecar模式应用于多服务的系统,服务之间相互连接形成了网状拓扑结构,最终演变成了服务网格Sidecar的网络拓扑形态,Mesh这个词也由此而来Staging)环境?路由到本地还是云?是测试版本还是运行版本?Netflix有一个非常著名的故障测试系统Chaos Monkey,它会故意切断不同范围的网络环境来测试服务的容错能力。在服务网格中我们可以通过故障注入特性模拟基本的网络传输问题来验证系统的健壮性TLS加解密和授权),不但可以在不同的服务上对其进行重用,而且很容易在整个基础设施层更新安全机制,甚至无须对系统做任何操作Visibility):运行时指标遥测、分布式跟踪Manage Ability):服务发现、负载均衡、运行时动态路由Resilience):超时、重试、熔断等弹性能力Security):服务间访问控制、TLS加密通信LinkerdTwitter的两位工程师William Morgan和Oliver Gould组建了一个小的创业公司Buoyant,开发出了Linkerd并在GitHub上发布了0.0.7版本。这是业界公认的第一个Service Mesh。2017年年初Linkerd加入CNCF,同年4月1.0版本发布EnvoyLyft公司的Matt Klein宣布Envoy在GitHub开源并发布了1.0.0版本。2017年Envoy加入CNCF成为第二个服务网格项目,并于2018年底孵化毕业。Envoy是一个高性能的C++语言实现的分布式代理,它也是一个通信总线。Envoy基于对Nginx、HAProxy、硬件负载均衡器和云负载均衡器等解决方案的了解,与每个应用服务一起运行,并以与平台无关的方式提供公共的网络特性Envoy具有以下功能特性Envoy是一个自包含的高性能服务器,内存占用很小,可以与任何应用程序语言或框架一起运行HTTP/2和gRPC支持:Envoy对HTTP/2和gRPC的传入和传出连接都提供支持,它是一个透明的HTTP/1.1到HTTP/2的代理API配置管理:Envoy为动态管理其配置提供了健壮的APIL7流量的深度可观测性,分布式跟踪的本地支持,MongoDB和DynamoDB数据层面的支持IstioIstio的0.1版本发布,这标志着服务网格第二代产品的诞生,2018年7月Istio又发布了1.0版本。Istio是Google、IBM和Lyft联合发布的产品,靠着这3家公司的强大支持,它很可能成为继Kubernetes之后的另一个重量级产品。在0.1版本发布的时候各个厂商就开始积极响应,Envoy成为Istio默认的数据平面,Linkerd、Nginmesh也放弃了竞争,选择与其集成Istio,就几乎可以再需要其他的微服务框架,也不需要自己去实现服务治理,只要客户端和服务端互联互通,把网络层委托给Istio,它就能帮助完成这一系列的功能Istio主要功能HTTP、gRPC、WebSocket和TCP流量的自动负载均衡API支持访问控制、速率限制和配额请求SOFAMeshSOFAMesh由蚂蚁金服发起,控制面板克隆了Istio的开源库并进行了符合自身要求的改进,MOSN是基于Golang开发的全新数据面板,用以替换EnvoySOFAMesh除了具有服务网格的基本功能外,还有一些自身的特色MOSN实现了多协议支持,同时提供了自定义协议以方便扩展MOSN在I/O、协议、内存、协程、网络处理等多方面进行了优化,保证了生产环境的需求mTLS、双向链路加密等