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

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
函数计算FC,每月15万CU 3个月
简介: 下文将为你解说云原生网关如何助你解决一系列痛点,优雅玩转云上微服务架构升级。

作者:百丈


随着云原生技术的发展,微服务的架构选型也是日新月异。在 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


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

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
10天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态。
|
15天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 12 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
103 12
|
22天前
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全能增强
在过去半年,ALB Ingress Controller推出了多项高级特性,包括支持AScript自定义脚本、慢启动、连接优雅中断等功能,增强了产品的灵活性和用户体验。此外,还推出了ingress2Albconfig工具,方便用户从Nginx Ingress迁移到ALB Ingress,以及通过Webhook服务实现更智能的配置校验,减少错误配置带来的影响。在容灾部署方面,支持了多集群网关,提高了系统的高可用性和容灾能力。这些改进旨在为用户提供更强大、更安全的云原生网关解决方案。
365 17
|
1月前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态。
|
1月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
107 8
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。
|
1月前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
58 0
|
2月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
181 6