当前位置:首页 > 科技  > 软件

一篇聊透云原生中的服务网格

来源: 责编: 时间:2024-05-09 17:56:38 115观看
导读服务网格服务网格是一种软件架构模式,用于管理和连接微服务架构中的服务。它提供了一种方法,使得微服务之间的通信变得更加可靠、安全和灵活。服务网格通常由一组轻量级的代理程序组成,这些代理程序负责处理服务之间的通

服务网格

服务网格是一种软件架构模式,用于管理和连接微服务架构中的服务。它提供了一种方法,使得微服务之间的通信变得更加可靠、安全和灵活。服务网格通常由一组轻量级的代理程序组成,这些代理程序负责处理服务之间的通信,管理流量、安全性、监控和其他相关的任务。它们还可以提供诸如负载均衡、故障转移和自动伸缩等功能,从而帮助确保整个微服务架构的可靠性和可伸缩性。Istio 和 Linkerd 是两个常见的服务网格实现。ANB28资讯网——每日最新资讯28at.com

图片图片ANB28资讯网——每日最新资讯28at.com

特点

作为应用程序间通信的中间层

  • 服务网格充当了应用程序之间通信的中间层。它们位于微服务架构中服务之间的通信路径上,负责管理和控制所有的通信流量。
  • 这种中间层的存在使得服务之间的通信变得更加可靠,因为它们可以处理通信中的许多复杂性,例如负载均衡、故障转移和安全性等。

轻量级网络代理

  • 服务网格通常由轻量级的网络代理组成,这些代理直接嵌入到应用程序或者与应用程序运行在同一主机上。
  • 这些代理负责拦截和处理服务之间的所有通信,执行所需的功能,例如流量管理、安全性、监控等。

应用程序无感知

  • 服务网格的设计目标之一是使得应用程序无需感知网格的存在。应用程序可以专注于自己的业务逻辑,而无需处理底层的通信细节。
  • 这种无感知性意味着在将应用程序部署到服务网格中时,不需要对应用程序进行任何修改。

解耦应用程序的重试/超时、监控、追踪和服务发现

  • 服务网格解耦了与通信相关的许多关注点,包括重试、超时、监控、追踪和服务发现等。
  • 通过将这些功能从应用程序中抽象出来并集中管理,服务网格可以提供统一的解决方案来处理这些问题,从而降低了应用程序开发人员的负担,并提高了整个架构的可维护性和可靠性。

功能

服务发现

  • 服务网格可以自动发现和注册微服务实例,并将它们的位置信息存储在服务注册表中。这使得其他服务能够动态地找到并与所需的服务进行通信,而无需硬编码服务的位置信息。

负载均衡

  • 服务网格可以根据预先定义的负载均衡策略,将请求均匀地分配到可用的服务实例上。这有助于提高系统的性能和可伸缩性,确保每个服务实例都能够有效地处理流量。

加密通信

  • 通过加密通信功能,服务网格可以确保微服务之间的通信是安全的。它可以使用诸如TLS(传输层安全性)等加密协议来加密通信流量,以防止敏感数据在传输过程中被窃取或篡改。

观察与追踪微服务之间的拓扑

  • 服务网格可以提供观察和追踪微服务之间通信拓扑的功能。这包括监控服务之间的通信模式、识别潜在的性能瓶颈和故障点,并提供实时的监控指标和分析报告。

服务之间访问的鉴权与授权

  • 通过鉴权与授权功能,服务网格可以确保只有经过授权的服务和用户才能够访问特定的服务。它可以实施访问控制策略,例如基于角色的访问控制(RBAC)或令牌验证,以确保服务之间的安全通信。

熔断机制

  • 熔断机制是服务网格提供的一种故障处理机制,用于防止故障的传播和影响系统的稳定性。当检测到某个服务出现故障或响应时间超过阈值时,熔断机制可以暂时停止将流量发送到该服务,以避免对整个系统产生负面影响。

数据平面

通过接收控制面发送的路由与控制信息来定向转发或处理数据。ANB28资讯网——每日最新资讯28at.com

当谈到服务网格时,这些特点是其核心功能之一,它们通过数据面和控制面的配合来实现。ANB28资讯网——每日最新资讯28at.com

服务发现

  • 服务网格通过服务发现功能来发现后端服务实例中哪些是可用的。这意味着当新的服务实例被部署或旧的实例被移除时,服务网格能够自动检测到这些变化并更新服务发现的信息。

