2022云栖精选—以服务治理为基石 构建可管可控互联网应用架构

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
简介: 董振华阿里云智能 云原生应用平台

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

一、微服务落地与挑战    

image.png

CSDN今年发布中国开发者报告显示,有 40% 云原生开发者专注于微服务领域,其中有不少开发者非常关注服务编排、服务治理,这也符合阿里云典型用户上云过程的特点。

云上部署作为第一阶段,主要解决是如何将 IDC 内传统应用平滑迁移至云上。此阶段一般关注计算资源,应用往往不会做任何修改。用户上云以后,为了能够更好利用云上强大的调度弹性容错能力,会进行云原生化改造,将原虚机部署方式转为容器化部署。

随着业务发展,传统单体应用已经无法满足业务需求。用户需要进行微服务化改造,进一步提升开发迭代的效率。但随着微服数量越来越多,调用链路越发复杂,用户需要进入第四阶段:服务治理。从开发联调上线发布,从流量管控错误故障排查,进行全方位服务治理,进一步提升效率、稳定和安全性。

image.png

众所周知微服务并不是银弹,从微服务开发测试运行,用户面临各种问题和挑战。在开发阶段,如果微服务没有很好地进行拆分,所带来的问题可能会超过微服务架构本身带来的红利。开发人员需要非常规范 API接口以及统一配置管理才能提高开发迭代效率。而微服务之间调用链路非常复杂,会带很多不确定因素,排查故障也愈发困难。因此,我们需要有可靠微服务组件以及专业治理能力提高整个系统性能和稳定性,并且需要用户建立可观测以及故障排查能力。

通过服务集团内部项目以及外部商业化客户,阿里针对此类挑战积累了大量丰富经验,同时也开源了比如DubboSpringCloudAlibabaNacosSentinelArthas等优秀开源项目。


二、微服务引擎 MSE 3.0 发布

image.png

微服务引擎 MSE正是结合了阿里云微服务开源项目商业化方案以及双 11 大规模落地最佳实践提供面向业界主流开源微服务生态一站式平台,包含了原生网关、注册配置中心和微服治理三大能力。

用户可以自由选择一个或多个能力,并与其他云产品结合构建自己微服架构。业务应用无论是部署在 ECS 还是容器服务上,或是托管在EDASSAEPaaS平台上,都可以使用原生网关作为统一服务出口。监控服务日志服务可观测组件,获取从网关入口业务应用全链路可观测数据。注册配置中心解决了微服务间同步调用注册发现以及配置管理需求。异步逻辑通过消息队列实现。微服务治理,则支持了 SpringCloud Dubbo 近五年版本,用户无需修改任何一行业务代码,即可获得全链路流量控制能力,提升微服务系统稳定性和安全性。

image.png

2020年初,阿里云发布了MSE商业化服务1.0 版本提供了注册中心,主要解决服务间的注册发现以及通信问题,帮助用户快速构建应用。2.0版本新增了配置中心以及服务治理基本功能,比如服务查询以及无损下线,帮助用户快速提升开发运维效率,落地企业级能力。

今年,阿里云推出了 MSE3.0包括云原生网关以及全新服务治理中心。注册配置中心也全面升级,让用户享受到云原生时代下微服务最佳实践。

image.png

注册配置中心提供了 Nacos以及ZooKeeper 的商业化托管服务,并且兼容Eureka协议。在微服务场景下,除了服务注册发现Nacos还能集中管理分布式架构环境配置信息,降低用户管理配置成本。也有很多用户使用ZooKeeper托管服务,在大数据场景下比如HBase KafkaHadoopFlink集群中,使用专业ZooKeeper组件实现稳定高性能的分布式协调、分布式锁。

全新注册配置中心基于阿里巴巴DragonWell 构建,且进行了深度调优,性能较开源自建提升 40% 以上。可观测方面,我们开放了 70 多个资源和业务监控指标,让用户对整个系统运行了如指掌,且可与用户自建 Grafana 大盘进行对接,并且提供服务推送以及配置变更推送轨迹查询能力。如果用户遇了服务发现或配置变更没有生效问题,可以通过白屏化方式快速进行问题排查,提升效率。

