3分钟,了解阿里云热门产品 ZooKeeper

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文来自畅销书《从 Paxos 到 Zookeeper》作者倪超,讲述了其对阿里云最新发布的微服务引擎 MSE 产品的使用初体验。(图片来自《从 Paxos 到 ZooKeeper 》一书的封面)屏幕前的读者朋友们如果正在为运维 ZooKeeper这份至关重要,但繁琐而枯燥甚至心里没底的活而烦恼如果正在为自己的应用找寻一个高可用,且免运维的ZooKeeper那么,它来了阿里云全托管的 ZooKeeper 集群产品微服务引擎 MSE读者可以在任何搜索引擎搜索“微服务引擎 MSE”,即可直达产品官网。

本文来自畅销书《从 Paxos 到 Zookeeper》作者倪超,讲述了其对阿里云最新发布的微服务引擎 MSE 产品的使用初体验。


《从Paxos到ZooKeeper》封面.jpg
(图片来自《从 Paxos 到 ZooKeeper 》一书的封面)


屏幕前的读者朋友们

如果

正在为运维 ZooKeeper

这份至关重要,但繁琐而枯燥

甚至心里没底的活

而烦恼

如果

正在为自己的应用

找寻一个高可用,且免运维的

ZooKeeper

那么,它来了

阿里云全托管的 ZooKeeper 集群产品

微服务引擎 MSE

读者可以在任何搜索引擎搜索“微服务引擎 MSE”,即可直达产品官网。

阿里巴巴和 ZooKeeper 的结缘

从微服务引擎 MSE 的官方网站上,了解到,自 2010 年左右第一次引入以来,Apache ZooKeeper 目前在阿里巴巴集团内部已经有了将近 10 年的发展,使用的场景非常广泛,基于 ZooKeeper 强一致性的特点,被用在了分布式锁、分布式队列、Leader 选举、微服务注册发现和配置管理等多个大数据和微服务场景下。

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

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

接下来,我将以一个 Dubbo 应用为例,快速体验如何使用 MSE 的 ZooKeeper 集群。

快速创建,开箱即用

MSE 提供了一键创建集群的能力,3 分钟左右,就可以拥有一套属于自己的 ZooKeeper 集群,微服务引擎的接入点,非常简单,就是一个连接串,和自己搭建的 ZooKeeper 是一样的,而且从控制台页面上,我发现这个接入点已经为我们做好了负载均衡和高可用检测 —— 也就是说,自己不用关心集群节点的可用性了。

目前公测阶段,实例是免费使用的,只需要开通一下服务,不收取任何其他费用。

image

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

image

题外话,从控制台上可以看到,目前 MSE 仅支持 ZooKeeper,而如果有其他注册中心的需求,请肆无忌惮的告诉他们的产品团队吧,可以在开通页面投票选择你需要的。

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

image

安全高效的网络连通方案

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

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

在上文截图中所示的「mse-f3288e50-p.zk.mse.aliyuncs.com」这个链接串,是提供的外网域名,刚生产出来,是访问不了的,因为安全的限制,需要给它加白名单,加白名单的入口如下:

集群列表页 - 管理 - 白名单设置

image

白名单的设置规则是,需要把你的公网出口 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 的数据结构,在内存中是一颗树,我们将它一比一的在页面上呈现出来,这样就能直观形象的看到整个内存数据的状态,同时支持了可以在页面上对内存数据进行增加、删除、更新和查询的常规操作。

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

image

参数设置

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

image

发布 Dubbo 服务

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

image

申请完 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 的进程关闭后,这个节点会消失,但是父节点不会,可以自己验证一下。

image

订阅 Dubbo 服务

接下来,我们启动一下 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/”下面:

image

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

image

监控

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

image

image

image

高可用

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

image

兼容原生接口

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

结束语

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

如果您在使用微服务引擎 MSE 过程中有任何疑问,官方还提供了用户交流群,扫描下面的二维码就可以加入。

image

image

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
9天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1天前
|
消息中间件 人工智能 监控
|
6天前
|
数据库 云计算
电子好书发您分享《阿里云产品手册2024版》
**阿里云2024产品手册电子版分享:** 探索最新云计算解决方案,涵盖智能计算、视觉智能与云数据库ClickHouse。了解阿里云在新的一年中提供的核心产品与服务升级,包括适用于初学者的云服务器选项。查看完整手册:[阿里云产品手册2024版](https://developer.aliyun.com/ebook/8326/116556?spm=a2c6h.26392459.ebook-detail.4.50ae272a22gHxh)。
34 9
|
9天前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之在阿里云的DataWorks中,使用CREATE AS创建分区表的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
25 2
|
9天前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之阿里云的DataWorks中,提交手动业务流程的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 0
|
9天前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之阿里云DataWorks专有云环境下,上传MaxCompute的UDF(用户自定义函数)的JAR包的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
20 0
|
9天前
|
缓存 分布式计算 DataWorks
DataWorks产品使用合集之阿里云DataWorks中,天任务依赖小时任务的调度运行如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
20 1
|
9天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之阿里云MaxCompute对SQL语句的长度的长度限制是多少
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
9天前
|
SQL 数据管理 API
数据管理DMS产品使用合集之阿里云DMS提供API接口来进行数据导出功能吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。

相关产品

  • 微服务引擎