健康检查

  • 健康检查功能允许服务网格定期向服务发送心跳,以检测服务实例是否存活。如果服务实例未能及时响应健康检查请求,服务网格将其标记为不可用,并停止将流量发送到该实例。

鉴权

  • 通过鉴权功能,服务网格可以对访问请求进行加解密验证,以确保只有经过授权的请求才能够访问服务。这有助于保护服务免受未经授权的访问或攻击。

负载均衡

  • 负载均衡功能使服务网格能够对多个下游服务进行流量的均衡分配。这确保了在负载增加时,流量能够被有效地分发到各个服务实例上,从而提高了系统的性能和可用性。

流量统计

  • 通过流量统计功能,服务网格可以对每个请求的流量进行统计,并生成相应的监控数据和追踪信息。这些统计数据可以用于分析系统的性能、诊断问题和优化服务架构。

熔断限流

  • 熔断限流功能允许服务网格确定最大的查询率(QPS)、最大并发数等限制,并在达到这些限制时拒绝新的请求。这有助于保护后端服务免受过载的影响,并提高整个系统的稳定性和可靠性。

数据面和控制面的配合

  • 数据面主要负责接收系统中的每个请求和包,并根据预先配置的规则和策略来处理流量。常见的数据面包括Envoy、HAProxy、Nginx等。
  • 控制面则负责管理和配置数据面,包括配置服务发现、健康检查、鉴权规则、负载均衡策略等。常见的控制面包括Istio、SmartStack等。控制面与数据面的配合使得服务网格能够灵活地管理和控制服务之间的通信,实现高度可靠和可扩展的微服务架构。

控制面

服务网格的控制面是指服务网格架构中负责管理和配置数据面的部分。它通常由一组组件组成,这些组件负责实现服务发现、流量管理、安全控制、监控、故障处理等功能。控制面的主要任务是为数据面提供所需的配置信息,以确保服务网格能够按照预期的方式运行,并满足各种业务需求和运维要求。ANB28资讯网——每日最新资讯28at.com

图片图片ANB28资讯网——每日最新资讯28at.com

服务发现

管理和维护服务注册表,跟踪服务实例的可用性和位置,以便数据面能够将流量正确地路由到目标服务。ANB28资讯网——每日最新资讯28at.com

流量管理

配置负载均衡、路由规则、限流策略等,以确保流量能够按照预期的方式在服务之间进行传输,并保证服务的可用性和性能。ANB28资讯网——每日最新资讯28at.com

安全控制

实施安全策略,例如认证、授权、加密解密等,以保护服务之间的通信安全,并防止未经授权的访问和数据泄露。ANB28资讯网——每日最新资讯28at.com

监控和指标收集

收集和分析服务之间的通信数据、性能指标和错误信息,以便进行故障诊断、性能优化和资源规划。ANB28资讯网——每日最新资讯28at.com

故障处理

实施故障检测、熔断、重试等机制,以确保在服务发生故障或不可用时能够及时地进行处理,保障整个系统的稳定性和可靠性。ANB28资讯网——每日最新资讯28at.com

常见的服务网格控制面包括 Istio、Linkerd 控制平面等。这些控制面组件通常以集群部署方式运行,与数据面组件(如 Envoy、HAProxy 等)协同工作,共同构建出高度可靠和高度可扩展的服务网格架构。ANB28资讯网——每日最新资讯28at.com

服务网格的优点

解耦微服务业务架构和服务控制

服务网格实现了微服务业务逻辑与底层服务控制的解耦。微服务只需专注于实现自己的业务逻辑,而不必在代码中繁琐配置与服务通信相关的依赖库和配置项。这种解耦使得微服务开发更加简洁和高效。ANB28资讯网——每日最新资讯28at.com

抽象共性需求,统一实现

服务网格将微服务中常见的共性需求(如流量统计、trace埋点、限流控制等)抽象出来,作为统一的实现层。这些功能由基础架构团队负责实现,并通过服务网格的统一部署方式,为所有微服务提供支持。这样一来,不同微服务间不再需要重复编码这些通用功能,极大地提高了开发效率和代码复用性。ANB28资讯网——每日最新资讯28at.com

业务开发者专注于业务逻辑

