微服务的下一步,离不开服务网格

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 软件行业走了很长一段路,在整个过程中,软件体系结构也已经发展了很多。经历了1层(单节点),2层(客户端/服务器),3层和分布式,我们在此过程中看到了一些不同的软件架构模式。

2222.jpeg

软件行业走了很长一段路,在整个过程中,软件体系结构也已经发展了很多。经历了1层(单节点),2层(客户端/服务器),3层和分布式,我们在此过程中看到了一些不同的软件架构模式。

微服务面临的挑战

大多数软件公司,正从单体架构(Monolithic)过渡到微服务架构(Microservices),而微服务架构(Microservices)也正在逐步接管软件行业。单体架构虽然有很多好处,但在满足现代软件开发需求时也有很多缺点。

微服务架构使我们能够更频繁,更独立地部署应用程序,并可靠地满足现代软件应用程序开发要求。


image.gifc5cb830d83ba3d68378a34d28cd3814e.png

将单体应用分解为微服务应用


微服务架构几乎解决了单体架构的所有缺点。微服务提供了故障隔离,满足应用更小,更快的部署,具备应用的可伸缩性,使得不同服务可以采用不同的开发技术,提高了开发效率,满足了以业务为中心的需求。

尽管微服务架构相对于其他架构具有许多优势,但它也面临着一系列挑战。在微服务体系结构中,它必须处理与设计分布式系统时遇到的问题。

微服务架构背后的思想是,我们将拥有多个独立的较小服务集,每个服务提供单独的业务功能,而不是拥有一个大型的单个代码库。通过这种方法,现代软件应用程序将需要几十个、甚至数百个单独服务的协同工作。

通过微服务架构,引入了网络依赖,并引发了可靠性问题。网络可靠性,延迟,带宽和网络安全性,是我们必须处理的一些与网络相关的挑战。

在服务之间实现通信也将是一项艰巨的任务。随着服务数量的增加,我们必须处理它们之间的交互。除了服务之间的通信外,我们还必须处理整个系统运行状况的监视,容错,日志记录和遥测功能,处理多点故障等等。使用微服务架构,由于我们必须处理许多服务间通信和基础网络,因此调试问题可能会更加棘手。

随着基于第三方类库和组件的引入,克服了与微服务体系结构有关的上述挑战,每个服务也都具备了这些通用功能(监视,运行状况检查,日志记录,遥测等),使得服务到服务的通信顺畅且可靠。但是,将这些功能整合到每一项服务中,这在开发和维护上都需要付出很多努力。

开发人员使用第三方类库和组件(例如Eureka,Ribbon,Hystrix)来提供这些通用功能,例如服务发现,负载均衡,断路器,日志记录和度量,遥测等。


d892772e99a12beee3cca9600cd37ff3.png

结合了业务功能和网络相关功能的微服务


