CN106250247A - 一种基于RMI和ZooKeeper实现远程调用框架的方法 - Google Patents
一种基于RMI和ZooKeeper实现远程调用框架的方法 Download PDFInfo
- Publication number
- CN106250247A CN106250247A CN201610592995.4A CN201610592995A CN106250247A CN 106250247 A CN106250247 A CN 106250247A CN 201610592995 A CN201610592995 A CN 201610592995A CN 106250247 A CN106250247 A CN 106250247A
- Authority
- CN
- China
- Prior art keywords
- zookeeper
- rmi
- service
- isp
- registry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000001514 detection method Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者消费服务。本发明实现原理简单,依赖ZooKeeper和RMI,可以提供集群管理的能力;相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性;ZooKeeper可以提供心跳检测的功能,过滤掉已经“挂掉”的服务提供者信息。
Description
技术领域
本发明涉及软件SSR 分布式远程调用技术领域,具体涉及一种基于RMI和ZooKeeper实现远程调用框架的方法。
背景技术
在分布式的***环境中,需要一种跨虚拟机的调用。例如,服务A在JVM 1中运行,服务B在 JVM 2中运行,服务A和 服务B可相互进行远程调用,就像调用本地方法一样,可以轻松的将服务提供者与服务消费者进行分离,充分体现组件之间的弱耦合,***架构更易于拓展。
目前,随着***的越来越复杂,需要将一个复杂的***拆分成不同的子***,并且实现子***之间的相互通信,这个在分布式的***之中尤为重要。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的***提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作***的方法调用,变成了不同操作***之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作***之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。
RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用***的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象***。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。
发明内容
本发明要解决的技术问题是:本发明针对以上问题,提供一种基于RMI和ZooKeeper来实现的一种远程调用框架。相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性。RMI是跨JVM的一种远程调用实现方式,通过jdk提供强调的支持和实现,结合ZooKeeper来增强RMI服务的高可用性。
jdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。
本发明所采用的技术方案为:
一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者(ServiceConsumer)消费服务。
所述ZooKeeper提供两个功能:
1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;
2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。
所述方法实现步骤如下:
第一步:设置ZooKeeper端口信息,启动ZooKeeper,利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群;
第二步:编写服务提供者,并且发布成RMI服务,将RMI地址注册到ZooKeeper中;
第三步:服务消费者(Service Consumer)消费服务,消费者要在创建的时候连接ZooKeeper,获取RMI服务地址的信息,用来调用远程的RMI服务。
所述服务提供者在提供服务时继承 java.rmi.Remote接口,每个RMI接口的方法必须声明抛出java.rmi.RemoteException异常,这是jdk 对RMI的规范,必须遵守。
本发明的有益效果为:
本发明实现原理简单,依赖ZooKeeper和RMI,可以提供集群管理的能力;相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性;ZooKeeper可以提供心跳检测的功能,过滤掉已经“挂掉”的服务提供者信息。
附图说明
图1为一种基于RMI和ZooKeeper实现远程调用框架的方法示意图。
具体实施方式
下面结合附图,根据具体实施方式对本发明进一步说明:
实施例1:
一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者(ServiceConsumer)消费服务。
实施例2
在实施例1的基础上,本实施例所述ZooKeeper提供两个功能:
1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;
2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。
实施例3
在实施例1或2的基础上,本实施例所述方法实现步骤如下:
第一步:设置ZooKeeper端口信息,启动ZooKeeper,利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群;
第二步:编写服务提供者,并且发布成RMI服务,将RMI地址注册到ZooKeeper中;
第三步:服务消费者(Service Consumer)消费服务,消费者要在创建的时候连接ZooKeeper,获取RMI服务地址的信息,用来调用远程的RMI服务。
实施例4
在实施例3的基础上,本实施例所述服务提供者在提供服务时继承ava.rmi.Remote接口,每个RMI接口的方法必须声明抛出java.rmi.RemoteException异常,这是jdk 对RMI的规范,必须遵守。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (4)
1.一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述方法通过利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者消费服务。
2.根据权利要求1所述的一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述ZooKeeper提供两个功能:
1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;
2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。
3.根据权利要求1或2所述的一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述方法实现步骤如下:
第一步:设置ZooKeeper端口信息,启动ZooKeeper,利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群;
第二步:编写服务提供者,并且发布成RMI服务,将RMI地址注册到ZooKeeper中;
第三步:服务消费者消费服务,消费者要在创建的时候连接ZooKeeper,获取RMI服务地址的信息,用来调用远程的RMI服务。
4.根据权利要求3所述的一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述服务提供者在提供服务时继承 java.rmi.Remote接口,每个RMI接口的方法必须声明抛出java.rmi.RemoteException异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610592995.4A CN106250247A (zh) | 2016-07-26 | 2016-07-26 | 一种基于RMI和ZooKeeper实现远程调用框架的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610592995.4A CN106250247A (zh) | 2016-07-26 | 2016-07-26 | 一种基于RMI和ZooKeeper实现远程调用框架的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106250247A true CN106250247A (zh) | 2016-12-21 |
Family
ID=57603766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610592995.4A Pending CN106250247A (zh) | 2016-07-26 | 2016-07-26 | 一种基于RMI和ZooKeeper实现远程调用框架的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250247A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234670A (zh) * | 2018-01-31 | 2018-06-29 | 北京中安智达科技有限公司 | 一种基于zookeeper和netty的分布式远程调用方法 |
CN109788054A (zh) * | 2019-01-07 | 2019-05-21 | 平安科技(深圳)有限公司 | 一种分布式应用协调服务节点的配置方法、服务器及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731312A (zh) * | 2014-01-26 | 2014-04-16 | 飞狐信息技术(天津)有限公司 | 对远程方法调用的服务进行故障检查的方法和装置 |
CN105744095A (zh) * | 2016-01-28 | 2016-07-06 | 广州市讯飞樽鸿信息技术有限公司 | 一种将ivr电话接入***对接到语音信箱***的方法 |
-
2016
- 2016-07-26 CN CN201610592995.4A patent/CN106250247A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731312A (zh) * | 2014-01-26 | 2014-04-16 | 飞狐信息技术(天津)有限公司 | 对远程方法调用的服务进行故障检查的方法和装置 |
CN105744095A (zh) * | 2016-01-28 | 2016-07-06 | 广州市讯飞樽鸿信息技术有限公司 | 一种将ivr电话接入***对接到语音信箱***的方法 |
Non-Patent Citations (1)
Title |
---|
深度开源: "《http://www.open-open.com/lib/view/open1416097626352.html》", 16 November 2014 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234670A (zh) * | 2018-01-31 | 2018-06-29 | 北京中安智达科技有限公司 | 一种基于zookeeper和netty的分布式远程调用方法 |
CN109788054A (zh) * | 2019-01-07 | 2019-05-21 | 平安科技(深圳)有限公司 | 一种分布式应用协调服务节点的配置方法、服务器及介质 |
CN109788054B (zh) * | 2019-01-07 | 2022-04-15 | 平安科技(深圳)有限公司 | 一种分布式应用协调服务节点的配置方法、服务器及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103077024B (zh) | 一种支持SaaS应用流程按需定制与运行的装置及方法 | |
CN103593185B (zh) | 基于单Linux内核的多Android***共享输入显示设备的方法 | |
US11716264B2 (en) | In situ triggered function as a service within a service mesh | |
US20130212489A1 (en) | Method for Providing Multiple Mouse Inputs in a Remote Desktop Session | |
WO2017206422A1 (zh) | 一种网络设备中的远程过程调用方法及网络设备 | |
US10341287B2 (en) | Direct transmission of data between applications in a multi-tenant environment | |
CN102541558B (zh) | 在基于Android内核的电视***中集成Android应用***的方法 | |
US10296384B2 (en) | Dynamic workload deployment for data integration services | |
CN103176804A (zh) | 一种用户界面实现方法 | |
Lin et al. | Echo: An edge-centric code offloading system with quality of service guarantee | |
CN103677970A (zh) | 实现终端本地桌面和远端虚拟桌面合并显示的***和方法 | |
US20160173646A1 (en) | Automatic abstraction of flow of control in a distributed virtualization platform | |
US8924988B2 (en) | Collocation in a Java virtual machine of JSLEE and Java EE | |
CN106250247A (zh) | 一种基于RMI和ZooKeeper实现远程调用框架的方法 | |
CN103984529B (zh) | 基于飞腾处理器的x图形***并行加速方法 | |
US10802874B1 (en) | Cloud agnostic task scheduler | |
CN107888663A (zh) | 一种分发文件的方法、设备及计算机可读介质 | |
WO2007099520A3 (en) | A grid computing architecture & associated method of invoking/registering network services for subscription | |
US20140033065A1 (en) | Methods and Apparatus for User-Customizable Application Software | |
CN104063219B (zh) | 一种web***的表格开发方法及*** | |
CN102652307B (zh) | 用于计算机架构的即插即用支持的方法以及*** | |
Köhler et al. | VCE-A versatile cloud environment for scientific applications | |
Vale et al. | Model driven development of context-aware service oriented architecture | |
US10318337B2 (en) | Techniques for hybrid computer thread creation and management | |
CN108874504A (zh) | 一种多虚拟化平台的管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161221 |