有了服务网格,业务开发者不再需要分心关注微服务的共性需求和底层服务控制,可以更专注地投入到业务逻辑的实现上。这使得开发人员能够更快速、高效地迭代业务功能,加速产品上线和迭代。ANB28资讯网——每日最新资讯28at.com

统一升级和维护

服务网格的统一实现层由基础架构团队负责升级和维护,业务开发者无需担心底层服务控制的变化和更新。这降低了微服务的维护成本,同时保证了整个微服务架构的稳定性和可靠性。ANB28资讯网——每日最新资讯28at.com

提升组织效率

通过将共性需求抽象为服务网格的统一实现层,并由基础架构团队统一维护,服务网格提高了组织的整体效率。业务开发者能够更专注于业务功能的实现,基础架构团队则负责提供稳定可靠的底层服务控制,使得整个组织能够更快速、高效地实现业务目标。ANB28资讯网——每日最新资讯28at.com

服务网格的技术栈

服务网格的技术栈通常包括以下几个方面的技术和工具ANB28资讯网——每日最新资讯28at.com

代理和数据面

  • 代理和数据面组件负责处理服务之间的通信流量,执行负载均衡、安全性、监控等功能。

EnvoyANB28资讯网——每日最新资讯28at.com

HAProxyANB28资讯网——每日最新资讯28at.com

NGINXANB28资讯网——每日最新资讯28at.com

控制面

  • 控制面负责管理和配置数据面,实现服务发现、流量管理、安全控制、监控等功能。

IstioANB28资讯网——每日最新资讯28at.com

LinkerdANB28资讯网——每日最新资讯28at.com

ConsulANB28资讯网——每日最新资讯28at.com

监控和指标收集

  • 监控和指标收集组件用于收集和分析服务之间的通信数据、性能指标和错误信息。

PrometheusANB28资讯网——每日最新资讯28at.com

GrafanaANB28资讯网——每日最新资讯28at.com

ZipkinANB28资讯网——每日最新资讯28at.com

JaegerANB28资讯网——每日最新资讯28at.com

安全性和鉴权

  • 安全性和鉴权组件用于实现对服务之间通信的加密、认证和授权。

JWT(JSON Web Token)ANB28资讯网——每日最新资讯28at.com

OAuth2ANB28资讯网——每日最新资讯28at.com

SPIFFE(Secure Production Identity Framework for Everyone)ANB28资讯网——每日最新资讯28at.com

服务发现

  • 服务发现组件用于发现和注册微服务实例,以便其他服务能够动态地找到并与它们进行通信。常见的服务发现工具包括

ConsulANB28资讯网——每日最新资讯28at.com

etcdANB28资讯网——每日最新资讯28at.com

ZooKeeperANB28资讯网——每日最新资讯28at.com

流量管理

  • 流量管理组件用于配置负载均衡、路由规则、限流策略等,以确保流量能够按照预期的方式在服务之间进行传输。

KongANB28资讯网——每日最新资讯28at.com

TraefikANB28资讯网——每日最新资讯28at.com

AmbassadorANB28资讯网——每日最新资讯28at.com

熔断和故障处理

  • 熔断和故障处理组件用于实现故障检测、熔断、重试等机制,以确保在服务出现故障或不可用时能够进行适当的处理。

HystrixANB28资讯网——每日最新资讯28at.com

Istio Circuit BreakerANB28资讯网——每日最新资讯28at.com

我们来总结一下,服务网格的技术栈涵盖了代理和数据面、控制面、监控和指标收集、安全性和鉴权、服务发现、流量管理以及熔断和故障处理等方面的技术和工具。ANB28资讯网——每日最新资讯28at.com

技术栈图

我们可以使用plantuml画出对应的用例图ANB28资讯网——每日最新资讯28at.com

