微服务用户为什么要用云原生网关

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 下文将为你解说云原生网关如何助你解决一系列痛点,优雅玩转云上微服务架构升级。

作者:百丈


随着云原生技术的发展,微服务的架构选型也是日新月异。在 Kubernetes 重塑运维体系的云时代,我们在安全、降本提效、精细化运营等方面都有了更高的要求和更多的选择。曾经关炙手可热的 Zuul/SpringCloud Gateway/Kong 等在其网关位置上开始显得力不从心。它们欠缺发现容器服务的能力,性能可能不如 Nginx Ingress,可观测、安全等方面都需要二次开发再集成,这些关键短板都阻碍着技术发展。今天来看云原生网关如何助你解决这些痛点,优雅玩转云上微服务架构升级。


微服务(网关)的发展


微服务发展大事记


1.png


随着 Martin Fowler 在 2014 年的文章总结梳理 [1]“微服务”概念开始逐渐深入人心。之后各类开源或商业支持如雨后春笋般涌现,到如今笔者按年份简单整理了每年的大事记,其中两个变化值得大家需要关注:


  1. 微服务从单点支持向平台解决方案发展,例如 SpringCloud 解决方案、 Kubernetes 体系。

  2. 开源和商业产品融合得更加紧密,云原生的发展让技术从业者有了更多的选择。


微服务网关的变化


2.png


笔者按时间整理了几个简单对比:


  1. 2013 ZUUL:Netflix 开源的负载均衡组件,简单易上手,不过早期的 ZUUL 1 性能上限稍低。
  2. 2015 KONG:基于 Nginx 的 API 网关,性能强劲,Lua 国内开发者相对较少。
  3. 2016 SpringCloud Gateway:网关开始作为整个微服务解决方案的门面出现。
  4. 2019 Ambasssador(现在更名 Emissaey-ingress):支持 Kubernetes ingress 标准,且与 Istio 无缝集成。


微服务逐步向平台解决方案发展的同时,对网关的集成能力也有了更高的需求。这也是我们看到了这个趋势,云原生网关应运而生,而且云原生网关不仅集齐了他们的优点,而且功能更丰富、性能更强劲、稳定更可靠。  


Kubernetes 微服务


这里为什么单独提 Kubernetes 微服务?这需要回到没有 Kubernetes 的时候采用微服务架构我们碰到哪些问题?


  1. 拆分了微服务后相应的构建部署工作量开始翻倍,运维压力急剧提升;
  2. 随着业务迭代,微服务之间调用链路变的复杂,强弱依赖不清晰,故障/瓶颈排查困难;
  3. 不同业务团队使用异构的服务框架或技术栈,相互依赖集成成本增加。


通过合理的拆分服务可以降低协作成本及控制变更风险,这是微服务思想带来的价值,然而随之而来的也有巨大的治理难度和运维压力。


不过 Kubernetes 以其完整的网络、服务、负载均衡的标准定义似乎解决了我们不少问题。


统一的服务定义及服务发现机制


得益于 Kubernetes 的网络模型和 Pod 标准,Kubernetes Service 可以将运行在一组 Pods [2]上的应用程序抽象为网络服务(Kubernetes 微服务),你无需修改应用程序即可使用不熟悉的服务发现机制。Kubernetes 为 Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。


userspace 代理模式:image.gif


3.png


iptables 代理模式:


4.png

image.gif

IPVS 代理模式:
image.gif

5.png


负载均衡 Ingress 标准


Ingress 公开了从集群外部到集群内服务的 HTTP 和 HTTPS 路由。流量路由由 Ingress 资源上定义的规则控制。


6.png


有了容器及 Kubernetes 的运维调度能力及标准服务、负载均衡基础,微服务架构可以往更高的层次发展,满足更多技术场景。


技术趋势及痛点


云原生时代的高要求和可选择


Kubernetes 是好,同时其庞大的体系和众多的概念标准也给技术从业者带来了学习成本,DevOps 似乎比之前多了不少的工作量,好在云原生时代,商业化产品满足高要求的同时给了我们更多的选择。


7.png


上图展示了在代码中通常包括三部分:业务代码、三方软件、处理非功能特性的代码。其中“业务代码”指实现业务逻辑的代码;“三方软件”是业务代码中依赖的所有三方库,包括业务库和基础库;“处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。

