java架构师指南:介绍微服务架构 service mesh的工作原理

微服务架构将软件功能隔离为多个独立的服务,这些服务可以独立部署,高度可维护和可测试,并且围绕特定的业务功能进行组织。
  这些服务通过简单的,可通用访问的API相互通信。在技??术层面,微服务可以实现大型复杂应用程序的连续交付和部署。在更高的业务水平上,微服务有助于为试图在快速发展的市场中实现敏捷性的公司提供速度,可伸缩性和灵活性。
  java架构师指南:介绍微服务架构 service mesh的工作原理

但是,如前所述,微服务架构会很快变得复杂。我们如何处理这种复杂性?
  servicemesh是一种基础结构层,允许我们的服务实例相互通信。servicemesh还允许我们配置服务实例如何执行关键操作,例如服务发现,负载平衡,数据加密以及身份验证和授权。
  因为servicemesh提供了一层抽象(应用程序代码通常不了解servicemesh执行的工作),所以我们获得了很大的灵活性;例如,我们可以将微服务移至其他服务器或集群,而无需重写应用程序。实际上,servicemesh使管理微服务的最无聊和重复的工作自动化。
  servicemesh是如何工作的?
  服务网格的体系结构分为两个不同的部分:数据平面和控制平面。
  数据平面实质上是处理服务之间通信的代理服务。在Istio中,数据平面被部署为sidecar,这是添加到主应用程序中的支持服务。例如,在Kubernetes基础架构中,代理与具有共享网络名称空间的应用程序部署在同一个pod中。
  数据平面还提供对微服务的可观察性,尤其是以日志和度量标准聚合的形式。
  NGINX,HAProxy和Envoy均提供数据平面功能。尤其是Envoy,已成为广受欢迎的代理,因为它专门用于微服务体系结构,提供用于配置的动态API并增强了可观察性。
  同时,控制平面,监控数据平面的策略和配置-它不处理任何数据。Nelson,SmartStack和Istio等工具都以某种形式提供控制面板功能,并且每种工具都有自己的策略来管理与代理的关系。例如,在Kubernetes中,控制平面与业务流程系统协同工作,以调度服务及其代理,跟踪服务发现并通过API配置代理。
  我们可以将Envoy作为没有控制平面的独立代理运行,但这是Istio对控制平面/数据平面工作流的独特方法,以及其与Envoy结合使用时的核心功能(流量管理,安全性,可观察性)功能齐全的服务网格越来越吸引着许多用户
  推荐阅读:java架构师指南之架构师的工作流程