阿里云提供全托管 ZooKeeper

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

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

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

快速部署,开箱即用

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

MSE 提供了一键开通集群的能力,基于云原生 K8s 资源底座,3 分钟左右,你就能够拥有一套属于本身的注册中心集群,微服务引擎的交付物,很是简单,就是一个链接串,后面已经帮你作好了负载均衡,高可用检测等等,目前 MSE 支持 ZooKeeper 注册中心,若是你有其余注册中心的需求,请肆无忌惮的告诉咱们,能够在开通页面选择你须要的。框架

安全高效的连通方案

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

两种不一样的网络方案 ,覆盖了用户平常的使用场景,在非阿里云网络环境下,能够经过公网模式,进行平常开发与测试,正式生产时,再切换至高效的专有网络模式。分布式

实用的节点管理

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

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

白屏化参数设置

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

高可用能力

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

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

兼容原生接口

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

Dubbo 应用集成 MSE

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

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

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

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

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

白名单的设置规则是,须要把你的公网出口 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 的进程关闭后,这个节点会消失,可是父节点不会,能够本身验证一下。

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

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

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

结束语

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

 

本文做者:中间件小哥

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索