从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、 可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。


精细化运营的需求

微服务架构的一路发展过来,从简单的拆分服务到服务发现机制,再到支持 Sidecar 代理治理流量,最终的形态是什么样的?或者我们技术需求是怎么样?


简单的拆分


8.png


服务发现机制


image.gif9.png


Sidecar代理流量


image.gif10.png


云原生架构成熟度模型 & API 安全质量报告


在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、 可用性与安全性。 应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性, 降低应用架构的复杂度。 云原生的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、 可控制性、可容错性等特性。


我们可能需要类似上述一个模型描述架构在服务化能力、弹性能力、可观测性及自动化能力等维度的成熟度,虽然这样比较全面,似乎不太适合总结沟通。如果用简单概念来描述,笔者总结几个阶段层次:


  1. 极致弹性应对突发流量,弹性能力是重要的手段,是否极致对应着故障的恢复速度,弹性能力有时候还依赖于服务化程度。
  2. 可观测体验:能够应对突发流量后开始关注性能优化及故障处理,体系化的可观测体验及指标数据对我们的治理工作至关重要。
  3. 故障无感自愈:能够 360 度发现问题就能总结规律制定常用的预案及检查机制,常规故障即可自动化恢复。


最重要的结果衡量还有我们用户的体验,比较好代表用户的应该就是 API 安全质量报告,如果 API 的可用率提升了,如果 API 的响应 RT 减少了,这显然说明架构升级/治理给我们带来了巨大的价值,满足精细化运营的需求。


架构升级的痛点

架构升级(治理)能带来的价值有目共睹,甚至我们也有了相关架构持续演进的闭环方法论。


11.png


网关作为技术架构的门面,在架构整体成熟度的度量及可持续演进集成兼容等方面至关重要,以网关作为架构治理升级的切入口是个不错选择,但是,有些痛点还是实实在在的摆在我们面前:


  1. 怎么发现当前微服务架构的问题?
  2. Kubernetes Ingress 后面再部署微服务网关影响性能吗?
  3. 用户登录鉴权逻辑能否集中处理/升级?
  4. 多个 Kubernetes 集群是否可以共用一个网关?
  5. 同时使用 SpringCloud 和 Kubernetes svc 怎么灰度?


此处只是稍作举例,实际的痛点大家深有体会,开源产品往往和我们的业务需求不是那么匹配,接下来看云原生网关是如何解决这些问题的。


云原生网关的优势


云原生网关=流量网关+微服务网关+?

云原生网关从开始就一直在强调,将流量网关(Kubernetes Ingress、Nginx)和微服务网关(Spring Cloud Gateway、Zuul 网关等)二合一,降低 50%资源成本,同时缩短了请求时间,降低运维复杂度。


12.png


仅仅只是二合一显然不够满足我们的期望,看看它还有什么:


  1. 开箱即用, 默认支持全局看板、实例监控、日志检索、业务 TOP 榜、日志投递、链路追踪及报警管理等体系化可观测能力,让你轻松了解微服务及 API 质量情况。
  2. 卓越的性能,详见下文性能更强劲。
  3. 支持 Ingress 标准,Kubernetes 体系首选网关产品。
  4. 多种服务发现,支持 ACK 容器服务、Nacos 等多种服务发现方式,可以同时接入多个 Kubernetes 集群。
  5. 基于 envoy+istio 实现,完美兼容服务网格,技术大势所趋。


功能更丰富


13.png


除了体系化的可观测能力,还有完整的安全防护能力、丰富的服务/流量治理能力、生产大规模实践的高可用经验以及精细化的 API 管理和扩展支持。  


性能更强劲


14.png

image.gif

压测结果:


  • 云原生网关的 TPS 基本是 SpringCloud Gateway 的 2 倍,是Zuul 1 的 5 倍。
  • 云原生网关的 TPS 相比 Nginx Ingress 高出约 90%。

 

稳定更可靠


15.png


  • 自内部 2020.5 上线,云原生网关已在支付宝、钉钉、淘宝、天猫、优酷、飞猪、口碑等阿里各业务系统中使用,两年以来可用率 100%,无任何故障
  • 历经 2020、2021 双 11 海量请求的考验,大促日可轻松承载每秒承载数 10 万笔请求,日请求量达到百亿级别。


