微服务引擎MSE新功能发布及产品演进
——董振华(问思)
云原生应用平台MSE产品经理
MSE 的产品定位是打造面向业界主流开源微服生态的一站式平台。
2020 年 1 月正式商业化后,它提供了 Nacos 、 zokeeper 、Eureka 三种注册中心的托管服务。半年后,产品增加了微服务治理中心以及 Nacos 配置中心的能力。去年 5 月,MSE 基于 Nacos 2.0 推出了托管引擎的专业版,与 1.0 版本相比,性能提升了近 10 倍,能够支持 10 万级实例的扩展。
微服务治理和服务网格 ASM 集成,支持了多元应用。另外还推出了原生网关,将 K8S 、Ingress 网关与微服网关合二为一。
至此,用户可选用 MSE 全套模块来组成微服务整套解决方案;也可以根据自身的发展阶段灵活选用1-2个模块。而且 MES 的技术栈完全基于开源,用户无需担心技术绑定方面的问题。
高性能和高可用是 MSE 的两大核心竞争力。 MSE 在阿里内部经过了十几年集团业务和双 11 保障的磨练,进行了大量架构和性能优化。与开源自建相比,它在安全性和易用性上也有了很大的提升。它与诸多云产品进行了集成,比如与 RAM 、普洛米修斯 、SLS 进行了对接,提供了一站式的安全保障和监控告警能力,用户无须关心底层的架构细节即可高效地进行分布式架构演进。
最近半年, MSE 也进行了持续升级,下文会对新的动态逐一进行介绍。
2022年3月,MSE 在国际站开服,支持全球 23 个 region 。在此之前,MSE 只在国内站的国内及海外 region 上线,无法满足一些出海用户或者海外客户用国际站账号购买时使用美元结算的需求。现在,用户已经可以登录国际站账号购买注册&配置中心、微服务治理原生网关三大模块,进而快速构建稳定高效的微服务体系。
MSE 最先推出的注册&配置中心的核心优势主要是免运维、高可用、高性能、安全可靠、高效易用。
免运维:由于Zookeeper 、Nacos 是有状态服务,运维成本相对较高,扩缩容时稍有不慎就会出现服务中断或数据丢失的问题。而 MSE提供了引擎托管开箱即用免运维的能力,用户只需 3 分钟即可完成实例创建、扩缩容等操作。
高可用:对于多节点的集群, MSE 做了多可用区容灾,并对流量和容量保护进行了增强。在巡检报警方面,沉淀了阿里多年的实践经验,后台提供了几十个告警和巡检指标。出现问题的时候能够先于用户发现并做处理。
高性能: MSE 实现了 GMV 参数的一系列调优,使引擎处于最优的运行状态。同时,Nacos 2.0 兼容了 Eureka 协议,性能提升了50%。因为 Eureka 社区的发展已经十分缓慢,建议用户尽快迁移到 Nacos。
安全可靠:安全领域是企业用户非常重视的。 MSE 对接了主子账号,支持 KMS 对配置进行加密。最近也发布了一些新功能,实现了加密配置的导入导出,以及更细粒度的 GroupID 和 DataID 的鉴权。另外,也能够支持用户在控制台对服务进行细粒度的权限控制。
高效易用:近期对告警页面进行了优化改版,并在告警规则内增加了 CPU 使用率和内存使用量指标,便于用户对资源的异常做出快速响应。此外,能够支持控制台创建和删除持久化的服务实例,提升服务管理效率。在 Nacos 进行克隆配置时,能够支持对不同命名空间中相同的 Key 值进行内容检查和显示,帮助用户确定每一条冲突配置的覆盖策略。
用户在构建微服务体系时,网关是必不可少的组件。在虚拟化时代的微服务架构下,业务通常采用上图左侧这种流量网关+微服务网关的两层架构。前者负责南北向流量的调度和安全防护,后者负责东西向流量的调度和服务治理。
上图右侧是原生网关的业务部署架构,它将两层网关变为一层,不仅可以节省 50% 的资源成本,还可以降低运维和使用成本,功能也更为丰富。
最近几个月,除了在服务发现、负载均衡、路由策略认证、鉴权等方面实现了进一步扩展外,原生网关还发布了几项大的功能:
① 支持监听 ACK Ingress 并兼容 Nginx Ingress 的常用注解。这意味着用户在 ACK Ingress资源中已有的域名路由的相关配置可以直接在原生网关生效。从 Nginx 迁移到云原生网关时,无需做重复配置,只需创建网关,进行接入地址的切换即可。
② 集成了外部应用防火墙 WAF,避免业务被恶意入侵,导致性能异常或数据安全问题。与用户直接使用 WAF 相比,集成方案支持网关实例和路由分别接入 WAF 防护规则,配置更加灵活高效,而且访问流量是在网关层进行清洗,响应时间更短、性能更好。
③ 支持硬件加速,原生网关可将 TOS 证书的验证卸载到硬件执行,大幅提高了 HTTPS 的请求性能。此外,对 OS 内核参数和 Envoy 进行了调优,经过测试,Ingress 场景比 Nginx Ingress 性能提高了90%。
④ 上线了 Wasm 插件市场,除了平台提供的插件,还支持用户自定义插件,满足用户在安全认证、多协议支持等方面的二次扩展需求。
微服务的规模达到一定程度后,都会出现治理方面的需求,而这部分技术复杂度较高,是困扰开发和运维同学的难题。 MSE 提供了从开发态、测试态到运行态全生命周期的治理能力,并且利用 Java agent 技术支持五年内的 spring cloud 和 double 版本的零改造接入,其功能包括微服务测试、无损上下线、金丝雀发布、服务鉴权、离群实例摘除等高阶微服务制定能力。
近期,服务治理新上线了三大功能,分别是无损上线、全链路灰度和日常环境隔离。
① 无损上线。
服务的第一次调用会进行资源的初始化,耗时较久。因此发布到线上的新应用如果直接去处理大流量,极易出现请求响应慢、资源阻塞的现象。针对这类问题, MSE 通过调节流量分配,帮助新上线的应用在充分预热后再处理正常流量。
另外 MSE 还提供了资源预见连接、延迟注册,确保 K8S 就绪检查通过前完成微服务的注册和预热等一整套手段,来满足各类不同应用的无损上线需求。
② 全链路灰度。
用户通过设置流量规则对所需流量进行染色,染色的流量路由到灰度机器,灰度流量携带灰度标往下游传递,形成灰度专属的环境流量泳道。无灰度环境的应用默认选择未达标的绩效环境,即稳定的线上环境。流量规则制定后可一键启动和停止灰度发布,实时生效。
灰度过程中,用户可通过可视化的观测能力,从全局视角观察流量是否存在逃逸情况。目前全链路灰度已经覆盖了接入层网关、RPC 以及 Rocket MQ 等组件,可以帮助用户低成本、无侵入地快速实现全链路灰度能力,提升系统稳定性,使新需求的迭代上线更安心。
③ 日常环境隔离。
在微服务中,每个 feature 的修改点都可能被分散在多个应用中,因为不同的团队都在并行进行开发、调试、测试任务,应用之间需要互相配合好,避免对彼此造成影响。因此,最简单的办法是每个迭代或 feature 都独享一套物理环境,它包含了微服务所有的应用注册中心和接入层。这确实能够保证流量在 feature 环境里封闭,但这种多套独享的开发环境也会带来巨大的资源成本。
而借助于服务治理中心的标签路由功能,可以实现环境的逻辑隔离。用户只需要维护一套完整的基线环境,增加 feature 环境时,只需要单独部署此 feature 需要改动的应用即可。可以通过标签传递,确保不同的流量在对应的 feature 环境和基线环境正确流转。
对于开发者而言,这种工作方式和独享环境相差无几,资源消耗也很少。另外用户还可以在 IDEA 中使用 Cloud Toolkit的端云互联功能,在网络没有互通的情况下,将本机启动的应用接入到开发环境,完美解决微服务敏捷开发的效率问题。
除了上述治理能力, MSE 还与易用高可用服务 AHAS 进行了深度融合。首先是在服务治理专业版提供了 AHAS 的应用配置能力,帮助用户动态管理代码中的配置项。它支持热发布、强校验、单机或全局推送功能,可在多种场景下使用。
场景一:功能开关。
在业务逻辑中预埋功能开关,应用上线后,用户在控制台即可逐步发布某些功能,比如动态开启某个促销活动、将某些耗时的操作降级等。
场景二:运维操作微调。
无需重启应用即能调整应用操作的级别,比如在线上修改日志级别、指定 A/B Test 路径、动态调整超时时长进行线程池的配置等,进而避免线上故障。
场景三:列表推送。
结构化内容推送,支持 ListMap 等复杂类型,可以用来推送定时大促的商品名单、统一发送优惠券的客户名单、对服务接口和业务维度的黑白名单做动态管理等。
更重要的是, MSE 推出了服务治理企业版,融合了 AHAS 全方位的流量防护能力,能帮助用户很好地应对流量激增或服务依赖不稳定等问题。
流量往往是漏斗型的,企业版的流量防护功能可以在微服务层比如 Zuul/Spring CloudGateway 设置规则,进行粗粒度防护,然后在应用层进行接口级粒度的防护。目前支持单机限流、集训限流、分钟小时限流等多种限流方式,也支持滑动窗口、令牌桶和漏桶等多种限流算法。
第三方服务出现问题时也会导致接口响应时间变长、线程资源无法释放的问题。用户可以针对弱依赖接口配置熔断规则,达到不稳定条件时自动熔断,对于非关键接口可以提前主动降级,从而避免单点服务异常导致整体不可用。
另外,流量防护还支持自适应系统保护,用户可根据 CPU Load 等系统资源指标设定系统保护规则,防止雪崩。同时也可以对被自动识别的 MySQL 语句配置隔离规则,限制其并发执行数,防止 DB 连接池被打满而影响正常调用。
MSE 服务治理的企业版还提供了从机器维度、接口维度、集群维度的秒级流量水位分布的分析能力,方便用户监控防护效果并指导规则配置。
综上,MSE 服务治理企业版包含了全量的服务治理能力和 AHAS 的流量防护能力,而它的价格与 AHAS 一致。用户选择 MSE 服务企业版,相当于花一份钱同时拥有了两个产品。
未来,MSE 首先会持续打磨并升级产品的核心能力,利用软硬一体、 ebpf 技术、架构优化等手段,不断提高性能及其稳定性。针对不同的模块,会进一步增加功能厚度和适用场景,比如注册配置中心的推送轨迹查询、网关的 API 管理和多协议支持、服务治理对更多语言和框架的适配。不断提升用户体验,帮助用户快速运行复杂的微服务体系和最佳实践。
其次,继续保持开放与集成。 MSE 会继续以开源技术为基础,防止技术绑定,进一步降低自建用户的迁移复杂度,同时也为商业化用户提供更多集成和扩展能力,比如开放监控和日志数据供用户自建监控大盘。网关方面也会进一步支持多种类型的自定义插件,方便用户进行扩展。另外,原生网关服务治理也会与服务网格 ASM、AHAS、ACK 有机结合,打造南北向、东西向流量治理的一体化方案。
最后,希望通过 MSE 将阿里巴巴丰富的微服务实践持续向市场和客户输出,包括阿里开源技术的输出、阿里业务实践方案的输出以及客户成功实践的输出,帮助更多用户实现微服务化改造以及快速上云。
MSE 计划在本月推出 Seata 企业版公测。众所周知, Seata 在领域内开源项目里的占有率最高,其对应的阿里内部版本一直扮演着分布式一致性中间件的角色,帮助集团平稳度过了历年双11。
即将公测的企业版具有以下特点:
① Seata 开源托管:用户无需搭建和运维复杂的 Seata 和第三方依赖组件,比如配置中心、 Nacos 、MySQL 、Redis 等。
② 性能提升:对 Seata 开源内核进行了大幅度调优,性能较开源有很大的提升。
③ 简单易用:白屏化的控制台,提供了监控统计功能。
④ 一键迁移:支持开源用户一键迁移,只需改动几行元数据配置即可将 Seata 服务从开源版迁移至企业版。