阿里云提供全托管 ZooKeeper

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 自 2010 年左右第一次引入以来,Apache ZooKeeper 目前在阿里巴巴集团内部已经有了将近 10 年的发展,使用的场景非常广泛,基于 ZooKeeper 强一致性的特点,被用在了分布式锁、分布式队列、Leader 选举、服务注册发现和配置管理等多个大数据和微服务场景下,包括配置中心,注册中心,分布式框架下,分布式调度框架,分布式消息中间件,分布式数据中间件等。

自 2010 年左右第一次引入以来,Apache ZooKeeper 目前在阿里巴巴集团内部已经有了将近 10 年的发展,使用的场景非常广泛,基于 ZooKeeper 强一致性的特点,被用在了分布式锁、分布式队列、Leader 选举、服务注册发现和配置管理等多个大数据和微服务场景下,包括配置中心,注册中心,分布式框架下,分布式调度框架,分布式消息中间件,分布式数据中间件等。

其中,在微服务场景中,注册中心的地位举足轻重,承载着地址路由的核心功能,常见的有 ZooKeeper,Eureka和 Nacos,在日常的研发中,如果没有接触运维过这些注册中心的开发同学,需要重新花大部分时间学习了解这些组件,并且如果想要在生产环境良好的运行它们,还需要有丰富的运维经验。

为此,阿里云推出了全托管的 ZooKeeper 集群产品

快速部署,开箱即用

在微服务应用开发中,就算是写个简单的 HelloWorld 程序提前验证业务流程,都需要手动预先搭建一套注册中心,搭建的过程中,各种注册中心的多种配置参数,需要了解并且合理设置,如果需要到不同的注册中心,搭建的方式又不能通用,完成一个简单微服务接口的开发,花了 80% 的时间在环境的搭建上面。

MSE 提供了一键开通集群的能力,基于云原生 K8s 资源底座,3 分钟左右,你就可以拥有一套属于自己的注册中心集群,微服务引擎的交付物,非常简单,就是一个连接串,后面已经帮你做好了负载均衡,高可用检测等等,目前 MSE 支持 ZooKeeper 注册中心,如果你有其他注册中心的需求,请肆无忌惮的告诉我们,可以在开通页面选择你需要的。

1

安全高效的连通方案

微服务引擎支持两种网络连通方案,公网实例和 VPC 专有网络,公网实例模式会给集群申请一个可供公网环境访问的域名,默认是有网络安全策略限制,无法访问的,需要用户自己额外配置白名单策略,这样最大限度的提升了系统的安全等级;VPC 专有网络,是阿里云的私网环境,网络的隔离性更加彻底,只有用户自己的专有网络,才能与微服务引擎实例连通,同时,网络延时,更加低,网络访问质量高效。

两种不同的网络方案 ,覆盖了用户日常的使用场景,在非阿里云网络环境下,可以通过公网模式,进行日常开发与测试,正式生产时,再切换至高效的专有网络模式。

2

实用的节点管理

微服务引擎提供了节点数据管理的可视化页面,ZooKeeper 的数据结构,在内存中是一颗树,我们将它一比一的在页面上呈现出来,这样就能直观形象的看到整个内存数据的状态,同时支持了可以在页面上对内存数据进行,增加,删除,更新,查询的常规操作。

在新增节点的时候,支持自动创建父目录,删除父节点的时候,支持递归删除下面的子节点,所见即所得,非常方便,是 ZooKeeper 原生客户端强功能有力的补充。

3

白屏化参数设置

白屏化的运维,能够最大限度的降低线上安全事故,通过工具自动化,降低人带来的不确定性操作,微服务引擎,提供了注册中心常用的配置项修改功能,可以直接通过页面上进行更改操作,更改完之后,一键重启生效。ZooKeeper 目前支持常用的配置项如下所示,同时还支持超级用户的设置,在你对 ZooKeeper 节点使用了 ACL 策略时,如果忘记了策略密码,可以通过超级用户的方式,访问加密数据。

4

高可用能力

微服务引擎实例,默认使用的是多可用区部署,这意味着,具备了多区域的容灾能力,在某个可用区出现系统性故障时,可以最大限度的保证整体服务的连续可用性。

微服务引擎的资源底座,依托于容器服务 ACK,是一款久经考验的商业化产品,同时也是阿里集团内规模化最大的在线服务容器组件,能够支持节点宕机自动恢复,磁盘使用的是阿里云的高性能云盘,保证在节点出现故障事,数据的完备性。

5

兼容原生接口

微服务引擎支持的注册中心,原则之一,就是完全兼容原产品的接口和功能,无需修改代码,对用户使用完全透明,如果需要切回原产品,也是无缝切换,不存在使用壁垒,给用户最大的选择。

Dubbo 应用集成 MSE

接下来,通过开发一个日常的 Dubbo 微服务应用,给大家演示下如何集成 MSE(微服务引擎),下面是部署结构图:

6