另外在日常运维中,很多用户在实例容量节点配置以及客户端服务端版本方面均存在不少问题。最新推出的健康自检功能能够风险点进行自动评估,并将优化建议推送给用户,使用户实例处于健康状态。

MSE3.0提供了全白屏化迁移工具,使 NacosEurekaZooKeeper一键热迁移至托管实例,整个过程无需停机,避免对业务应用造成影响。

image.png

MSE3.0推出的云原生网关,兼容了 K8s ingress 标准,将负责南北向路由流量网关、东西向调度微服网关以及安全网关三合一。集成了 13 种阿里云产品,包括数字证书服务web应用防火墙、AHAS流量防护、IDaaSSLSARMS等,从安全、高可用、可观测方面提供了全方位能力。支持8种服务来源,无论是容器服务上 service 还是注册在NacosZooKeeper 微服务,亦或是托管在EDASSAE各种应用,甚至是传统通过固定地址暴露服务,都可以一键导入至原生网关中做统一管理,非常适合各种应用架构、部署方式并存场景。

性能方面,云原生网关经过了阿里双 11 高流量洪峰的检验,可以轻松应对数十万笔/交易,相比于自建 NGINX Ingress TPS 高出90%相比微服网关 ZUUL高出400%。通过硬件加速能力,HTTPS请求RT会进一步下降50%

通过插件市场机制,用户可以做多语言扩展,满足用户在安全、流量管控以及请求响应方面个性化需求。而且插件更新以及安全路由策略更新均毫秒级生效,对业务应用无感。

目前在阿里云 EDAS以及容器服务 ACK 控制台上, ingress 入口选型中已经提供了 MSE 云原生网关选择。需要特别提出的是,云生网关兼容Nginx ingress 核心注解,用户已有Nginx ingress 路由规则无需更改,原生网关可以自动监听,并在网关侧生效,实现几乎零成本平滑迁移。

我们的客户费芮互动原来使用的 Nginx ingress 业务应用混部有稳定性问题,而且缺少TLS版本设置、IP黑名单等功能,通过上述平滑迁移方式更换成云原生网,关完美解决了这些问题,高效支撑了大规模业务。

image.png

微服务规模发展到一定阶段,用户会出现服务治理需求。但相关技术实现较复杂,是困扰开发和运维同学难题。

以变更发布为例,很多IT 从业者都会有熬夜做新版本上线发布经历。这种方式一方面对开发运维人员的工作带来了极大不便,另一方面也无法满足业务快速迭代的需求。CNDN 报告也显示,有 44% 用户需要做不定时发布,更有甚者一周需要做上百次发布。如此频繁发布下前提下应用启停会对线上流量造成巨大影响,另外如果新版本有 bug 引发大面积生产故障也是灾难性的事故。

而微服务治理无损上下线和全链路灰度可以完美解决上述问题。阿里在微服务治理方面积累了近十年的经验我们将微服务治理能力产品化产品基于 Java agent 全面兼容开源拥抱 K8s 用户无需修改业务代码,也无需担心被厂商锁定,只需在 K8S 集群中安装组件,就可以针对命名空间或应用开启治理

服务治理覆盖了微服务开发测试到运行的整个生命周期,提供了数十种功能。技术同学无需再花费大量精力自己实现相关功能,帮助开发测试提效50%,微服落地周期降低30%


三、利用 MSE 落地微服务最佳实践

image.png

生产环境绝大多数故障自于变更发布,阿里提出的安全生产三板斧包括可灰度可观测、可回滚,首要是可灰度。在微服务数量众多情况下,如果为每一个新版本都构建一套独立灰度环境,需要付出巨大的运维成本和资源成本。而现在,通过 MSE全链路灰度能力,只用部署一套稳定基线环境,再针对有新版本的服务,额外部署对应实例节点并进行打标,同时对灰度流量进行特征规则设置。灰度流量经由原生网关可以动态路由至对应版本实例节点,并向下传递。如果没有新版本,选择基线环境,再往后传递,最终形成了一条一条逻辑隔离流量泳道。方案支持了多种网关,SpringCloudDubbo微服务框架,以及RocketMQ 和数据库组件,用户能够快速低成本验证自己新版本,消除 80% 以上变更风险。电科技使用 MSE构建了全链路灰度能力大幅提高了发布效率和稳定性,降低了运维成本。

