CN107241351A - 一种基于Redis的RPC通信方法 - Google Patents

一种基于Redis的RPC通信方法 Download PDF

Info

Publication number
CN107241351A
CN107241351A CN201710573581.1A CN201710573581A CN107241351A CN 107241351 A CN107241351 A CN 107241351A CN 201710573581 A CN201710573581 A CN 201710573581A CN 107241351 A CN107241351 A CN 107241351A
Authority
CN
China
Prior art keywords
redis
rpc
data
communication method
server
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
CN201710573581.1A
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.)
Guangzhou Sisanjiujiu Information Technology Co Ltd
Original Assignee
Guangzhou Sisanjiujiu Information Technology 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 Guangzhou Sisanjiujiu Information Technology Co Ltd filed Critical Guangzhou Sisanjiujiu Information Technology Co Ltd
Priority to CN201710573581.1A priority Critical patent/CN107241351A/zh
Publication of CN107241351A publication Critical patent/CN107241351A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种基于Redis的RPC通信方法,涉及服务端分布式架构领域。该RPC通信方法,基于Redis的Publish命令和Subscribe命令,将被调用端服务器的RPC数据通过调用端服务器的唯一的订阅频道转发至调用端服务器,解析后再调用对应的方法,实现远程调用,由于调用端服务器和被调用端服务器之间没有直接建立连接关系,而是通过Redis服务间接的建立连接,所以,具有很高的解耦性,能够让服务端集群结构变得简单和清晰,同时避免了为每个服务端进程编写RPC连接,提高了服务端程序的开发效率。

Description

一种基于Redis的RPC通信方法
技术领域
本发明涉及服务端分布式架构领域,尤其涉及一种基于Redis的RPC通信方法。
背景技术
目前,集群服务器中,两个服务器之间需要进行远程调用时,一般采用如下方法:给每两个可能发生RPC通信的服务建立网络连接,然后通过TCP或UDP协议传递需要调用的方法名和参数。
然而,这种网状连接结构在大规模集群网络中会呈现如下弊端,其一,它增加了服务端架构的复杂性,使得服务端的调试和维护难度很高;其二,由于网络不稳定,出现调用失败的可能性较高。
发明内容
本发明的目的在于提供一种基于Redis的RPC通信方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于Redis的RPC通信方法,包括如下步骤:
S1,建立调用端服务器与Redis服务器之间的连接,获取唯一的ID;
S2,所述调用端服务器根据所述唯一的ID,订阅对应频道;
S3,被调用端服务器向所述Redis服务器发送RPC数据;
S4,所述Redis服务器将接收到的RPC数据通过S2中订阅的所述对应频道转发给所述调用端服务器;
S5,所述调用端服务器接收到Redis转发的RPC数据后对其进行解析协议,并调用对应的方法,实现远程调用。
优选地,S2中,所述订阅对应频道,具体为,通过Redis服务的Subscribe命令订阅对应频道。
优选地,S3具体为:被调用端服务器通过Redis的Publish命令向所述Redis服务器发送RPC数据。
优选地,S3中,所述RPC数据为二进制的字符串数据,包含调用方法名和参数内容。
本发明的有益效果是:本发明实施例提供的一种基于Redis的RPC通信方法,基于Redis的Publish命令和Subscribe命令,将被调用端服务器的RPC数据通过调用端服务器的唯一的订阅频道转发至调用端服务器,解析后再调用对应的方法,实现远程调用,由于调用端服务器和被调用端服务器之间没有直接建立连接关系,而是通过Redis服务间接的建立连接,所以,具有很高的解耦性,能够让服务端集群结构变得简单和清晰,同时避免了为每个服务端进程编写RPC连接,提高了服务端程序的开发效率。
附图说明
图1是本发明实施例提供的基于Redis的RPC通信方法的流程示意图;
图2是调用端服务器的工作流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1-2所示,本发明实施例提供了一种基于Redis的RPC通信方法,包括如下步骤:
S1,建立调用端服务器与Redis服务器之间的连接,获取唯一的ID;
S2,所述调用端服务器根据所述唯一的ID,订阅对应频道;
S3,被调用端服务器向所述Redis服务器发送RPC数据;
S4,所述Redis服务器将接收到的RPC数据通过S2中订阅的所述对应频道转发给所述调用端服务器;
S5,所述调用端服务器接收到Redis转发的RPC数据后对其进行解析协议,并调用对应的方法,实现远程调用。
其中,S2中,所述订阅对应频道,具体可以为,通过Redis服务的Subscribe命令订阅对应频道。
S3具体可以为:被调用端服务器通过Redis的Publish命令向所述Redis服务器发送RPC数据。
S3中,所述RPC数据为二进制的字符串数据,包含调用方法名和参数内容。
其中,RPC(Remote Procedure Call Protocol)为远程过程调用协议。
本发明提供的上述方法的原理是:给每个服务命名,通过Redis的Subscribe命令订阅自身对应的频道,当需要远程调用时,通过Reids的Publish命令给对应进程的频道发送数据。当服务端进程收到Reids转发的数据后,解析这些数据,并使用解析出来的方法名和参数去执行对应的方法。
在具体实施过程中,上述方法可分为服务初始化阶段、RPC调用、RPC处理三个阶段。其中服务初始化阶段为服务端程序开启时,建立Redis连接,并通过Redis的Subscribe命令订阅该服务对应的频道。RPC调用阶段为服务端程序向另一个服务端程序发起RPC调用,主要是通过Redis的Publish命令向Redis发送RPC数据,通过Redis将该数据转发给对应服务。RPC处理阶段为接受RPC调用的服务处理RPC数据,并做相应处理的过程。
上述三个阶段的具体实现方式为:
1、订阅频道
订阅频道阶段为程序连接Redis并发出Subscribe命令的过程,具体可以分为3个步骤。
(1)根据配置文件或启动参数,确定每个服务的唯一id;
(2)服务程序与Redis建立连接;
(3)服务程序通过Subscribe命令,订阅自身id的频道。
2、发送RPC数据
需要调用RPC协议的服务通过Redis的Publish命令给Redis发送RPC数据,RPC数据为二进制的字符串数据,包含了调用方法名、参数等内容。一种可能的数据格式如下表所示:
被调用端将以上协议格式(或其他类似协议)的二进制数据,通过Redis的Publish命令发送到调用端id所对应的频道。Redis将会把数据转发到订阅对应频道的服务端程序上,即调用端上。
3、RPC处理
调用端收到Redis转发的数据后,先解析协议,将方法名和各个参数解析出来,然后调用对应的方法,实现远程调用。如若调用端需要回应被调用端,调用端亦可通过Publish命名向被调用端推送数据。
上述方法中,服务器集群包含各个服务端程序,以及一个Redis服务(或Redis集群),服务端程序之间并不相互连接,通过Redis转发消息,实现RPC调用。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的一种基于Redis的RPC通信方法,基于Redis的Publish命令和Subscribe命令,将被调用端服务器的RPC数据通过调用端服务器的唯一的订阅频道转发至调用端服务器,解析后再调用对应的方法,实现远程调用,由于调用端服务器和被调用端服务器之间没有直接建立连接关系,而是通过Redis服务间接的建立连接,所以,具有很高的解耦性,能够让服务端集群结构变得简单和清晰,同时避免了为每个服务端进程编写RPC连接,提高了服务端程序的开发效率。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (4)

