微服务最佳实践:MSE 微服务引擎
MSE 是什么
微服务引擎 MSE(Microservice Engine)是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台。其由四个主要部分组成:微服务治理中心、微服务注册中心、微服务配置中心、微服务网关。先从一些关键词了解下各个组件的特性:
- 微服务治理中心:无侵入增强主流开源微服务框架,丰富的服务治理功能
- 微服务注册中心/配置中心:全托管,高可用,丰富完善的监控报警,丰富的控制台运维操作,引擎类型丰富
- 微服务网关:全托管,支持主流开源微服务网关
作为 MSE 产品组的组件,每个部分都是可插拔的,即可单独使用微服务治理中心,也可单独使用其他组件。当然,如果选择使用全部的 MSE 组件,你将会获得微服务生态的最佳实践。
MSE 发展历史
MSE 在 2019 年 7 月正式上线,最早仅支持 Zookeeper 微服务注册中心,经历了数月的公测期,在 2020 年 1 月正式商业化,新增支持了两个注册中心类型 Nacos 和 Eureka。商业化之后,MSE 主要的产品演进方向包含了以下几个方面:
- Region 开服。MSE 先后完成了国内 5 大 Region(杭州、上海、张家口、北京、深圳)以及国外三个 Region (弗吉尼亚、新加坡、俄罗斯)的开服,未来 MSE 将会做到全球开服。
- 产品形态拓宽。2020 年 6 月,MSE 引入微服务治理中心,该组件通过无侵入的方式,为 Spring Cloud 和 Dubbo 等主流微服务框架提供了能力增强,如服务鉴权、无损下线、标签路由、服务测试;2020 年 7 月支持了 Nacos 配置中心,用户只需申请 1.2.1 版本的 Nacos 即可同时获得注册中心和配置中心的能力;2020 年 8 月,MSE 引入微服务网关,提供全托管的 Zuul、Kong、Spring Cloud Gateway。
- 产品能力演进。目前 MSE 还处于高速发展时期,几乎每个月份都有较大功能的上线,并对已有特性进行增强,如微服务治理中心现已支持 ECS、ACK 等产品形式的接入,支持 SpringCloud 和 Dubbo 微服务框架类型的治理;MSE Zookeeper 提供开源欠缺的管控能力,提供了可视化编辑能力,节点监控能力。
提到微服务,人们最容易联想的词可能有这些:服务发现、服务治理、路由,而这些微服务的概念,恰巧与 MSE 的各个组成部分对应,下面我会对这些组件逐个进行介绍。
MSE 注册中心&配置中心
服务发现这个词由来已久,DNS + LVS + Nginx 这样的架构其实就是最早期的服务发现,那时候微服务这个词可能都还没有开始流行,随着 Dubbo 和 SpringCloud 在国内遍地开花,微服务这个词开始变得火爆起来,与此同时,微服务开发者们也将服务发现这一概念与 Zookeeper,Eureka、Nacos、Consul、Etcd 绑定了起来。
回过头来看,Zookeeper 的设计者可能压根没有想到其竟然对微服务架构产生了如此深厚的影响,单从 Zookeeper 这款产品本身出发,将其称之为分布式协调组件可能更为恰当。这很大程度跟 Dubbo 在国内的普及程度相关,那时候 SpringCloud + Eureka 还没有横空出世,K8s + Etcd 更是鲜为人知,可以说 Dubbo + Zookeeper 的经典组合,几乎是国内最早落地微服务的一套解决方案。随着时间推移,越来越多的人表现出了对微服务的青睐,也有很多公司遇到一些瓶颈,其中一部分瓶颈就发生在 Zookeeper 之上,这时,一些变化已经悄然发生了。时间来到 2018 年,阿里将内部自用的注册中心开源了出来,提供给了用户一个新的选择,这便是今天的 Nacos。当越来越多的同类产品出现在人们面前时,好的一面表现为系统的选择变多了,坏的一面也表现为选择变多了,架构师纷纷表示:从前我没得选,现在我只想用一个好的注册中心。限于篇幅,我们不在这里探讨各个注册中心孰优孰劣,但可以确定的是:主流的注册中心,MSE 都支持。
MSE 基于对使用者的调研和目前微服务的发展方向,为阿里云用户提供了 Zookeeper、Nacos 和 Eureka 的托管。相比开源 Zookeeper/Nacos/Eureka,MSE 使用起来有什么差异呢?首先需要给开发者打的一剂强心剂是,MSE 的各个引擎类型是可以无缝对接开源的,功能上一定是开源的超集,所以可以使用开源 SDK 直接调用对应的引擎的接口。相比开源产品,MSE 的差异化增强能力主要体现在全托管,高可用,丰富的监控报警,完善的可视化管控能力。
以 MSE Zookeeper 为例,【数据管理】功能中可以对 Znode 节点进行可视化的编辑,弥补了开源 Zookeeper 没有控制台的空白。
【监控】功能可以对引擎本身的相关指标进行监控,MSE Zookeeper 目前支持连接数、TPS/QPS、Znode 数量、请求排队数和平均请求耗时指标的监控,并且在【报警管理策略】中配置报警。
MSE 的高可用保障策略分为几方面,一方面需要用户购买集群时,选择 3 节点及以上的集群,这样有利于注册中心的一致性协议选主。另一方面,依托于 MSE 底层的 K8s 架构,保障节点一直以固定数量运行,并且,MSE 会自动将集群的不同节点分布在不同可用区,进一步保障可用性。
我们前面提到 Zookeeper 设计之初并不是用来做注册中心的,而 Nacos 则专门为微服务场景设计的,其包含了服务和配置两个领域模型。如果用户选择了 MSE Nacos 引擎,也会获得配置中心的能力。
MSE 治理中心
国内外大大小小的微服务框架可以说数不胜数,但提到微服务治理,就拿最简单的服务查询,治理规则编辑功能来说,鲜有微服务框架能够提供。Apache Dubbo 算是众多微服务框架中比较出众的一个,其配套了开源的 Dubbo Admin,提供了服务查询,路由规则的配置,服务测试等能力,但硬要说其缺点,也确实是存在的,例如 Apache Dubbo 的能力不断再演进,但 Dubbo Admin 没有跟上节奏。MSE 治理中心主要解决的问题便是为微服务提供治理能力,而这些能力并不受你使用的微服务框架类型所限制。
在很长一段时间里,云上用户在微服务架构选型时,面临了一个难题:选择一个云厂商等于选择了一套微服务架构。站在云厂商的角度,固定一套 SDK,显然对云产品开发而言是有优势的,大大降低了服务治理的开发难度;但从用户角度来看,这限制了用户的选择空间,特别是在上云之前就有了微服务基础的团队,最坏的可能性就是搬栈。为了避免绑定,MSE 治理中心所有的微服务治理能力都是无侵入式实现的,即不需要用户修改一行代码就可以获得我们功能列表里面的那些能力。MSE 治理中心仍然在公测阶段,如果你使用的是 Dubbo 和 SpringCloud,那恭喜你,不仅仅是代码不用改,一分钱也不用花就可以接入,免费使用服务查询、服务测试、金丝雀发布和无损下线等能力。
【服务查询】可以将应用的服务信息,接口信息细粒度的展示出来。
【标签路由】可支持应用实现灰度发布。
【服务测试】支持用户在开发阶段对 Dubbo 和 SpringCloud 接口进行测试,解决手动编写测试代码的问题。
微服务网关
微服务网关是一个处于微服务之前的系统,作为微服务环境面向外部服务访问者的唯一入口,用来管理授权、访问控制和流量路由等,这样服务就被网关保护起来,对所有的调用者透明。因此,隐藏在网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。
微服务网关与微服务体系无缝协作、快捷发布、灵活控制,将基于微服务架构的业务应用服务快速、直接发布成 API。基于注册中心动态感知服务节点状态,灵活进行路由、限流、鉴权、负载均衡等各种控制策略,即时更改即时生效,与治理中心的各种服务治理能力无缝集成。
微服务网关目前支持 Zuul、Kong 和 Spring Cloud Gateway 的托管。
本文为阿里云原创内容,未经允许不得转载。
评论