重磅功能层出不穷


16.png


相关链接


1. Martin Fowler 在 2014 年的文章总结梳理

https://martinfowler.com/articles/microservices.html 


2.Pods

https://kubernetes.io/docs/concepts/workloads/pods/


新春福利,嗨购 2022,现在购买 MSE 云原生网关预付费全规格立享 7 折优惠。


也可钉钉搜索群号 34754806 可加入用户群交流、答疑。


17.png


点击文末此处,了解更多详情~

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2天前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态
阿里云微服务引擎及 API 网关 2024 年 4 月产品动态。
|
2天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 04 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
4天前
|
缓存 负载均衡 API
微服务架构下的API网关性能优化实践
【5月更文挑战第10天】在微服务架构中,API网关作为前端和后端服务之间的关键枢纽,其性能直接影响到整个系统的响应速度和稳定性。本文将探讨在高并发场景下,如何通过缓存策略、负载均衡、异步处理等技术手段对API网关进行性能优化,以确保用户体验和服务的可靠性。
|
8天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
29 1
|
12天前
|
负载均衡 Java API
构建高效微服务架构:API网关与服务熔断策略
【5月更文挑战第2天】 在微服务架构中,确保系统的高可用性与灵活性是至关重要的。本文将深入探讨如何通过实施有效的API网关和设计合理的服务熔断机制来提升分布式系统的鲁棒性。我们将分析API网关的核心职责,包括请求路由、负载均衡、认证授权以及限流控制,并讨论如何利用熔断器模式防止故障传播,维护系统的整体稳定性。文章还将介绍一些实用的技术和工具,如Netflix Zuul、Spring Cloud Gateway以及Hystrix,以帮助开发者构建一个可靠且高效的微服务环境。
|
13天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用构建高效微服务架构:后端开发的新范式
【4月更文挑战第30天】 随着企业加速其数字化进程,云原生架构已成为支撑复杂、可伸缩和灵活应用的骨干。本文探讨了云原生技术的崛起,重点分析了其在促进业务敏捷性、提高运营效率及推动创新方面的核心价值。通过深入剖析云原生生态系统的关键技术组件,如容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,揭示了企业如何利用这些技术来构建和维护高度可用且动态的IT环境。文章还提出了一个多维度的采纳框架,帮助企业评估和实施云原生解决方案,以实现真正的业务价值。 【4月更文挑战第30天】在现代软件开发的快速演变中,微服务架构已经成为一种领先的设计模式,用于构建可扩展、灵活且容错的应用程序。与传
|
14天前
|
运维 Kubernetes Cloud Native
构建未来:云原生架构下的微服务治理
【4月更文挑战第30天】 在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和容错性成为企业IT战略的核心。本文深入探讨了如何通过云原生架构实现微服务的高效治理,包括服务发现、配置管理、流量控制和故障处理等关键方面。我们将展示一系列最佳实践和工具选择,以帮助企业构建一个既可靠又灵活的服务网格,确保业务连续性并加速创新步伐。
|
16天前
|
消息中间件 监控 微服务
【专栏】随着技术发展,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能
【4月更文挑战第27天】本文探讨了构建高效微服务架构的后端开发最佳实践。微服务以服务独立、去中心化、自治和轻量级通信为核心原则,带来可扩展性、独立性、技术灵活性和团队协作优势。实践中,要注意服务拆分粒度、选择合适的通信协议(如RESTful、RPC、消息队列)、处理数据一致性与分布式事务、实施服务治理和监控,以及确保安全性与权限控制。随着技术发展,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能。
|
19天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:容器化与微服务架构的融合
【4月更文挑战第24天】 随着云计算的不断演进,云原生技术已成为企业数字化转型的核心动力。本文深入探讨了如何通过容器化技术和微服务架构的融合,构建高效、可扩展且易于管理的云原生应用。我们分析了容器化带来的隔离性和可移植性优势,以及微服务架构在提升系统灵活性和促进团队协作方面的重要作用。文章还提供了实施策略,包括选择合适的容器平台、确保服务间通信的安全性以及持续集成/持续部署(CI/CD)的实践,以帮助企业实现敏捷开发和快速迭代。
|
24天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
62 0