管好微服务,成为云原生时代的新难题。
从建好微服务到管好微服务,差的虽是一个字,连接起两边的却需要大量的微服务落地经验。因为软件架构的核心挑战是解决业务快速增长带来的系统复杂性问题,而微服务将应用进行解耦的过程中,服务和服务之间的调用和依赖关系也变得愈加复杂,关系越复杂、小的技术问题越可能被放大,造成大的线上故障。而容器和 K8s 为代表技术的云原生时代,则加重了其中的复杂程度。
近日,阿里云微服务引擎 MSE(以下简称MSE)升级3大核心能力,在管好微服务应用上提供了更高效的实践和更全面的保障。
直播发布会回顾:https://developer.aliyun.com/topic/microservice
发布微服务治理企业版
在原有基础版、专业版之上,MSE 推出了微服务治理企业版,提供微服务应用以及常用网关的流量管控与容错能力,从流量控制、并发控制、熔断降级、自适应保护、热点防控等多个维度来保障业务的稳定性,帮助用户很好地应对流量激增或是服务依赖不稳定问题。
在微服务网关层,比如 Zuul,Spring CloudGateway,用户可设置规则进行入口流量防护。在应用层,可进行接口级粒度的防护,支持单机限流、集群限流、分钟小时限流多种限流方式。除了大流量的冲击,第三方服务出现问题时,有时会导致接口响应时间变长,线程资源无法释放等问题。用户可以针对弱依赖接口配置熔断规则,达到不稳定条件时自动熔断。对于非关键接口可提前主动降级,从而避免单点服务异常导致整体不可用。 另外流量防护支持自适应系统保护,可根据 CPU、LOAD 等系统资源指标,设定系统保护规则,防止雪崩。同时也可以对自动识别出来的慢SQL语句配置隔离规则,限制其并发执行数,防止数据库连接池被打满而影响正常调用。
企业版还支持QPS、响应时间、异常、CPU/load等指标的秒级监控能力,并针对这些指标提供提供了机器维度、接口维度、集群维度的秒级流量水位分布的分析功能,方便用户监控防护效果并指导规则配置。
另外,服务治理中心还增加了应用配置能力,帮助用户动态管理代码中的配置项,可使用在多种业务场景中。一是在业务逻辑预埋功能开关,例如动态开启某个促销活动、将某些耗时操作降级等;二是无须应用重启即能调整应用操作级别,比如线上修改日志级别,指定A/B Test路径,线程池配置等;三是List、Map等复杂类型的结构化内容推送,如定时推送大促商品名单,统一发送优惠卷客户名单等。
基础版、专业版、企业版的价格如下:
更多关于3个版本的差异点,可访问:https://help.aliyun.com/document_detail/333528.html
开源服务治理规范和实现 OpenSergo
微服务治理是管好微服务过程中不可避免要解决的难题,但是业内普遍存在以下痛点:
- 理解和沟通成本高:业界对微服务治理的能力和边界没有明确的认识,每个企业所定义的服务治理概念都不一致,造成很高的理解和沟通成本。
- 缺少标准化的约定:开源微服务框架众多,例如 Spring Cloud 中定义的微服务接口和 Dubbo 中定义的接口就没有办法互通,Go、Java 有不同的体系和认知。
- 缺少面向业务的抽象和标准:对业务开发来说,不仅需要了解不同微服务框架的部署架构,也要了解不同服务治理方式的概念和区别。
而 OpenSergo 是由 bilibili、字节跳动以及 Spring Cloud Alibaba、Nacos、Apache Dubbo/dubbo go 社区共同发起,是一套微服务治理的规范和实现,要解决的是不同框架、不同语言在微服务治理上的概念碎片化、无法互通的问题。例如,如何标准化地进行服务注册和发现,服务的元信息格式如何统一等等。
OpenSergo @GithHub:github.com/opensergo/opensergo-specification
OpenSergo 提供的能力可以从管控面、数据面、Spec 3个维度去看:
- 控制面:用户可以通过 CRD 或者 Dashboard 的方式查看、修改服务治理配置,并将这些管控信息下发到数据面。
- 数据面:JavaAgent、Servcie Mesh、各个接入 OpenSergo 的微服务框架都能够接收到服务治理配置,并应用到当前的业务流量中。
- OpenSergo Spec:Spec 规定了控制面和数据面的通信约定,确保用户使用一种 Spec 即可描述不同框架、不同协议、不同语言的微服务架构,让开发者不再需要关注底层差异。
下一代网关-云原生网关再升级
网关分为流量网关与业务网关,流量网关主要提供全局性的、与后端业务无关的策略配置,例如阿里内部的的统一接入网关 Tengine 就是典型的流量网关;业务网关顾名思义主要提供独立业务域级别的、与后端业务紧耦合策略配置,随着应用架构模式从单体演进到现在的分布式微服务,业务网关也有了新的叫法 - 微服务网关。
但在容器和 K8s 主导的云原生时代,Ingress 成为 K8s 生态的网关标准,流量网关 + 微服务网关合二为一。将两层网关变为一层,不仅可以节省50%的资源成本,还可以降低运维及使用成本。
MSE 提供的云原生网关再次升级核心能力,包括无缝支持 Nginx Ingress 注解转换、支持 Waf 本地防护、支持插件市场、支持 HTTP 转 Dubbo。以无缝支持 Nginx Ingress 注解转换为例,MSE Ingress Controller 通过 List-Watch 机制获取关联的 ACK 集群中 Ingress 资源的变化,然后以热更新的方式动态更新 MSE 云原生网关的路由规则。当 MSE 云原生网关收到请求时,匹配 Ingress 转发规则转发请求到后端 Service 所对应的 Pod。
相比 Nginx Ingress Controller,MSE Ingress Controller 是以热更新的方式秒级生效监听到的 Ingress 资源,这种无需重启数据面即可生效配置的方式大大提高了集群入口网关的稳定性,有效保障了业务流量无损。更重要的是,MSE Ingress Controller 可以进行多集群管理,即同时作为多个集群的入口网关,意味着可以同时监听多个集群中的 Ingress 资源,解决用户跨 Kubernetes 集群流量调度和流量治理问题。
除了 MSE 这类微服务半托管的产品外,本次升级发布会中,也分享了 MSE+SAE 的全托管方案的优势和特色,并结合 Serverless 技术,进一步提升了计算资源的利用率,低门槛容器化改造和转型 K8s。
MSE 面向 ZooKeeper、Nacos、Consul、Envoy 等开源项目提供商业化增强,服务斯凯奇、来电科技、玩心不止、禾连健康、万师傅、云货优选、上海三菱、Salesforce 中国等企业,已成为国内云上客户首选的微服务平台之一。