首先,登陆微服务引擎官网,申请 1 个 ZooKeeper 集群实例,目前公测阶段,实例是免费使用的,只需要开通一下服务,不收取任何其他费用:

7

8

进入微服务引擎控制台之后,点击“创建实例”按钮,这里我们选择创建公网实例,配置选择 1 核 2G 。

9

点击创建之后,进入列表页,这里会展示你所有的集群,刚创建集群,运行状态会变成“启动/加载中”,整个创建过程,在 3 分钟左右,之后你就拥有一个属于自己的 ZooKeeper 的集群了。

10

11

mse-f3288e50-p.zk.mse.aliyuncs.com(外)这个链接串,是提供的外网域名,刚生产出来,是访问不了的,因为安全的限制,需要给它加白名单,加白名单的入口,从集群列表页,点击管理,进入管理页面,白名单设置按钮:

12

白名单的设置规则是,需要把你的公网出口 IP 或者 IP 段,添加进来,才能访问到 ZooKeeper 集群,例如,此次我本机的出口公网 IP 为“42.120.74.119”,那么设置的格式为“42.120.74.119/32”,

获取本机出口公网 IP 的方法,可直接访问 https://www.ip.cn/

设置完之后,可通过如下命令验证,与 Zookeeper 的连通是否成功:

echo mntr |nc mse-f3288e50-p.zk.mse.aliyuncs.com 2181

申请完 ZooKeeper 实例之后,可以开始写一个 DubboProvider ,代码如下:

public class DubboProvider {
    private final static String ZOOKEEPER_URL = "mse-f3288e50-p.zk.mse.aliyuncs.com";
    public static void main(String[] args) throws InterruptedException {
        ServiceConfig<GreetingService> service = new ServiceConfig<>();
        service.setApplication(new ApplicationConfig("first-dubbo-provider"));
        service.setRegistry(new RegistryConfig("zookeeper://" + ZOOKEEPER_URL + ":2181"));
        service.setInterface(GreetingService.class);
        service.setRef(new GreetingsServiceImpl());
        service.export();
        System.out.println("======dubbo service started");
        new CountDownLatch(1).await();
    }
}

把 ZOOKEEPER_URL 换成你申请的地址链接串即可,可直接启动,启动之后,我们通过微服务引擎的数据管理页面,可以清晰看到, DubboProvider 将自己的服务元数据,发布在“/dubbo/dubbo.GreetingService/providers/”目录下面,以一个节点(dubbo%3A开头)形式存在, 这是 1 个 ZooKeeper 的临时节点,当把 Provider 的进程关闭后,这个节点会消失,但是父节点不会,可以自己验证一下。

13

接下来,我们启动一下 Consumer 节点,需要连接同一个 ZooKeeper 注册中心,从上面订阅刚才发布的接口地址列
表,代码如下:

public class DubboConsumer {
    private final static String ZOOKEEPER_URL = "mse-f3288e50-p.zk.mse.aliyuncs.com";
    public static void main(String[] args) throws InterruptedException {
        ReferenceConfig<GreetingService> reference = new ReferenceConfig<>();
        reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));
        reference.setRegistry(new RegistryConfig("zookeeper://" + ZOOKEEPER_URL + ":2181"));
        reference.setInterface(GreetingService.class);
        GreetingService service = reference.get();
        String message = service.sayHello("dubbo");
        System.out.println("======"+message);
        Thread.sleep(Integer.MAX_VALUE);
    }
}

启动之后,我们通过数据管理页面,可以看到,Consumer 在 ZooKeeper 上面也注册了 1 个节点,在路径“/dubbo/dubbo.GreetingService/consumers/”下面:

14

同时,它也是属于临时节点,节点名字是经过 URL 编码的,解码后可以看到如下:

20

除了可以看到注册在 ZooKeeper 上面的数据结构及内容,微服务引擎还提供了 ZooKeeper 常见的监控图,例如客户端链接数,访问ZooKeeper 的 TPS(写操作),QPS(读操作),如下图所示:

15

16

17

结束语

通过上面的微服务示例开发,不需要太多的的运维学习成本,很快就拥有了自己的 1 个 ZooKeeper 集群,大大提高了研发效率,专注于业务,微服务引擎目前处于公测期间,完全免费,申请地址点击这里,欢迎体验。

如果您在使用微服务引擎 MSE 过程中有任何疑问,欢迎您扫描下面的二维码加入交流群进行反馈:
18
19

本文作者:草谷,阿里云高级工程师,目前负责阿里集团内软负载分布式组件TaoKeeper,商业化产品MSE,分布式服务注册中心及高可用架构领域的相关工作。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5月前
|
消息中间件 Cloud Native 安全
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(1)
|
5月前
|
Cloud Native 数据库 存储
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(2)
|
6天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
5月前
|
Cloud Native 数据库 测试技术
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(3)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
《阿里云产品四月刊》—得物 ZooKeeper SLA 也可以 99.99%丨最佳实践(3)
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
3月前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
182 16
|
4月前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
158 22
|
3月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
4月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 06 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要

相关产品

  • 微服务引擎