Service Mesh之Sidecar

简介: 时间总是给你意外,在使用微服务架构吗?还在考虑使用哪种微服务架构呢?要准备大干一场,学习spring cloud吗?还在纠结这些问题时,这些技术都将要被淘汰了,下一代微服务Service Mesh出现了

时间总是给你意外,在使用微服务架构吗?还在考虑使用哪种微服务架构呢?要准备大干一场,学习spring cloud吗?

还在纠结这些问题时,这些技术都将要被淘汰了,下一代微服务Service Mesh出现了

Service Mesh

简单介绍一下

这个词最早使用由开发Linkerd的Buoyant公司提出,并在内部使用。2016年9月29日第一次公开使用这个术语。2017年的时候随着Linkerd的传入,Service Mesh进入国内技术社区的视野。最早翻译为“服务啮合层”,这个词比较拗口。用了几个月之后改成了服务网格

定义

首先服务网格是一个基础设施层,功能在于处理服务间通信,职责是负责实现请求的可靠传递。在实践中,服务网格通常实现为轻量级网络代理,通常与应用程序部署在一起,但是对应用程序透明。

为什么

为什么需要这个呢?

当年EJB怎么下岗的,繁重,程序员压力山大

看看现在,如果要使用微服务架构,要关注哪些呢?

  • 服务发现
  • 负载均衡
  • 路由
  • 流量控制
  • 通信可靠性
  • 弹性
  • 安全
  • 监控/日志

对应spring cloud

image.png

如果去掌握每一个模块,是不是压力山大,留给业务的时间能有多少


而程序员真正需要关心什么呢?

serviceA --> serviceB

对应代码

//serviceA,让serviceB执行一下methodB,完成某件事
serviceB.methodB()

仅此而已,可却要花费很大的精力去关注上面的一大串

未来

再也不用关心那些基础设施,只关注服务调用

可能真的就像TCP一样

image.png

第一代网络计算机系统,最早的时候开发人员需要在自己的代码里处理网络通讯的细节问题,比如说数据包顺序、流量控制等等,导致网络逻辑和业务逻辑混杂在一起,这样是不行的。接下来出现了TCP/IP技术,解决了流量控制问题,从右边的图上可以看到,功能其实没发生变化:所有的功能都在,代码还是要写。但是,最重要的事情,流程控制,已经从应用程序里面抽出来了。对比左右两边的图,抽出来之后被做成了操作系统网络层的一部分,这就是TCP/IP,这样的话应用的结构就简单了

Sidecar

Sidecar这个东西出现的时间挺长的,它在原有的客户端和服务端之间加多了一个代理

image.png

Sidecar扮演的角色和代理很像,但是功能就齐全很多,基本上原来微服务框架在客户端实现的功能都会对应实现。

image.png

架构改造

sidecar模式到底好不好,可能还没有清晰轮廓,可以通过一个改造的过程再深刻体会一下

之前在《游戏灰度发布》中表述了在gateway与gameserver之间加一层proxy,以适应灰度发布的需要

现在再加上sidecar-proxy,整体的逻辑架构图就是这样的

image.png

proxy

这个proxy的意义:

  1. 灰度发布
  2. 路由功能,在需要发布时,热备一台gameserver,让proxy切换到热备机器
  3. 限流,在来不及开服时,可以先限流,保证高可用;当然一般来讲,开服时都有充足的预备机器,不太需要;在有大型活动时,可以用来分流
  4. 如果是世界服,这个proxy更有意义

sidecar-proxy

为什么需要这个proxy?

可以先设想一下,没有这个proxy,game-server在连接跨服时需要些什么?

  1. 建立连接,序列化/反序列化
  2. 路由功能,业务规则连接哪台跨服
  3. 负载均衡,跨服流量均衡
  4. 服务发现,增减跨服时,需要动态发现

如果想更新一下负载均衡算法,怎么办?想增加一些跨服治理的功能,怎么办?

只能等待发版时,跟随game-server升级更新

而且game-server会越来越臃肿,混合了大量服务治理的功能

有了sidecar-proxy,就可以把服务治理相关功能抽离出来,简化game-server,升级服务治理功能也及时方便

《游戏灰度发布》也提到高可用时

如果ha-proxy挂了,怎么办?就算game-server正常运行,也不能再提供服务,自己坑了自己

所以这儿需要一个proxy-cluster,当sidecar-proxy不能正常工作时,需要无缝切到proxy-cluster

每台物理机上可以放一台sidecar-proxy,当不能正常工作时,会切到cluster;当sidecar-proxy正常时,再切回来。

具体实现细节,下回分解,show you the code!

参考资料

Service Mesh: 下一代微服务 - 视频

Service Mesh:下一代微服务 - 文字

VIP_OSP--基于Thrift的RPC框架的基本原理



目录
相关文章
|
6月前
|
Kubernetes 网络协议 数据库
在Service Mesh内访问网格外的服务
阿里云服务网格ASM提供了访问外部服务的三种方式,包含设置外部服务访问策略、配置ServiceEntry和设置拦截对外访问的网段。本文介绍如何在服务网格ASM上访问外部服务。
96 0
|
运维 监控 安全
什么是service mesh?
什么是service mesh?
|
Prometheus 负载均衡 Kubernetes
Service Mesh: Istio vs Linkerd
根据CNCF的最新年度调查,很明显,很多人对在他们的项目中使用服务网格表现出了浓厚的兴趣,并且许多人已经在他们的生产中使用它们。近69%的人正在评估Istio,64%的人正在研究Linkerd。Linkerd是市场上第一个服务网格,但是Istio使服务网格更受欢迎。这两个项目都是最前沿的,而且竞争非常激烈,因此选择一个项目是一个艰难的选择。在此博客文章中,我们将了解有关Istio和Linkerd体系结构,其运动部件的更多信息,并比较其产品以帮助您做出明智的决定。
153 0
|
Kubernetes Linux 网络安全
Service Mesh 服务网格一:Sidecar模式
Service Mesh 服务网格一:Sidecar模式
Service Mesh 的实现,Google 的 Istio
Service Mesh 的实现,Google 的 Istio
93 0
|
负载均衡 Kubernetes Cloud Native
对 Service Mesh 望而却步?可能都没理解这一点
Service Mesh 发展已经有 6-7年的时间,很多人对 Service Mesh 只停留在知道的水平上,特别是很多技术人第一次接触到 Service Mesh,看到服务网格的解释,看到 Istio 的架构,对这门技术仍然云里雾里。实际上,劝退大多数人的不是技术,而是概念本身。
201 0
对 Service Mesh 望而却步?可能都没理解这一点
|
Kubernetes 测试技术 应用服务中间件
Kubernetes的service mesh – 第五部分:DogFood环境,Ingress和Edge路由
概述 在这篇文章中,我们将向您展示如何使用Linkerd实现的Service Mesh来处理Kubernetes上的入口流量,在Service Mesh中的每个实例上分发流量。我们还将通过一个完整的例子来介绍Linkerd的高级路由功能:如何将特定的请求路由到较新版本的应用实例上,比如用于内部测试的、预发布的应用版本。
1356 0
|
Kubernetes 监控 Devops
Service Mesh 介绍| 学习笔记
快速学习 Service Mesh 介绍
|
负载均衡 Java 微服务
服务网格(Service Mesh)是什么?
概述服务网格的概念,了解服务网格的作用及业界产品
357 1
|
负载均衡 Kubernetes 网络协议
Service Mesh对比:Istio与Linkerd
Service Mesh对比:Istio与Linkerd
1083 0
Service Mesh对比:Istio与Linkerd