除了线上灰度发布流量治理也可以拓展至开发环境隔离场景。在微服务开发环节feature 变更点可能分散在不同微服务应用,涉及不同开发团队多个 feature 可能同时进行开发测试,所以需要非常好地进行协同,又不互相干扰。最简单办法是为每个feature提供一套独立物理资源成本过高。

与全链路灰度发布同理,在开发测试环境中只用部署一套稳定基线环境再单独部署各 feature需要改动的应用。通过打标及流量特征设置,让不同流量能够在不同 feature 环境和基线环境中正确流转。对于开发人员而言这与独立环境效果相差无几。

致景科技正利用原生网关和服务治理构建开发测试环境,将构建周期从天级降至分钟级,开发测试资源使用量降低80%实现了其数智化综合服务平台的快速迭代。

image.png

稳定性治理方面, MSE覆盖了从云原生网关应用层缓存、数据库以及第三方依赖全方位高可用防护。比如通过服务预热以及无损上线,对于新启动应用节点,可以实现流量渐进递增,避免了应用在启动时因为来不及初始化被大流量击垮。通过无损下线主动通知能力,使得服务提供方停止时不会再被调用,防止流量受损。

在大流量场景下,通过网关层粗粒度规则设置以及应用层接口细粒度防护规则,可以进行整体流量防护。对于慢 SQL 以及不稳定第三方应用,可以快速识别隔离,避免 DB 连接池打满线程资源无法释放各种问题。

万师傅和云优选使用 MSE无损上下线以及流量防护能力,实现了应用发布以及扩缩容时流量无损,大促业务高峰期保证系统稳定性。

image.png

信任安全也是现在企业越发关注的问题。MSE在原生网关入口层面,支持了从入口以及出口后端 TLS 双向认证。在认证鉴权上,除了JWTOIDC标准认证服务也支持用户自定义鉴权,且集成了 IDaaS可支持第三方认证机制。对于恶意流量,云原生网关集成了阿里云web应用防火墙,可以实现路由级别细粒度的安全防护。通过插件市场,可以选用数十种安全插件或自定义插件进行能力扩展。

应用层,用户可以在微服务治理中心配置服务间调用策略,进一步降低应用内部安全风险。注册配置中心支持 RAM 鉴权以及基于 KMS 配置加密,可以防止应用实例信息配置信息敏感数据恶意篡改和访问。


四、拥抱开源 贡献开源

image.png

MSE产品全面拥抱开源近期重磅发布了两个开源项目OpernSergoHigress

在微服务治理领域,各家企业更多的是在落地解决一个一个的问题,而最终能够实现的能力和边界,业界并没有统一标准,这也使得开发人员在沟通和理解上存在一定成本。而且微服务领域存在很多组件以及开源框架,不同框架配置和规则下发逻辑不兼容,导致各种组件和框架无法进行统一治理和协调。

OpenSergo 旨在提供一套开放通用、面向原生服务、覆盖微服务上下游组件治理标准与实现。

在控制面,用户可以通过 CRD 方式查询更新服务治理配置,并下发管控规则至数据面。OpenSergo Spec规定了控制面和数据面的通信约定,确保用户使用一种 Spec 即可描述不同框架、不同协议、不同语言的微服务架构。在数据面,无论用户是通过 SDK Java agent 还是Sidecar方式接入OpenSergo都可以正确接收控制面下发治理规则,进而应用在自己业务流量最终实现异构微服务之间相互通信以及统一治理。

阿里已经联合了字节、B 站等多家企业、多个社区一起合作,共同建立开放标准计划覆盖网关、服务框架、消息数据库、缓存更多开源组件。我们也欢迎更多微服务领域开源方加入我们丰富OpenSergo覆盖范围,帮助更多企业落地微服治理。

image.png

本次云栖大会也重磅开源了原生网关 Higress

Higress从阿里内部孵化开发,电商交易等核心场景进行大规模生产验证,到MSE进行商业化,至今已有两年半的历程。Higress开源 IstioEnvoy核心,除了兼容 K8s ingress 也遵循了社区正在推进新一代 Gateway API 可以通过 K8S CRD 方式管理实例生命周期,进行规则以及策略配置和更新,也支持OpenKruise Roolout灰度发布

