微服务和服务网格有什么区别,Istio告诉你

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 微服务和服务网格有什么区别,Istio告诉你

目录

        微服务架构的好处

微服务架构的组件

微服务架构的复杂性

为什么我们需要服务网格?

服务网格架构的组件

微服务的业务逻辑

基本网络功能

应用网络功能

服务网格控制平面

使用Istio实施服务网格

Istio的核心能力

核心Istio组件



当组织将应用程序分解为多个较小的服务组件时,即称为微服务。与传统的单体应用方式相比,微服务架构将每个微服务视为独立的实体/模块,从根本上有助于简化其代码和相关基础架构的维护。应用程序的每个微服务还可以使用不同的技术编写,还可以独立地部署,优化和管理。

尽管从理论上讲,微服务架构特别有利于复杂的大型应用程序的构建,但是,它也被广泛用于小型应用程序的构建(例如,简单的购物车),还能够满足进一步扩展的需求。


微服务架构的好处

  • 可以通过不同的技术栈来开发和部署应用程序中的各个微服务。
  • 每个微服务都可以独立优化,部署或扩展。
  • 更好的故障处理和错误检测。


微服务架构的组件

在微服务架构上运行的现代云原生应用程序依赖于以下关键组件:

  • 容器化(类似Docker的平台)-通过将服务分成多个进程来进行有效的管理和部署。
  • 编排(类似Kubernetes之类的平台)-用于配置,分配和管理服务的可用系统资源。
  • 服务网格(类似Istio的平台)-通过服务代理网格进行服务间通信,以连接,管理和保护微服务。

以上三个是微服务架构中最重要的组件,这些组件允许云原生中的应用程序在负载下扩展,甚至在故障期间也能执行。


微服务架构的复杂性

大型应用程序分解为多个微服务时,每个微服务可能使用不同的技术栈(开发语言,数据库等),需要把这些环境来形成一个复杂的体系结构进行管理。尽管Docker容器化通过将每个微服务划分为在单独的容器中运行,来帮助管理和部署单个微服务,但是由于必须处理整体系统运行状况,容错和多个故障点,因此服务间通信仍然非常复杂。

让我们通过购物车如何在微服务架构上工作来了解这一点。这里的微服务有库存服务,支付网关服务,基于客户访问历史的产品建议算法服务等。尽管所有这些服务在理论上都保持为独立的微型模块,但它们确实需要彼此交互。

所以, 服务到服务的通信才使微服务成为可能


为什么我们需要服务网格?

既然你知道了微服务体系结构中服务到服务通信的重要性,那么很明显,通信通道需要保持无故障,安全,高可用性和健壮性。而这恰恰是服务网格作为基础结构组件出现的地方,它通过实现多个服务代理来确保受控的服务到服务通信。服务网格负责不同服务之间的通信,而不是添加新功能。

在服务网格中,与单个服务一起部署的代理可以实现服务之间的通信,这被广泛称为Sidecar模式。Sidecar(代理)被设计为处理服务间通信的任何功能,例如负载均衡,断路器,服务发现等。

通过服务网格,你可以:

  • 维护,配置和保护应用程序中所有或选定的微服务之间的通信。
  • 在微服务中配置和执行网络功能,例如网络弹性,负载均衡,网络中断,服务发现等。
  • 网络功能与业务逻辑相分离,耦合性低。因此,开发人员可以专注于应用程序的业务逻辑,而与网络通信相关的所有或大部分工作都由服务网格来处理。
  • 由于服务到服务的代理通信使用的是诸如HTTP1.x / 2.x,gRPC等标准协议,因此开发人员可以使用任何技术来开发单个服务。


服务网格架构的组件

微服务的业务逻辑

业务逻辑包含微服务的核心应用程序逻辑和基础代码,以及服务到服务的集成逻辑。由于微服务架构的优势,因此可以在任何平台上编写业务逻辑,并且业务逻辑完全独立于其他服务。


基本网络功能

这包括微服务使用基本网络功能来发起请求并与服务网格代理连接。尽管微服务中的主要网络功能是通过服务网格来处理的,但是给定的服务必须包含基本网络功能才能与Sidecar代理连接。


应用网络功能

与基本网络功能不同,此组件是通过服务代理维护和管理网络的关键功能,包括网络中断,负载均衡,服务发现等。


服务网格控制平面

所有服务网格代理,都由控制平面集中管理和控制。通过控制平面,你可以指定身份验证策略,度量标准生成策略,并在整个网格中配置服务代理。


使用Istio实施服务网格

尽管有其他几种服务网格,但最受欢迎的是Istio。我们将使用Istio探索云原生应用程序的Service Mesh架构。

如以上各节所述,在微服务体系结构中, Istio通过形成基础结构层来实现此目的,以连接,保护和控制分布式服务之间的通信。Istio 在每个服务旁边部署一个 Istio代理(称为Istio sidecar),而该服务本身的代码更改几乎很少或没有。所有服务间流量都定向到Istio代理,该代理使用策略控制服务间通信,同时实施部署,故障注入和断路器的基本策略。


