Service Mesh微服务架构的崛起

SAMIR BEHARAgit

本文将解释Service Mesh相关概念,为何云原生应用须要它,以及这项技术被社区热烈拥抱、积极采用的缘由。github

绝不夸张地说,微服务已经席卷了整个软件行业。从Monolith过渡到微服务架构,可让咱们频繁、独立而可靠地部署应用。编程

然而,在微服务架构中,一切都不是绿色的,它必须处理在设计分布式系统时遇到的相同问题。安全

然而,微服务架构不是万能的,在设计分布式系统时会遇到不少有待解决的问题。说到这里,咱们不妨首先回顾一下关于分布式计算的8大谬误——微信

  • 网络是可靠的(The Network is Reliable)
  • 延迟为零(Latency is Zero)
  • 带宽是无限的(Bandwidth is Infinite)
  • 网络是安全的(The Network is Secure)
  • 拓扑不会改变(Topology does not Change)
  • 有一名管理员(There is one Administrator)
  • 传输成本为零(Transport Cost is Zero)
  • 网络是同质的(The Network is Homogenous)

在微服务体系结构中,对于网络的依赖带来了可靠性问题。随着服务数量的增长,咱们必须处理它们之间的交互,监视整个系统的健康情况,处理容错、日志记录,处理多个故障点等等。每一个微服务都须要有这些共同的功能,以便服务通讯是平滑和可靠的。可是,若是你要处理几十上百个微服务,操做难度光是听起来就有些吓人。网络

什么是服务网格?

Service Mesh能够定义为在微服务体系结构中处理服务间通讯的基础结构层,它减小了与微服务体系结构相关的复杂性,并提供了许多治理功能,如 -架构

  • 负载均衡(Load Balancing)
  • 服务发现(Service Discovery)
  • 健康检查(Health Check)
  • 身份验证(Authentication)
  • 流量管理和路由(Traffic Management & Routing)
  • 断路和故障转移(Circuit Breaking and Failover Policy)
  • 安全(Security)
  • 监控(Metrics & Telemetry)
  • 故障注入(Fault Injection)

为何须要Service Mesh?

在微服务架构中,处理服务到服务的通讯是企业IT的一大挑战。大多数时候,咱们须要依赖第三方库或者组件来提供服务发现、负载均衡、断路器、监控等功能。像Netflix这样的公司,他们开发了本身的库,好比Hystrix for Circuit Breaker、Eureka for Service Discovery、Ribbon for Load balanced等,在其组织中获得了普遍的使用。负载均衡

然而,这些组件须要在应用代码中进行配置,并且语言不一样,实现方式策略也会有所不一样。在升级这些外部组件时,咱们须要更新应用、验证并部署全部改动。如此便产生了一个问题,咱们的应用代码编程了业务和这些附加配置混合体。这种紧密耦合增长了整个应用的复杂性——开发人员如今还须要了解这些组件是如何配置的,以便在遇到任何问题时可以排除故障。运维

Service Mesh适时出现,将复杂性从应用中分离了出来,并将其放入服务代理(service proxy)代为处理。这些服务代理提供了如流量控制、断路、服务发现、身份验证、监控、安全性等等功能特性。那么对于应用来讲,只须要关心业务功能的实现便可。分布式

假设在咱们的微服务体系结构中,您有5个服务相互通讯。与其在每一个微服务中构建配置、路由、遥测、日志记录、断路等常见的必要功能,不如将其抽象为一个单独的组件——这里称为“服务代理”(service proxy)。

随着Service Mesh的引入,责任的划分变得清晰,开发人员的生活也更加轻松——若是存在问题,开发人员能够根据应用程序或网络相关的缘由,轻松地肯定根源。

Service Mesh是如何实现的?

要实现Service Mesh,能够将代理与服务一块儿部署,该模式被称为sidecar。

Sidecars抽象了应用程序的复杂性,处理了诸如服务发现、流量管理、负载平衡、线路中断等功能。

Lyft的Envoy是目前很是流行的云原生应用开源代理。特使在每一个服务旁运行,并以平台无关的方式提供必要的特性。全部到咱们的服务的流量都经过特使代理。

而Istio是一个链接、管理和保护微服务的开放平台。它在Kubernetes社区很是流行,并被普遍采用。

在这一点上,Istio是服务网格的最佳实现之一,它使咱们可以在不深刻了解底层基础设施的状况下部署微服务。

开源PaaS Rainbond在v3.6.0版本中加入了Service Mesh开箱即用的特性,主要特色包括业务代码无入侵、跨语言&跨协议、支持主流微服务架构、经过插件式扩展来实现治理功能等。


关于Rainbond

Rainbond是一款以应用为中心的开源PaaS,由好雨基于Docker、Kubernetes等容器技术自主研发,可做为公有云或私有云环境下的应用交付平台、DevOps平台、自动化运维平台和行业云平台,或做为企业级的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服务架构治理工具。

相关文章
相关标签/搜索