1声明zookeeper的远程坐标
2. 声明远程接口 继承Remote 在里面声明方法
3. 声明远程调用该方法(impl)继承UnicastRempteObject 实现service接口
4. 发布远程服务
5.发布远程服务的方法 (动态获取参数)(
4.1声明端口号
4.2声明url地址
4.3绑定(URL地址和远程对象)
4.4.服务注册(创建服务方法封装))
6.创建服务注册方法
6.1获取zookeeper对象
6.2将url转化为byte数组
6.2将url地址信息存储到zookeeper中创建zk节点 他的节点为顺序和瞬时节点其中provider节点为物理节点
7.创建zookeeper对象方法
7.01声明对象
7.1创建zookeeper对象
7.11判断zk对象是否判断成功
7.111唤醒主线程
7.2 让主线程睡觉
7.3返回zookeeper对象

public class TestProviderZk {public static void main(String[] args) throws IOException, InterruptedException, AlreadyBoundException, KeeperException {//发布远程服务publisher(8888,"localhost",new ProviderZkServiceImpl());System.out.println("端口号7777的远程服务发布成功");}//创建发布远程服务的方法private static void publisher(int port, String host, Remote remote) throws IOException, AlreadyBoundException, KeeperException, InterruptedException {//服务发布//声明端口号LocateRegistry.createRegistry(port);//声明url地址String url = "rmi://"+host+":"+port+"/rmi";//绑定Naming.bind(url,remote);//服务注册writeUrl(url);}
//创建服务注册方法private static void writeUrl(String url) throws KeeperException, InterruptedException, IOException {//获得zookeeper对象ZooKeeper zk= connectionZK();//将url地址信息转化为字节数组byte[] bytes = url.getBytes();//将url地址信息存储到zookeeper中 zk节点为顺序和瞬时节点,其中provider节点为物理节点zk.create(Constant.ZK_SERVICE,bytes, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);}
//实现线程同步private static CountDownLatch latch = new CountDownLatch(1);
//创建zookeeper对象private static ZooKeeper connectionZK() throws IOException, InterruptedException {//声明对象ZooKeeper zk = null;zk = new ZooKeeper(Constant.ZK_HOST, Constant.ZK_TIME_OUT, new Watcher() {@Overridepublic void process(WatchedEvent event) {//判断zk对象是否创建成功if(event.getState()==Event.KeeperState.SyncConnected){//唤醒主线程latch.countDown();//唤醒休眠线程}}});//让主线程休眠latch.await();//返回zookeeper对象return zk;}
}
public interface Constant {//声明zookeeper地址String ZK_HOST="192.168.154.131:2181,192.168.154.131:2182,192.168.154.131:2183";//链接超时时间int ZK_TIME_OUT=5000;//物理节点,永久节点String ZK_REGISTER="/provider";//保存服务地址的瞬间节点String ZK_SERVICE=ZK_REGISTER+"/service";
}

zookeeper服务注册流程相关推荐

  1. nacos服务注册流程

    nacos服务注册流程 nacos的客户端已经搭建好了,那么客户端是怎么将服务注册到注册中心去的呢. 1. 如果对springboot自动配置原理有一定了解的话,那么第三方框架一般都会通过spi的方式 ...

  2. dubbo服务注册流程

    服务注册流程 RegistryProtocol 在dubbo服务发布流程已经分析了发布服务流程还有服务注册流程 export 在RegistryProtocol#export继续服务注册流程 // 根 ...

  3. 8、Zookeeper服务注册与发现原理浅析

    了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下Zookeeper是如何实现服务的注册与 ...

  4. Zookeeper 服务注册中心

    Zookeeper 服务注册中心 Zookeeper 官网 ZooKeeper:分布式应用程序的分布式协调服务 ZooKeeper 是分布式应用程序的分布式开源协调服务.它公开了一组简单的原语,分布式 ...

  5. Nacos服务注册流程(一)

    Nacos服务注册主流程 目录 一.准备事项 1.1 Nacos源码下载 1.2 启动Nacos服务端项目 1.3 启动Nacos客户端项目 二.Nacos客户端注册流程 2.1 注册方法的调用 2. ...

  6. SpringBoot系列:9. 分布式系统,Dubbo,Zookeeper服务注册与发现

    前言 本章主要对分布式系统,RPC的实现方式和Zookeeper实现做一个详细的概述并通过实战代码加深对他们的了解. 1. 分布式 什么是分布式系统? :"分布式系统是若干独立计算机的集合, ...

  7. 生物解锁--指纹服务注册流程

    锁屏要使用指纹解锁,首先要注册指纹服务,我看过的一些大厂项目中,实际上是在KeyguardUpdate.java类中发起注册的,一般是根据当前状态,是不是已经处于上锁状态(侧边指纹机器,是不等上锁即进 ...

  8. Zookeeper 服务注册与发现01——服务提供者

    <!-- SpringBoot整合zookeeper客户端 --><dependency><groupId>org.springframework.cloud< ...

  9. Zookeeper服务注册与发现

    Zookeeper作为服务注册与发现的解决方案,它有如下优点: 1. 它提供的简单API 2. 已有互联网公司(例如:Pinterest,Airbnb)使用它来进行服务注册与发现 3. 支持多语言的客 ...

最新文章

  1. 腾讯面试题:char 和 varchar的最大长度是多少,以及他们之间的区别(看完你就能和面试官笑谈人生了)
  2. arduino 超声波测距原理_超声波测距灯
  3. django 学习 (四) 模板标签
  4. php session 机制,Cookie、Session机制详解及PHP中Session处理
  5. Spark的新方案UnifiedMemoryManager内存管理模型分析
  6. android缓存框架
  7. 小学计算机辅导计划,【小学信息技术培优补差计划】_小学信息技术培优补差计划...
  8. 几米的一段话,献给所有小郁闷的人
  9. C++函数和函数的调用
  10. 软件及其公司篇--项目管理(七)
  11. linux ftp lcd 命令,Linux FTP命令使用实例
  12. 在python中查询excel内容
  13. Linux的内核态与用户态
  14. 常用算法实现(五)——python阿拉伯数字转中文
  15. 分销商城系统开发应用概述详解
  16. 可过滤多种广告的“ADM(阿呆喵)广告拦截工具
  17. BGA焊接开裂失效分析案例
  18. DSP的GEL文件详解
  19. Python模拟搜狗翻译发送请求
  20. JAVA计算机毕业设计菜鸟驿站快递分发系统Mybatis+系统+数据库+调试部署

热门文章

  1. Unity中的坐标与绘制准心
  2. 多普达(dopod)的来历与公司结构
  3. 国家统计局2020年统计用区划代码全量采集
  4. Python TypeError: Classmate() takes no arguments的解决
  5. C语言串口通信,自动连接设备
  6. 现货白银继续高位震荡整理 空头是否销声敛迹
  7. 疫情仍在的2020,同城配送软件为何成为商家喜爱?
  8. 记录使用pytest测试UI自动化遇到的self = <script.test01_user_login.TestUserLogin object at 0x000001A8BE16E430>问题解决
  9. 如何使用华为云快速搭建个人博客
  10. android ios 开发框架,腾讯开源新生移动跨端开发框架Hippy:支持iOS、安卓