1.一种基于Redis的RPC通信方法,其特征在于,包括如下步骤:
S1,建立调用端服务器与Redis服务器之间的连接,获取唯一的ID;
S2,所述调用端服务器根据所述唯一的ID,订阅对应频道;
S3,被调用端服务器向所述Redis服务器发送RPC数据;
S4,所述Redis服务器将接收到的RPC数据通过S2中订阅的所述对应频道转发给所述调用端服务器;
S5,所述调用端服务器接收到Redis转发的RPC数据后对其进行解析协议,并调用对应的方法,实现远程调用。
2.根据权利要求1所述的基于Redis的RPC通信方法,其特征在于,S2中,所述订阅对应频道,具体为,通过Redis服务的Subscribe命令订阅对应频道。
3.根据权利要求1所述的基于Redis的RPC通信方法,其特征在于,S3具体为:被调用端服务器通过Redis的Publish命令向所述Redis服务器发送RPC数据。
4.根据权利要求1所述的基于Redis的RPC通信方法,其特征在于,S3中,所述RPC数据为二进制的字符串数据,包含调用方法名和参数内容。
CN201710573581.1A 2017-07-14 2017-07-14 一种基于Redis的RPC通信方法 Pending CN107241351A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710573581.1A CN107241351A (zh) 2017-07-14 2017-07-14 一种基于Redis的RPC通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710573581.1A CN107241351A (zh) 2017-07-14 2017-07-14 一种基于Redis的RPC通信方法

Publications (1)

Publication Number Publication Date
CN107241351A true CN107241351A (zh) 2017-10-10

Family

ID=59990491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710573581.1A Pending CN107241351A (zh) 2017-07-14 2017-07-14 一种基于Redis的RPC通信方法

Country Status (1)