@startumlleft to right directionactor 用户 as Userpackage "服务网格技术栈" {    usecase "代理和数据面" as Proxy    usecase "控制面" as ControlPlane    usecase "监控和指标收集" as Monitoring    usecase "安全性和鉴权" as Security    usecase "服务发现" as ServiceDiscovery    usecase "流量管理" as TrafficManagement    usecase "熔断和故障处理" as CircuitBreaker    User --> Proxy : 发送请求    User --> ControlPlane : 配置服务规则    User --> Monitoring : 查看监控数据    User --> Security : 进行认证和授权    User --> ServiceDiscovery : 发现可用服务    User --> TrafficManagement : 配置负载均衡    User --> CircuitBreaker : 设置故障处理策略    ControlPlane --> Proxy : 下发配置    ControlPlane --> Monitoring : 收集指标    ControlPlane --> Security : 实施安全策略    ControlPlane --> ServiceDiscovery : 更新服务列表    ControlPlane --> TrafficManagement : 配置路由规则    ControlPlane --> CircuitBreaker : 触发熔断    Proxy --> ControlPlane : 上报状态    Proxy --> Monitoring : 发送监控数据    Proxy --> Security : 执行安全操作    Proxy --> ServiceDiscovery : 查询服务列表    Proxy --> TrafficManagement : 处理流量策略    Proxy --> CircuitBreaker : 进行故障检测    Monitoring --> ControlPlane : 提供监控数据    Monitoring --> Proxy : 收集代理状态    Monitoring --> Security : 记录安全事件    Monitoring --> ServiceDiscovery : 分析服务拓扑    Monitoring --> TrafficManagement : 分析流量分布    Monitoring --> CircuitBreaker : 监控故障情况}@enduml

图片图片ANB28资讯网——每日最新资讯28at.com

这个用例图描述了服务网格技术栈中各个组件之间的交互关系以及用户如何使用这些技术来实现不同的功能。ANB28资讯网——每日最新资讯28at.com

用户

表示使用服务网格的终端用户或系统用户,他们通过与不同的技术组件进行交互,来达到他们的目标。ANB28资讯网——每日最新资讯28at.com

代理和数据面

代表了处理服务之间通信流量的组件。它们与用户交互,处理用户发送的请求,并向控制面报告状态。同时,它们也与控制面、监控和指标收集、安全性和鉴权、服务发现、流量管理以及熔断和故障处理等组件进行交互,以执行相应的功能。ANB28资讯网——每日最新资讯28at.com

控制面

负责管理和配置数据面,实现服务发现、流量管理、安全控制、监控等功能。它接收来自用户的配置请求,并将配置信息下发到数据面,同时收集来自数据面的状态和监控信息,以便进行相应的调整和优化。ANB28资讯网——每日最新资讯28at.com

监控和指标收集

负责收集和分析服务之间的通信数据、性能指标和错误信息。它与用户交互,提供监控数据给用户查看,并与控制面、代理和数据面等组件进行交互,以实现监控和诊断功能。ANB28资讯网——每日最新资讯28at.com

安全性和鉴权

实施对服务之间通信的加密、认证和授权。它与用户进行交互,执行安全操作,并与控制面、代理和数据面等组件进行交互,以保护服务之间的通信安全。ANB28资讯网——每日最新资讯28at.com

服务发现

负责发现和注册微服务实例,以便其他服务能够动态地找到并与它们进行通信。它与用户交互,提供服务发现功能,并与控制面、代理和数据面等组件进行交互,以更新服务列表和服务拓扑。ANB28资讯网——每日最新资讯28at.com

流量管理

负责配置负载均衡、路由规则、限流策略等,以确保流量能够按照预期的方式在服务之间进行传输。它与用户进行交互,提供流量管理功能,并与控制面、代理和数据面等组件进行交互,以配置和调整流量策略。ANB28资讯网——每日最新资讯28at.com

熔断和故障处理

负责实施故障检测、熔断、重试等机制,以确保在服务出现故障或不可用时能够进行适当的处理。它与用户进行交互,提供熔断和故障处理功能,并与控制面、代理和数据面等组件进行交互,以监控和处理故障情况。ANB28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-87680-0.html一篇聊透云原生中的服务网格

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何使用Rollup开发一个npm包并发布

下一篇: 基于原生的跨模块资源访问

标签:
  • 热门焦点
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 轿车从天而降电动车主被撞身亡 超速抢道所致:现场视频让网友吵翻

    轿车从天而降电动车主被撞身亡 超速抢道所致:现场视频让网友吵翻

    近日,上海青浦区法院判决轿车从天而降电动车主被撞身亡案,轿车车主被判有期徒刑一年。案件显示当时男子驾驶轿车在上海某路段行驶,前车忽然转弯提速超车,
  • JavaScript 混淆及反混淆代码工具

    JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • Raft算法:保障分布式系统共识的稳健之道

    Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 如何使用JavaScript创建一只图像放大镜?

    如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 新电商三兄弟,“抖快红”成团!

    新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • ESG的面子与里子

    ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
Top