istio学习笔记2:边车模式sidecar

Sidecar 是什么

将本将属于应用程序的功能拆分成单独的进程,这个进程可以被理解为sidecar。在微服务体系内,将集成在应用内的微服务功能剥离到了sidecar内,sidecar提供了微服务发现、注册,服务调用,应用认证,限速等功能。

将服务治理功能从应用本身剥离出来作为单独进程,与主应用程序共同放在一台主机(Host)中,但会将它们部署在各自的进程或容器中。这种方式也被称为 Sidecar(边车)模式。

简单来说,Sidecar 注入会将额外容器的配置添加到 Pod 模板中。

特点:

  1. sidecar为独立部署的进程。
  2. sidecar降低应用程序代码和底层代码的耦合度,帮助异构服务通过sidecar快速接入微服务体系。

而Envoy代理扮演的就是 Sidecar 的角色。下一章会详细讲envoy

优点

  1. 通过将服务治理相关功能抽象到不同的层来降低微服务的代码复杂性
  2. 在运行时环境和编程语言方面,Sidecar 独立于其主要应用程序,不需要为每个微服务编写服务治理功能的代码,减少了微服务架构中的代码重复。
  3. Sidecar 可以访问与主应用程序相同的资源。例如,Sidecar 可以监视 Sidecar 本身和主应用程序使用的系统资源。
  4. 由于它靠近主应用程序,因此在它们之间进行通信时没有明显的延迟。
  5. 降低了应用与底层平台的耦合度。

Sidecar 如何工作

下图为异构服务通过sidecar接入注册中心。异构服务本身可能为非Java或传统应用,接入困难。

异构服务本身不会和注册中心有请求调用,而是通过sidecar代理注册接入注册中心,获得服务注册、发现等功能。 从根本上讲,Istio的工作原理是以Sidcar的形式将Envoy的扩展版本作为代理布署到每个微服务中:

一些关于sidecar的扩展阅读

    了解Sidecar模式: https://waylau.com/sidecar-pattern/ Sidecar模式:下一代微服务架构的关键: http://2368.grd9dcf7.64q1jlfb.17f4cc.grapps.cn/2018/07/30/tech-20180730/
经验分享 程序员 微信小程序 职场和发展