但是,使用第三方库和组件会带来一系列不同的挑战,例如:

    • 紧密耦合-这些第三方库/组件的编码和配置与服务中的业务功能紧密相关。现在,应用程序代码是业务功能和这些其他库/组件配置的混合。
    • 编码/配置的复杂性增加-使用的第三方库/组件,可能必须使用不同的编程和配置语言集
    • 可维护性差—每当这些外部库/组件升级时,我们都必须更新应用程序代码,对其进行验证并部署这些更改
    • 调试/故障排除复杂度增加-现在服务是与第三方库/组件的混合,如果出现应用故障,开发人员必须花费大量时间来了解代码并排查问题

    fb9ed9a8938a8832398518e4aee4b356.png


    没有服务网格体系结构的微服务


    尽管微服务架构提供了很多好处,但是开发人员在面对上述挑战时也面临很多困难。这些挑战促使开发人员找到了更好的替代方案--Service Mesh(服务网格)。

    微服务的解决方案

    服务网格可以定义为处理微服务架构中服务间通信的专用基础结构层,从而降低了上述挑战带来的复杂性。Service Mesh使我们能够成功,高效地运行分布式微服务架构,并提供保护,连接和监视微服务的统一方法。

    服务网格背后的想法非常简单。不要在服务代码中增加其他与基础架构/网络相关的细节,而让它仅关注其必须执行的业务功能。

    通常,Service Mesh提供以下功能:

      • 负载均衡
      • 服务发现
      • 健康检查
      • 认证方式
      • 流量管理和路由
      • 断路器和故障转移
      • 安全管理
      • 指标收集和监控
      • 故障注入

      有了Service Mesh,我们不必使用任何第三方库/组件,就可以在每个微服务中提供与网络相关的通用功能,例如配置,路由,遥测,记录,断路等。Service Mesh将把那些与网络相关的通用功能抽象/外部化为一个单独的组件/层,称为“服务代理”。

      服务网格将应用程序中使用第三方库/组件的复杂性解耦。

      现在,开发人员可以根据与应用程序或网络相关的问题轻松排查任何问题的根本原因,从而使他们的生活变得异常便捷。借助Service Mesh架构,业务功能和与网络相关的功能之间的职责分工清晰。


      b8eaba6249a583909340a5c9707751ef.png

      具有服务代理(Sidecar)的微服务


      通常,Sidecar模式用于实现服务网格体系结构。在这种模式下,我们可以在服务旁边部署服务网格代理。服务代理的Sidecar将复杂性从应用程序中抽象出来,并处理服务发现,流量管理,负载均衡,断路器等功能。

      e73fd0b5289a7cbc1f54db757867bdbf.png


      具有服务网格架构的基于微服务的解决方案


      总而言之,采用基于服务网格架构的微服务,开发人员:

        • 无需担心使用任何第三方库/组件来提供与网络相关的功能
        • 所有服务到服务的通信将通过称为“服务代理”的组件/层,因此我们不必在每个服务中都实现它
        • 将业务功能与与网络相关的功能分离
        • 仅关注业务功能,而无需担心与网络相关的基础功能,让服务网格为你处理
        • 无需担心服务网格的开发,因为服务网格基于开放标准,例如HTTP,TCP,RPC,gRPC等。

        结论

        微服务架构由于其优于其他架构模式的优势,正在积极地控制软件工程行业。随着越来越多的组织从单体架构过渡到微服务架构,作为开发人员,我们需要了解微服务架构中的挑战并找到解决方法。Service Mesh架构解决了微服务架构引入遇到的一些挑战。

        现在我们知道了服务网格在微服务架构中的作用和重要性,下面让我们看一下可以在下一次开发活动中使用的服务网格产品/平台。 LinkerdEnvoy ProxyIstioConsulKumaOpen Service Mesh(OSM)是我们可以使用的一些领先的开源的Service Mesh平台。它们中的大多数经过了大量测试,可以投入生产使用。

        译文链接:https://dzone.com/articles/the-service-mesh-in-the-microservices-world

        目录
        相关文章
        |
        7月前
        |
        敏捷开发 运维 监控
        探索微服务架构下的服务网格
        【5月更文挑战第29天】 在现代软件开发的复杂多变环境中,微服务架构已成为构建分布式系统的热门选择。随着其应用的广泛化,服务网格(Service Mesh)这一概念应运而生并迅速崛起,它旨在提供一种透明且高效的方式来管理服务间的通信。本文将深入探讨服务网格的核心组件、运作机制以及如何通过服务网格优化微服务架构。我们还将讨论服务网格引入的挑战与克服这些挑战的策略,为采用微服务的企业提供指导和见解。
        |
        2月前
        |
        自然语言处理 监控 Cloud Native
        探索微服务架构中的服务网格Service Mesh
        【10月更文挑战第7天】服务网格(Service Mesh)是微服务架构中的关键组件,通过在每个服务实例旁部署Sidecar代理,实现服务间通信的管理、监控和安全增强。本文介绍了服务网格的基本概念、核心组件、优势及实施步骤,探讨了其在现代开发中的应用,并提供了实战技巧。
        |
        2月前
        |
        Kubernetes 负载均衡 安全
        Istio在微服务中释放服务网格的力量
        Istio在微服务中释放服务网格的力量
        66 4
        |
        4月前
        |
        运维 负载均衡 监控
        探索微服务架构下的服务网格(Service Mesh)实践之路
        【8月更文挑战第30天】 在当今日益复杂的分布式系统中,微服务架构已成为众多企业解决系统扩展与维护难题的利器。然而,随着服务的不断增多和网络交互的复杂性提升,传统的微服务管理方式开始显得力不从心。服务网格(Service Mesh)作为一种新兴的解决方案,旨在通过提供应用层的网络基础设施来简化服务间通讯,并增强系统的可观察性和安全性。本文将分享我在采用服务网格技术过程中的经验与思考,探讨如何在现代云原生环境中有效地实施服务网格,以及它给开发和运维带来的变革。
        |
        4月前
        |
        负载均衡 监控 安全
        Istio:微服务治理的超级英雄,一键解锁你的服务网格超能力,让管理复杂变简单!
        【8月更文挑战第31天】随着云原生技术的发展,微服务架构成为主流,但其复杂性与管理难题也随之增加。Istio作为开源服务网格平台,通过独特的数据平面和控制平面设计,实现了微服务通信的透明管理,简化了治理复杂度。本文将对比Istio与传统微服务管理方法,详细介绍Istio的架构及其工作原理,包括Envoy代理、服务发现、负载均衡、流量管理、安全认证以及监控等功能。Istio不仅简化了微服务治理,还提供了强大的流量控制和安全机制,使开发者能更高效地管理应用。
        93 2
        |
        4月前
        |
        开发者 项目管理 开发工具
        震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
        【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
        69 1
        |
        5月前
        |
        Kubernetes Cloud Native 持续交付
        云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
        云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
        |
        5月前
        |
        敏捷开发 设计模式 运维
        探索微服务架构中的服务网格
        【7月更文挑战第30天】在现代软件工程中,微服务架构因其灵活性和可扩展性而备受推崇。然而,随着系统规模的扩大,服务之间的通信和管理变得日益复杂。服务网格作为解决这一问题的新兴技术,提供了一种透明、可靠的服务到服务通信方式。本文将深入探讨服务网格的核心概念、实现原理以及其在微服务架构中的应用实践,为读者呈现一个关于如何利用服务网格优化微服务间通信的全景视图。
        48 0
        |
        7月前
        |
        运维 负载均衡 安全
        探索微服务架构下的服务网格
        【5月更文挑战第30天】 在当今日益复杂的分布式系统设计中,微服务架构已成为一种主流解决方案。然而,随着服务的增多和网络交互的复杂化,传统的服务发现与负载均衡机制变得不再适应。本文将探讨服务网格这一创新概念,它是一种专门针对微服务架构设计的基础网络设施,旨在提供更高效、动态且可靠的服务间通信。通过分析其工作原理及带来的优势,我们将深入了解服务网格如何简化微服务的管理并提升系统的整体性能。
        |
        7月前
        |
        Oracle 关系型数据库
        oracle asm 磁盘显示offline
        oracle asm 磁盘显示offline
        349 2

        相关产品

      • 服务网格