Country Link
CN (1) CN107241351A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200077A (zh) * 2018-01-18 2018-06-22 北京网信云服信息科技有限公司 一种调用接口的方法及装置
CN108418894A (zh) * 2018-03-26 2018-08-17 威创软件南京有限公司 一种基于push技术的分布式数据同步方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291343A (zh) * 2008-05-20 2008-10-22 北京锐安科技有限公司 一种基于透明代理设备的远程控制方法及其系统
US20120233668A1 (en) * 2011-03-08 2012-09-13 Rackspace Us, Inc. Pluggable Allocation in a Cloud Computing System
CN104410702A (zh) * 2014-12-08 2015-03-11 畅捷通信息技术股份有限公司 远程服务请求方法、响应方法、请求装置与响应装置
CN105721512A (zh) * 2016-05-06 2016-06-29 深圳前海大数点科技有限公司 一种远程过程调用系统及其方法
CN105872578A (zh) * 2016-03-30 2016-08-17 青岛海信电器股份有限公司 一种调用方法及服务器
CN106201739A (zh) * 2016-06-29 2016-12-07 上海浦东发展银行股份有限公司信用卡中心 一种基于Redis的Storm的远程调用方法
CN106888218A (zh) * 2017-04-01 2017-06-23 网易(杭州)网络有限公司 消息处理方法、装置、客户端及服务端

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291343A (zh) * 2008-05-20 2008-10-22 北京锐安科技有限公司 一种基于透明代理设备的远程控制方法及其系统
US20120233668A1 (en) * 2011-03-08 2012-09-13 Rackspace Us, Inc. Pluggable Allocation in a Cloud Computing System
CN104410702A (zh) * 2014-12-08 2015-03-11 畅捷通信息技术股份有限公司 远程服务请求方法、响应方法、请求装置与响应装置
CN105872578A (zh) * 2016-03-30 2016-08-17 青岛海信电器股份有限公司 一种调用方法及服务器
CN105721512A (zh) * 2016-05-06 2016-06-29 深圳前海大数点科技有限公司 一种远程过程调用系统及其方法
CN106201739A (zh) * 2016-06-29 2016-12-07 上海浦东发展银行股份有限公司信用卡中心 一种基于Redis的Storm的远程调用方法
CN106888218A (zh) * 2017-04-01 2017-06-23 网易(杭州)网络有限公司 消息处理方法、装置、客户端及服务端

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200077A (zh) * 2018-01-18 2018-06-22 北京网信云服信息科技有限公司 一种调用接口的方法及装置
CN108418894A (zh) * 2018-03-26 2018-08-17 威创软件南京有限公司 一种基于push技术的分布式数据同步方法
CN108418894B (zh) * 2018-03-26 2022-01-11 威创软件南京有限公司 一种基于push技术的分布式数据同步方法

Similar Documents

Publication Publication Date Title
JP4495137B2 (ja) 電気通信クライアントサービス要求をサポートするためのサービスブローカー統合層
CA2770138C (en) Cluster server of an instant messaging system and messaging method between clusters
CN103856440B (zh) 一种基于分布式总线的消息处理方法、服务器和系统
EP1780983B1 (en) Service broker integration layer for supporting telecommunication client service requests
US9065666B2 (en) System and method of multi-media conferencing between universal plug and play (UPnP) enabled telephony devices and wireless area network (WAN) devices
CN109889567B (zh) 支持海量设备接入的物联网平台的实现方法
CN103139051A (zh) 一种基于Websocket协议的即时通讯方法
WO2012151980A1 (zh) 业务处理服务器、系统和方法
US11146517B2 (en) Intermediary device for data message network routing
CN103248660A (zh) 一种云端订阅下载的方法和系统
CN114866528A (zh) 一种基于MQTT和Websocket的数据通讯方法
CN109889521A (zh) 存储器、通信通道复用实现方法、装置和设备
CN109756695A (zh) 一种会议视频流显示的方法和装置
WO2023159879A1 (zh) 消息的处理方法及系统、存储介质、电子装置
CN107241351A (zh) 一种基于Redis的RPC通信方法
CN108289055A (zh) 一种基于Redis订阅服务的分布式实时聊天系统及方法
CN108259605B (zh) 一种基于多数据中心的数据调用系统及方法
CN109698818A (zh) 一种获取在线用户以及跨流媒体通信的方法和装置
CN103181140A (zh) 识别服务请求类型的方法、媒体服务器和终端设备
WO2010043138A1 (zh) 一种智能网业务库存取海量数据的系统、装置及方法
CN107872538A (zh) 解耦tcp长连接的业务处理方法、反向代理和业务服务器
WO2013189421A2 (zh) 分布式的话单统计方法、装置以及系统
CN102316142A (zh) 一种实现的基于p2p的远程视频教育的方法
CN102104853A (zh) 基于移动终端网页数据业务的服务器系统及其业务通信方法
CN110072139A (zh) 一种基于视联网的共享方法和中转服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for 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: 20171010