微服务之旅:从Netflix OSS到 Istio Service Mesh

在这篇文章中,咱们从Netflix开始,经过Envoy和Istio的崛起,快速浏览微服务的历史.html

微服务是具备边界上下文的松散耦合服务,使您可以独立开发,部署和扩展服务。它还能够定义为构建独立开发和部署的分布式系统的架构模式。 在微服务架构中处理服务之间的通讯是一项挑战,由于它们须要在不可靠的网络中相互通讯。git

1. 微服务架构的复杂性

分布式应用的一个问题是它们经过网络进行通讯 - 这是不可靠的。所以,您须要以容错的方式设计您的微服务,并可以优雅地处理故障。 在您的微服务架构中,可能有不少服务相互通讯。 您须要确保一个服务宕机了,不会致使整个架构崩溃。github

微服务架构中有许多组件,所以这会带来更多的故障点。 故障可能由多种缘由引发 - 代码中的错误和异常,新代码的发布,部署问题,硬件故障,数据中心故障,不良的架构,缺少单元测试,不可靠的网络通讯,服务的依赖, 等等web

 

file

 

2. Netflix OSS to the Rescue

Netflix是最先采用微服务的公司之一。 为了跟上其增加速度,Netflix决定从庞大而单一的数据中心转向基于云的微服务架构,以实现高可用,大规模和速度。基于其成功案例,Netflix开源了许多工具/技术,为微服务架构提供支持。这些工具和组件已经成为许多企业从单体应用架构到微服务架构的驱动力。spring

Netflix OSS是Netflix开源的一组库和框架,用于解决设计大规模分布式系统的问题。 阅读有关Netflix开源软件中心的更多信息here.设计模式

Spring Boot能够轻松建立独立的、生产级的基于Spring的应用程序。 阅读更多有关信息here.安全

经过一些简单的注释,您能够快速启用和配置应用程序内的通用模块,并使用通过实战考验的Netflix组件构建大型分布式系统。 提供的模块包括服务发现(Eureka), 断路器 (Hystrix), 智能路由(Zuul)和客户端负载平衡(Ribbon)。网络

 

file

 

2.1. Netflix OSS的问题

  • Netflix库与Java平台紧密耦合,若是您在Java平台中开发服务,它们很是适合。可是,在多语言架构中,您须要查找Netflix以外的库来处理服务之间的通讯。
  • Netflix库须要嵌入到每个微服务中,并附带业务功能。这会致使应用程序膨胀,由于您须要在全部服务中复制相似的代码。
  • 同时具备业务逻辑和基础架构逻辑会增长总体应用程序的复杂性。
  • 因为您如今须要处理Netflix组件的修补/升级,所以也增长了操做复杂性。
  • 须要额外的工具来提升微服务体系结构的监控性。

 

file

 

3. 什么是Sidecar设计模式

sidecar 设计模式在云原生社区中愈来愈受欢迎并获得更普遍的采用。 构建具备高度可扩展性,弹性,安全性和可监控性的微服务架构具备挑战性。 Service Mesh架构的发展已经改变了游戏规则。它将与微服务架构相关的复杂性转移到单独的基础架构层,并提供许多功能,如负载平衡,服务发现,流量管理,断路,遥测,故障注入等。架构

 

file

 

3.1. 使用Sidecar模式的好处

  • 经过抽象与基础架构相关的常见功能到不一样的层,下降了微服务代码的复杂性。
  • 减小微服务架构中的代码重复,由于您不须要在每一个微服务中编写配置代码。
  • 提供应用程序代码和底层平台之间的松散耦合。

3.2. 如何实现Service Mesh

要实现服务网格,您能够在服务旁边部署代理。这也被称为Sidecar模式.。Sidecars从应用程序中抽象出复杂性,并处理服务发现,流量管理,负载平衡,断路器等功能。负载均衡

来自Lyft的Envoy是为云原生应用程序设计的最流行的开源代理。 Envoy与每项服务并行运行,并以平台无关的方式提供必要的功能。服务的全部流量都经过Envoy代理流通。

 

file

 

4. Istio 架构

Istio是一个很是受欢迎的Service Mesh框架,它默认使用Lyft的Envoy做为sidecar代理。Sidecar与每一个服务实例一块儿部署,它提供了一个界面来处理服务发现,负载平衡,流量管理,内部服务通讯,监控等功能。Service Mesh为您提供了再也不将服务与服务之间的通讯做为你应用程序代码的一部分的自由。您可让Service Mesh为您处理这种复杂性,而不是使您的微服务具备相似的功能。

Istio Service Mesh由两个主要组件组成:

  • 控制面板的职责是管理和配置sidecar代理以实施策略并收集遥测数据。
  • 数据面板的职责是处理服务之间的通讯,并负责服务发现,负载均衡,流量管理,健康检查等功能。

 

file

 

请参阅个人其余博客文章,了解有关Istio控制平面和数据平面的更多信息:

原文: dzone.com/articles/mi…

做者:Samir Behara

译者:KeepGoingPawn

 

相关文章
相关标签/搜索