CN106250247A - 一种基于RMI和ZooKeeper实现远程调用框架的方法 - Google Patents

一种基于RMI和ZooKeeper实现远程调用框架的方法 Download PDF

Info

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
Application number
CN201610592995.4A
Other languages
English (en)
Inventor
刘增辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201610592995.4A priority Critical patent/CN106250247A/zh
Publication of CN106250247A publication Critical patent/CN106250247A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

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

一种基于RMI和ZooKeeper实现远程调用框架的方法
技术领域
本发明涉及软件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异常。
CN201610592995.4A 2016-07-26 2016-07-26 一种基于RMI和ZooKeeper实现远程调用框架的方法 Pending CN106250247A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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电话接入***对接到语音信箱***的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
深度开源: "《http://www.open-open.com/lib/view/open1416097626352.html》", 16 November 2014 *

Cited By (3)

* Cited by examiner, † Cited by third party
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