Higress将流量网关 + 微服务网关 + 安全网关三合一,能够极大的降低网关的部署及运维成本。通过支持开源注册中心,限流降级,以及监控组件,它可以统一订阅广泛的服务来源,并提供完善的大流量防护和可观测能力。Higress的插件市场,提供丰富的默认插件,包括WAF防护、认证鉴权、协议转换等,方便用户在安全、服务管理等方面进行扩展。除了WasmLua插件,它还将支持进程外插件扩展机制,让用户可以用自己熟悉的语言编写插件。很多开源网关做配置变更,需要reload 引起流量抖动。Higress的路由、安全规则,WASM 插件都支持热更新,规则变更毫秒级生效且业务无感知。

上述所有特点经过生产验证,让Higress有了很好起点。也欢迎感兴趣小伙伴加入我们,一起将Higress不断迭代演进。最后,也希望通过MSE产品的持续演进,微服务开源项目的社区共建,以及用户们的支持和参与,将互联网应用架构推向新的阶段。

lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8天前
|
数据处理 C语言
深入解析x86架构:X86, X86_32和X86_64的差异与应用
深入解析x86架构:X86, X86_32和X86_64的差异与应用
17 0
|
1天前
|
Web App开发 Linux 微服务
了解应用中的微内核架构
【6月更文挑战第25天】**微内核架构**是将系统服务从内核移出,形成可选插件,增强扩展性和适应性。常见于第三方应用和嵌入式系统,如Linux、L4、WinCE。优点包括清晰结构、移植性和扩展性,但缺点是通信开销大、性能较低,不利于整体优化。适合需要灵活功能组合的场景。
17 5
了解应用中的微内核架构
|
5天前
|
存储 数据采集 数据挖掘
“湖仓一体架构及其应用”写作框架,系统架构设计师
随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP(On-Line Transaction Processing)数据交易过程,而是提出了多样化、异质性数据的实时处理要求。传统的数据湖(Data Lake)在事务一致性及实时处理方面有所欠缺,而数据仓库(Data Warehouse)也无法应对高并发、多数据类型的处理。因此,支持事务一致性、提供高并发实时处理及分析能力的湖仓一体(Lake House)架构应运而生。湖仓一体架构在成本、
|
1天前
|
存储 消息中间件 API
“论微服务架构及其应用”写作框架,软考高级,系统架构设计师
论微服务架构及其应用近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(MicroserviceArchitecturePattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通用协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。
|
2天前
|
监控 API 数据安全/隐私保护
构建高效后端服务:微服务架构的实践与挑战
【6月更文挑战第23天】在现代软件开发中,微服务架构已成为设计高性能、可扩展后端系统的首选模式。本文将深入探讨微服务的设计原则、实践方法及其面临的技术挑战,旨在为开发者提供一个全面的微服务实施指南。
15 3
|
1天前
|
存储 算法 C语言
【链表专题】深入探索链表:文章索引与知识架构(链表的概念、实现、应用、经典例题大合集)
【链表专题】深入探索链表:文章索引与知识架构(链表的概念、实现、应用、经典例题大合集)
|
2天前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
8 1
|
2天前
|
Java 数据库连接 API
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有良好的封装性、可移植性,以及数据库无关性。
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
|
7天前
|
敏捷开发 负载均衡 Java
微服务架构下的服务治理策略
【6月更文挑战第18天】在微服务架构日益成为企业IT架构转型的标配时,如何有效管理与维护这些服务成为了一个挑战。本文将探讨微服务架构下的服务治理策略,包括服务发现、配置管理、负载均衡、故障转移和熔断机制等关键技术点,旨在为读者提供一套完整的服务治理解决方案。
|
5天前
|
存储 弹性计算 安全
构建高效企业应用架构:阿里云产品组合实践深度解析
该方案展现了阿里云产品组合的强大能力和灵活性,不仅满足了当前业务需求,也为未来的扩展打下了坚实的基础。希望本文的分享能为读者在设计自己的IT解决方案时提供一定的参考和启发。
68 1