Istio的核心能力

  • 通过身份验证和授权来保护服务间通信。
  • 支持访问控制,资源配额和资源分配的策略层。
  • 支持HTTP,gRPC,WebSocket和TCP通信的负载均衡。
  • 集群内所有流量的度量,日志和跟踪,包括集群的入口和出口。
  • 通过故障转移,故障注入和路由规则,来配置和控制服务间通信。

Istio不依赖与任何平台,这意味着它可以在多种环境中运行,包括云,本地,Kubernetes等。Istio当前支持:

  • Kubernetes上的服务部署
  • 在 Consul注册的服务
  • 在单个虚拟机上运行的服务


核心Istio组件

 

Istio服务网格由数据平面控制平面组成

  • 数据平面由多个服务代理(通过 Envoy)组成,而微服务之间Sidecar的通信是通过 策略控制和遥测收集 (通过 Mixer )实现。
  • 控制平面通过PilotCitadelGalley 管理和配置Sidecar代理之间的通信。Citadel 用于密钥和证书管理。Pilot 将授权策略和安全命名信息分发给代理 -- 主要用于服务发现和服务配置(服务访问规则维护),Pilot中的adapter机制可以适配各种服务发现组件(Eureka、Consul、Kubenetes),最好的是Kubernetes。Galley 验证规则(Pilot、Mixer、Citadel配置的规则)。

控制平面主要是对数据平面组件的管理和维护,因此形成了Istio Service Mesh最重要的层。


在本文中,我们了解了服务网格对于微服务体系结构至关重要,以及Istio如何解决服务间的通信。


译文链接: https://dzone.com/articles/explaining-microservices-and-service-mesh-with-ist



目录
相关文章
|
4月前
|
安全 测试技术 开发者
探索服务网格技术:Istio的奥秘与力量
【6月更文挑战第1天】本文介绍了服务网格技术的代表Istio,它是处理服务间通信的基础设施层,由Google、IBM和Lyft联合开发。Istio提供流量管理、安全和可观察性等功能,支持灰度发布、蓝绿部署等,并确保通信安全。适用于微服务治理、多云环境和复杂网络拓扑,尤其适合安全敏感应用。理解Istio有助于解决微服务架构中的挑战。
|
5月前
|
敏捷开发 运维 监控
探索微服务架构下的服务网格
【5月更文挑战第29天】 在现代软件开发的复杂多变环境中,微服务架构已成为构建分布式系统的热门选择。随着其应用的广泛化,服务网格(Service Mesh)这一概念应运而生并迅速崛起,它旨在提供一种透明且高效的方式来管理服务间的通信。本文将深入探讨服务网格的核心组件、运作机制以及如何通过服务网格优化微服务架构。我们还将讨论服务网格引入的挑战与克服这些挑战的策略,为采用微服务的企业提供指导和见解。
|
2月前
|
运维 负载均衡 监控
探索微服务架构下的服务网格(Service Mesh)实践之路
【8月更文挑战第30天】 在当今日益复杂的分布式系统中,微服务架构已成为众多企业解决系统扩展与维护难题的利器。然而,随着服务的不断增多和网络交互的复杂性提升,传统的微服务管理方式开始显得力不从心。服务网格(Service Mesh)作为一种新兴的解决方案,旨在通过提供应用层的网络基础设施来简化服务间通讯,并增强系统的可观察性和安全性。本文将分享我在采用服务网格技术过程中的经验与思考,探讨如何在现代云原生环境中有效地实施服务网格,以及它给开发和运维带来的变革。
|
2月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
2月前
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
40 1
|
2月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
65 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
2月前
|
Kubernetes 安全 Cloud Native
解锁安全新纪元:利用服务网格Istio,打造全链路mTLS加密隧道,从入口网关到出口网关,守护数据安全的每一步
【8月更文挑战第2天】随着云原生技术的发展,服务网格(Service Mesh)如Istio已成为微服务架构的核心,通过双向TLS(mTLS)确保通信安全。首先,在Kubernetes部署Istio以管理服务通信。接着,配置入口网关实现所有入向流量的加密处理,防止数据泄露。最后,通过配置Sidecar代理如Envoy,确保服务网格安全访问外部mTLS服务,从而构建起全链路的数据安全防护。
59 11
|
3月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
3月前
|
敏捷开发 设计模式 运维
探索微服务架构中的服务网格
【7月更文挑战第30天】在现代软件工程中,微服务架构因其灵活性和可扩展性而备受推崇。然而,随着系统规模的扩大,服务之间的通信和管理变得日益复杂。服务网格作为解决这一问题的新兴技术,提供了一种透明、可靠的服务到服务通信方式。本文将深入探讨服务网格的核心概念、实现原理以及其在微服务架构中的应用实践,为读者呈现一个关于如何利用服务网格优化微服务间通信的全景视图。
41 0
|
4月前
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
486 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?

相关产品

  • 服务网格
  • 下一篇
    无影云桌面