CN112783672B - 一种远程过程调用处理方法及系统 - Google Patents
一种远程过程调用处理方法及系统 Download PDFInfo
- Publication number
- CN112783672B CN112783672B CN202110108495.XA CN202110108495A CN112783672B CN 112783672 B CN112783672 B CN 112783672B CN 202110108495 A CN202110108495 A CN 202110108495A CN 112783672 B CN112783672 B CN 112783672B
- Authority
- CN
- China
- Prior art keywords
- service
- service provider
- call
- rpc
- request
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000004806 packaging method and process Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 29
- 238000012544 monitoring process Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 abstract description 7
- 238000011161 development Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000006467 substitution reaction 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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
-
- 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/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种远程过程调用处理方法及系统,包括:发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。通过本发明设计的远程过程调用方法可以减少特殊时间节点因为流量陡增而导致系统宕机、反应慢及数据丢失问题,同时也大大节省了各项管理成本的支出,为业务的发展和扩展提供了稳定的系统支撑。
Description
技术领域
本发明涉及互联网应用技术领域,尤其涉及一种远程过程调用处理方法及系统。
背景技术
在当下日益复杂的业务场景和大流量的冲击下,常规的rpc服务系统架构在面对一些特殊场景的实际应用中显得捉襟见肘,开展运营推广、促销、秒杀等特殊事件时,流量稍大就常常容易出现服务宕机,业务请求缓慢,数据请求丢失等等情况。
现有技术中采用如下方案来处理上述问题:
方案一:优化代码增加缓存区;
方案二:扩充硬件,增加重点服务的服务器部署数量。
上述方案存在如下问题:平时整个平台的各个服务系统流量都相对稳定,常规化的硬件部署完全可以满足需求。只为应对特殊时间节点的资源开销而增加了大量硬件成本。由于架构自身的不灵活性无法弹性调配利用资源,无法对服务进行分布式集群部署和监控,大大限制了服务器的资源利用度和系统负载量。服务间的通信方式为Http invoken,rpc模式,每次调用请求都需要先进行服务通信连接,对象实例化等额外开销,延缓了服务响应时间。当处在复杂业务场景多个服务调用时还可能出现某个服务处理失败或连接超时,从而导致数据的不一致性。所以对复杂业务应用系统间的业务交互,数据交互而言,需要有一种更为快速、经济的手段对各服务间通信的稳定性,数据的一致性进行处理。
发明内容
本发明提供一种远程过程调用处理方法及系统,用以解决现有技术中存在应对高并发高吞吐量服务请求时所需硬件成本较高且因流量陡增而导致系统宕机、反应慢及数据丢失问题的缺陷,实现快速、经济的对各服务间通信的稳定性,数据的一致性进行处理。
本发明提供的一种远程过程调用处理方法,包括:
发送远程过程调用RPC请求信息,并将所述RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
所述RabbitMQ消息队列根据所述RPC服务调用队列消息执行RPC服务调用;
其中,所述RPC请求信息包括:目标服务提供者地址、服务业务请求以及与所述服务业务请求对应的服务路径信息。
根据本发明提供的一种远程过程调用处理方法,所述目标服务提供者地址通过如下方式确定:
获取workerman中服务提供者地址集合,并利用zookeeper部署在服务提供者的监控调度组件对各服务提供者进行监听,以获取所述各服务提供者的优先级属性信息;
将所述各服务提供者的优先级属性信息按照从大到小顺序排序,确定前预设数量个优先级属性信息对应的所述目标服务提供者地址;
其中,所述目标服务提供者地址包括:所述目标服务提供者的IP地址和所述目标服务提供者的访问端口号。
根据本发明提供的一种远程过程调用处理方法,所述获取所述各服务提供者的优先级属性信息,包括:
根据所述监控调度组件监听所述各服务提供者时产生的服务日调用量日志文件,从所述服务日调用量日志文件中获取所述各服务提供者的服务调用频次;
根据所述各服务提供者的服务调用频次和服务业务请求类型的权重系数,确定所述各服务提供者的权重;
根据历史预设时间段内的所述服务调用频次和所述各服务提供者的权重,确定所述各服务提供者的优先级属性信息。
根据本发明提供的一种远程过程调用处理方法,所述服务业务请求类型的权重系数通过如下方式获取:
将所述服务业务请求类型进行等级划分,以获取核心服务业务请求类型对应的第一权重系数和普通服务业务请求类型对应的第二权重系数。
根据本发明提供的一种远程过程调用处理方法,在所述获取所述各服务提供者的服务调用频次之后,还包括:
若判断所述各服务提供者的服务调用频次达到预设最大频次时,则增加新的服务提供者,并将所述新的服务提供者一并作为所述目标服务提供者。
根据本发明提供的一种远程过程调用处理方法,所述RabbitMQ消息队列用于对原子性服务业务请求包括的多个服务场景进行拆解,并基于异步并行处理对拆解后的原子性服务业务请求执行所述RPC服务调用。
根据本发明提供的一种远程过程调用处理方法,所述根据所述RPC服务调用队列消息执行RPC服务调用,包括:
根据所述RPC服务调用队列消息中的所述目标服务提供者地址,确定执行所述服务业务请求的所述目标服务提供者,以使所述目标服务提供者根据所述服务路径信息执行所述RPC服务调用。
本发明还提供一种远程过程调用处理系统,包括:服务调用消息生成模块和服务调用执行模块;
所述服务调用消息生成模块,用于发送远程过程调用RPC请求信息,并将所述RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
所述服务调用执行模块,用于供所述RabbitMQ消息队列根据所述RPC服务调用队列消息执行RPC服务调用;
其中,所述RPC请求信息包括:目标服务提供者地址、服务业务请求以及与所述服务业务请求对应的服务路径信息。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的远程过程调用处理方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的远程过程调用处理方法的步骤。
本发明提供一种远程过程调用处理方法及系统,通过将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列,并根据RPC服务调用队列消息执行RPC服务调用,实现了远程过程调用方法,减少了特殊时间节点因为流量陡增而导致系统宕机、反应慢及数据丢失问题,同时也大大节省了各项管理成本的支出,为业务的发展和扩展提供了稳定的系统支撑。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的远程过程调用处理方法的流程示意图之一;
图2是本发明提供的远程过程调用处理方法的流程示意图之二;
图3是本发明提供的远程过程调用处理系统的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明提供的远程过程调用处理方法的流程示意图之一,如图1所示,方法包括:
S1、发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
S2、RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;
其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。
基于复杂的多业务形态大流量数据交互场景,尚未见到以php为开发语言性能较好的弹性分布式架构方案。弹性分布式架构主要指:系统可根据各个服务接口的实时流量请求,空闲资源的动态调配和服务转发,应对部分业务场景的流量洪峰。
以往对于复杂业务系统的架构都较为繁杂和沉重,除了大大增加了管理成本和服务器资源成本外,对于未来业务的系统快速扩展和负载承压也都有着很大的局限性,日益增加的关键信息收集也拖累了系统的负载能力还用户体验,代码迭代会越来越繁杂混乱,不便管理。
基于此,本发明提出了一种解决方法,解决了在多服务复杂业务请求过程中,保证通信的稳定、一致性,降低了资源的开销,解决了多服务分布式调用处理时候的协同一致性和数据一致性。
具体地,由消息消费者(调用者)例如客户端发送远程过程调用RPC请求消息,并将RPC请求消息转化为RPC服务调用队列消息,提交到RabbitMQ消息队列,其中RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。
消息队列可以看做是一个消息的链表,可以把消息看作一个记录,其具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以从消息队列中读走消息,而消息队列就是在消息的传输过程中保存消息的容器。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦和通讯。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性和安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Java、Python、Ruby、.NET、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,具有很高的易用性和可用性。
RabbitMQ对外提供的API中最基本的对象包括通过ConnectionFactory、Connection、Channel。其中,Connection是RabbitMQ的socket链接,封装了socket协议相关部分逻辑。ConnectionFactory为Connection的制造工厂。Channel为RabbitMQ提供对外接口,使得大部分的业务操作都可以在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange和发布消息。
Queue(队列)是RabbitMQ的内部对象,用于存储消息。
RabbitMQ中的消息都只能存储在Queue中,生产者生产消息并最终投递到Queue中,消费者可以从Queue中获取消息并消费。
生产者Send Message“A”被传送到Queue中,消费者发现消息队列Queue中有订阅的消息,就会将这条消息A读取出来进行一些列的业务操作。这里可以是一个消费者正对应一个队列Queue,也可以多个消费者订阅同一个队列Queue。
本发明提供的远程过程调用处理方法,通过将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列,并根据RPC服务调用队列消息执行RPC服务调用,实现了远程过程调用方法,减少了特殊时间节点因为流量陡增而导致系统宕机、反应慢及数据丢失问题,同时也大大节省了各项管理成本的支出,为业务的发展和扩展提供了稳定的系统支撑。
进一步地,在一个实施例中,目标服务提供者地址通过如下方式确定:
获取workerman中服务提供者地址集合,并利用zookeeper部署在服务提供者的监控调度组件对各服务提供者进行监听,以获取各服务提供者的优先级属性信息;
将各服务提供者的优先级属性信息按照从大到小顺序排序,确定前预设数量个优先级属性信息对应的目标服务提供者地址;
其中,目标服务提供者地址包括:目标服务提供者的IP地址和目标服务提供者的访问端口号。
通过在客户端和服务提供者之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。
具体地,本发明通过workerman长连接,启用多个服务进程,所有对象常驻内存,避免重复初始化和链接的额外开销耗时。在基于zookeeper对各服务提供者上部署的相应服务进行集中注册和监听,根据服务提供者的优先级属性信息,并按照各服务提供者的优先级属性信息的大小进行排序,选择优先级属性高的服务提供者来执行RPC服务调用。
客户端A根据执行RPC服务调用的目标服务提供者B的(主机名和IP地址)以及特定的端口,然后根据RPC服务调用队列消息中服务业务请求,服务提供者B进行本地调用,并根据与服务业务请求对应的服务路径信息调用对应的代码文件的方法或者函数信息,完成RPC服务的一个调用。
采用workerman构建RPC子系统,同时zookeeper监控调度组件程序使用UDP协议异步监听收集各个服务提供者的调用情况,启动workerman服务时就自动将所有服务业务请求对应的代码文件注册到了内存中,避免重复初始化的消耗。
在各服务提供者的workerman中user/order/activity…服务模块的/config/workerman配置文件中配置服务监听端口、日志上报信息及zookeeper地址信息,在center模块后台初始化服务,将各服务提供者地址注册到zookeeper中,并启动workerman服务端。利用zookeeper在各服务提供者上层增加监控调度组件,zookeeper中随机获取一个空闲的用户服务机器节点,建立tcp连接,基于JsonNL协议调用远程服务端口,上报到监控端口(workerman.php中配置的监控地址)查看端口号,以监听各个服务提供者的服务状态。通过监听注册服务的心跳包来实时管理各个服务提供者的服务状态,通过workerman收集的服务业务请求信息(如服务日调用量、核心服务业务请求量)来自动弹性调整各服务提供者的优先级属性信息。
如果RPC服务调用出现异常,还可以指定重试调用,并可设置重试调用的次数和间隔时间。基于服务提供者的优先级属性信息执行RPC服务调用,可以保障关键业务服务能得到绿色通过,提高核心服务业务请求的执行效率,而普通服务业务请求可以降低优先级,降低系统资源的使用,保障核心业务服务请求的执行。RabbitMQ消息队列消费者执行目标服务调用成功后,返回执行结果给RabbitMQ消息队列服务器,再通过异步通知客户端执行结果。
本发明提供的远程过程调用处理方法,通过workerman的多进程,常驻内存,异步多线程处理等特性,可以极大的加快程序运算速度和响应时间,同时UDP协议模式异步数据收集机制,可以在极小开销的情况下快速收集一些服务调用情况数据,能够实时的掌握各个服务的流量状态,在通过zookeeper对服务的注册和监听管理各个服务提供者和消费者,做到服务层级的业务隔离划分,有益于未来系统架构的扩展的管理,也更智能的管理各个服务的提供、消费情况弹性扩充。
进一步地,在一个实施例中,获取各服务提供者的优先级属性信息,包括:
根据监控调度组件监听各服务提供者时产生的服务日调用量日志文件,从服务日调用量日志文件中获取各服务提供者的服务调用频次;
根据各服务提供者的服务调用频次和服务业务请求类型的权重系数,确定各服务提供者的权重;
根据历史预设时间段内的服务调用频次和各服务提供者的权重,确定各服务提供者的优先级属性信息。
进一步地,在一个实施例中,服务业务请求类型的权重系数通过如下方式获取:
将服务业务请求类型进行等级划分,以获取核心服务业务请求类型对应的第一权重系数和普通服务业务请求类型对应的第二权重系数。
具体地,根据监听注册服务的心跳包确定监听正常的服务提供者,只有监听正常的服务提供者才会被调用到,才能产生日志文件,日志文件存在专门的独立的日志服务器,日志服务器中存储有服务提供者的行为信息,例如与服务日调用量对应的服务调用频次。
根据服务业务请求类型的不同将服务业务请求划分为核心服务业务请求类型和普通服务业务请求类型,并用不同服务业务请求类型的权重系数来表示,具体地:
核心服务业务请求类型例如账户服务业务请求、订单服务业务请求等对应的第一权重系数,可以设置为1;普通服务业务请求类型如用户行为服务业务请求、浏览日志服务业务请求等对应的第二权重系数,可以设置为0.5。需要说明的是第一权重系数与第二权重系数的值可以自由设置,且第一权重系数的值大于第二权重系数的值。
根据获取的各服务提供者的服务调用频次和服务业务请求类型的权重系数,确定各服务提供者的权重为:服务提供者的权重=服务调用频次*服务业务请求类型的权重系数。
根据历史预设时间段内的服务调用频次和各服务提供者的权重,确定各服务提供者的优先级属性信息,具体地:根据服务提供者的权重和小时(上个小时)调用量即上个小时服务调用频次确定服务提供者的优先级属性信息:优先级属性信息=服务提供者的权重/小时调用量*服务业务请求类型的权重系数。
本发明提供的远程过程调用处理方法,通过根据各服务提供者的权重和服务调用频次来弹性转发相应的服务业务请求,当核心服务业务请求量上升将自动提高权重,并根据当前各服务提供者上部署的服务监听,自动追加注册较为空闲的集群服务、增加服务进程数量,丢弃低权重服务请求,反之同理,流量缓和自动降低权重,踢除zookeeper中额外的注册服务,以达到弹性的分布式资源调配目的。
进一步地,在一个实施例中,在获取各服务提供者的服务调用频次之后,还包括:
若判断各服务提供者的服务调用频次达到预设最大频次时,则增加新的服务提供者,并将新的服务提供者一并作为目标服务提供者。具体地,受到服务提供者的最大负载能力限制,当各目标服务提供者的服务调用频次达到预设最大频次时,需要增加目标服务提供者的数量。
例如,如果单个服务提供者的当前服务调用频次超过预设最大频次(50万)就会启用新的服务,此时,会有新的服务提供者被注册进zookeeper,并最为目标服务提供者与原有的目标服务提供者一起进行服务业务请求处理。
本发明提供的远程过程调用处理方法,通过增加新的目的服务提供者设备,实现流量分发,将负载(服务业务请求请求)进行平衡、分摊到多个服务提供者上进行执行,提高了服务的性能和可靠性。
进一步地,在一个实施例中,RabbitMQ消息队列用于对原子性服务业务请求包括的多个服务场景进行拆解,并基于异步并行处理对拆解后的原子性服务业务请求执行RPC服务调用。
具体地,使用RabbitMQ构建异步消息队列中间件,对原子性服务业务请求调用多个服务场景进行调用拆解,其中,可拆分服务场景具体包括:
1.订单支付(拆分为原子性服务业务请求如:支付单相应逻辑处理、订单数据逻辑处理和用户账户相关逻辑处理);
2.商品收藏(拆分为原子性服务业务请求:商品关注度处理和用户收藏记录处理);
3.订单取消(拆分为原子性服务业务请求:用户账户金额处理、商品库存处理和订单状态处理);
本发明中的原子性服务业务请求实质指:在一个操作场景下(如:订单支付,收藏商品等)同一服务业务请求类型的数据连贯操作会归到一类,调用一个服务路径信息对应的代码文件去完成(不同业务类型为不同服务模块,如用户服务,商品服务,订单服务)。
同一服务业务请求类型的数据连贯操作:同一个服务业务请求通过一个服务路径信息对应的代码文件执行。通过RabbitMQ队列异步并行处理,增加失败重发机制,具体地:
为了保证一个服务业务请求行为里发生多个服务调用时,数据一致性问题,通过在业务代码中所有修改写入操作均做异常抛出,且只在最外层的控制器中进行异常捕获,防止异常混乱和程序的多余执行。至此,凡是必要的核心服务业务请求遇到错误或异常都会第一时间抛出被捕获,凡是可以并行的服务业务请求都将异步存储记录,然后进入消息队列中间件中的RabbitMQ队列,当遇到各种特殊情况导致的消息发送失败时,增加失败重发机制,以实现自动异步自动重发。
其中,失败重发机制实质是:消费者收到Queue中的消息,但没有处理完成就宕机(或出现其他意外)的情况,这种情况下就可能会导致消息丢失。为了避免这种情况发生,消费者在消费完消息后发送一个回执给RabbitMQ消息队列,RabbitMQ消息队列收到消息回执(Message acknowledgment)后才将该消息从Queue中移除;如果RabbitMQ消息队列没有收到回执并检测到消费者的RabbitMQ消息队列连接断开,则RabbitMQ消息队列会将该消息发送给其他消费者进行处理。
本发明提供的远程过程调用处理方法,使用RabbitMQ构建异步消息队列中间件,对原子性服务业务请求调用多个服务场景进行调用拆解,通过RabbitMQ消息队列异步并行处理,增加失败重发机制,保证了数据的一致性。
进一步地,在一个实施例中,步骤S2可以具体包括:
S21、根据RPC服务调用队列消息中的目标服务提供者地址,确定执行服务业务请求的目标服务提供者,以使目标服务提供者根据服务路径信息执行RPC服务调用。
具体地,图2是本发明提供的远程过程调用处理方法的流程示意图之二,如图2所示,由RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用。在收到RPC服务调用队列消息后,可根据预先配置好的zookeeper地址,链接zookeeper,以获取对应workerman服务提供者地址集合,根据各服务提供者的服务调用情况(服务日调用量和调用频次),从服务提供者集合中推举空闲服务提供者(即,目标服务提供者),并通过布置在目标服务提供者的workerman服务,根据RPC服务调用队列消息中的服务业务请求以及与服务业务请求对应的服务路径信息,转化为本地方法调用,返回结果集并执行结果返回,最后由消费者得到远程调用结果。其中,zookeeper的数量可以设置多个,以便在其中一个zookeeper停止服务时作为备用。
需要说明的是服务路径信息可以为user.wallet,其实质是与服务业务请求对应的方法地址(代码文件的方法地址),服务提供者会根据服务路径信息执行相应的方法,完成RPC服务调用。
本发明提供的远程过程调用处理方法,解决了在多服务复杂业务请求过程中,保证通信的稳定、一致性,降低了资源的开销,解决了多服务分布式调用处理时候的协同一致性和数据一致性。
下面对本发明提供的远程过程调用处理系统进行描述,下文描述的远程过程调用处理系统与上文描述的远程过程调用处理方法可相互对应参照。
图3是本发明提供的轨道车辆的控制系统校时装置的结构示意图,如图3所示,包括:服务调用消息生成模块310和服务调用执行模块320;
服务调用消息生成模块310,用于发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
服务调用执行模块320,用于供RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;
其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。
本发明提供的轨道车辆的控制系统校时装置,通过将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列,并根据RPC服务调用队列消息执行RPC服务调用,实现了远程过程调用方法,减少了特殊时间节点因为流量陡增而导致系统宕机、反应慢及数据丢失问题,同时也大大节省了各项管理成本的支出,为业务的发展和扩展提供了稳定的系统支撑。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(CommunicationsInterface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行远程过程调用处理方法,该方法包括:
发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;
其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的远程过程调用处理方法,该方法包括:
发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;
其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的远程过程调用处理方法,该方法包括:
发送远程过程调用RPC请求信息,并将RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
RabbitMQ消息队列根据RPC服务调用队列消息执行RPC服务调用;
其中,RPC请求信息包括:目标服务提供者地址、服务业务请求以及与服务业务请求对应的服务路径信息。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种远程过程调用处理方法,其特征在于,包括:
发送远程过程调用RPC请求信息,并将所述RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
所述RabbitMQ消息队列根据所述RPC服务调用队列消息执行RPC服务调用;
其中,所述RPC请求信息包括:目标服务提供者地址、服务业务请求以及与所述服务业务请求对应的服务路径信息;
所述目标服务提供者地址通过如下方式确定:
获取workerman中服务提供者地址集合,并利用zookeeper部署在服务提供者的监控调度组件对各服务提供者进行监听,以获取所述各服务提供者的优先级属性信息;
将所述各服务提供者的优先级属性信息按照从大到小顺序排序,确定前预设数量个优先级属性信息对应的所述目标服务提供者地址;
其中,所述目标服务提供者地址包括:所述目标服务提供者的IP地址和所述目标服务提供者的访问端口号;
所述获取所述各服务提供者的优先级属性信息,包括:
根据所述监控调度组件监听所述各服务提供者时产生的服务日调用量日志文件,从所述服务日调用量日志文件中获取所述各服务提供者的服务调用频次;
根据所述各服务提供者的服务调用频次和服务业务请求类型的权重系数,确定所述各服务提供者的权重;
根据历史预设时间段内的所述服务调用频次和所述各服务提供者的权重,确定所述各服务提供者的优先级属性信息;所述优先级属性信息=所述各服务提供者的权重/小时调用量*服务业务请求类型的权重系数;所述小时调用量基于所述服务调用频次确定;
所述服务业务请求类型的权重系数通过如下方式获取:
将所述服务业务请求类型进行等级划分,以获取核心服务业务请求类型对应的第一权重系数和普通服务业务请求类型对应的第二权重系数。
2.根据权利要求1所述的远程过程调用处理方法,其特征在于,
在所述获取所述各服务提供者的服务调用频次之后,还包括:
若判断所述各服务提供者的服务调用频次达到预设最大频次时,则增加新的服务提供者,并将所述新的服务提供者一并作为所述目标服务提供者。
3.根据权利要求1所述的远程过程调用处理方法,其特征在于,所述RabbitMQ消息队列用于对原子性服务业务请求包括的多个服务场景进行拆解,并基于异步并行处理对拆解后的原子性服务业务请求执行所述RPC服务调用。
4.根据权利要求1-3任一项所述的远程过程调用处理方法,其特征在于,所述根据所述RPC服务调用队列消息执行RPC服务调用,包括:
根据所述RPC服务调用队列消息中的所述目标服务提供者地址,确定执行所述服务业务请求的所述目标服务提供者,以使所述目标服务提供者根据所述服务路径信息执行所述RPC服务调用。
5.一种远程过程调用处理系统,其特征在于,包括:服务调用消息生成模块和服务调用执行模块;
所述服务调用消息生成模块,用于发送远程过程调用RPC请求信息,并将所述RPC请求信息封装成RPC服务调用队列消息提交到RabbitMQ消息队列;
所述服务调用执行模块,用于供所述RabbitMQ消息队列根据所述RPC服务调用队列消息执行RPC服务调用;
其中,所述RPC请求信息包括:目标服务提供者地址、服务业务请求以及与所述服务业务请求对应的服务路径信息;
所述目标服务提供者地址通过如下方式确定:
获取workerman中服务提供者地址集合,并利用zookeeper部署在服务提供者的监控调度组件对各服务提供者进行监听,以获取所述各服务提供者的优先级属性信息;
将所述各服务提供者的优先级属性信息按照从大到小顺序排序,确定前预设数量个优先级属性信息对应的所述目标服务提供者地址;
其中,所述目标服务提供者地址包括:所述目标服务提供者的IP地址和所述目标服务提供者的访问端口号;
所述获取所述各服务提供者的优先级属性信息,包括:
根据所述监控调度组件监听所述各服务提供者时产生的服务日调用量日志文件,从所述服务日调用量日志文件中获取所述各服务提供者的服务调用频次;
根据所述各服务提供者的服务调用频次和服务业务请求类型的权重系数,确定所述各服务提供者的权重;
根据历史预设时间段内的所述服务调用频次和所述各服务提供者的权重,确定所述各服务提供者的优先级属性信息;
所述优先级属性信息=所述各服务提供者的权重/小时调用量*服务业务请求类型的权重系数;所述小时调用量基于所述服务调用频次确定;
所述服务业务请求类型的权重系数通过如下方式获取:
将所述服务业务请求类型进行等级划分,以获取核心服务业务请求类型对应的第一权重系数和普通服务业务请求类型对应的第二权重系数。
6.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的远程过程调用处理方法的步骤。
7.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的远程过程调用处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110108495.XA CN112783672B (zh) | 2021-01-27 | 2021-01-27 | 一种远程过程调用处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110108495.XA CN112783672B (zh) | 2021-01-27 | 2021-01-27 | 一种远程过程调用处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783672A CN112783672A (zh) | 2021-05-11 |
CN112783672B true CN112783672B (zh) | 2024-04-05 |
Family
ID=75758103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110108495.XA Active CN112783672B (zh) | 2021-01-27 | 2021-01-27 | 一种远程过程调用处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783672B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220485B (zh) * | 2021-05-25 | 2023-05-05 | 金蝶软件(中国)有限公司 | 远程过程调用服务的处理方法、装置和可读存储介质 |
CN114301896A (zh) * | 2021-12-31 | 2022-04-08 | 高新兴物联科技有限公司 | 通信方法、通信系统及计算机可读存储介质 |
CN114938387B (zh) * | 2022-07-22 | 2022-11-11 | 浙江中控技术股份有限公司 | 一种数据传输方法、装置、系统及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN106293969A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | Linux进程间通讯方法及装置、进程退出监听方法 |
CN106713226A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种用于分布式系统的远程过程调用处理方法和系统 |
CN109040094A (zh) * | 2018-08-21 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种基于RabbitMQ实现异步RPC的方法及系统 |
CN110018905A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110162389A (zh) * | 2019-05-15 | 2019-08-23 | 广州视源电子科技股份有限公司 | 应用程序的启动方法、装置和智能交互设备 |
CN110392100A (zh) * | 2019-07-12 | 2019-10-29 | 辽宁途隆科技有限公司 | 高并发事件的处理方法及装置、存储介质、计算机设备 |
CN110457129A (zh) * | 2019-07-19 | 2019-11-15 | 深圳联友科技有限公司 | 一种基于zookeeper的优先级锁抢占方法和系统 |
CN111245822A (zh) * | 2020-01-08 | 2020-06-05 | 北京松果电子有限公司 | 远程过程调用处理方法、装置及计算机存储介质 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
CN111581083A (zh) * | 2020-04-26 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 一种接口测试方法、装置、电子设备及存储介质 |
CN111782666A (zh) * | 2020-06-19 | 2020-10-16 | 京东数字科技控股有限公司 | 一种缓存服务系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625650B2 (en) * | 1998-06-27 | 2003-09-23 | Intel Corporation | System for multi-layer broadband provisioning in computer networks |
US9270782B2 (en) * | 2012-06-12 | 2016-02-23 | Intermec Ip Corp. | System and method for managing network communications between server plug-ins and clients |
US11630832B2 (en) * | 2017-06-07 | 2023-04-18 | Sap Se | Dynamic admission control for database requests |
US11051190B2 (en) * | 2018-03-19 | 2021-06-29 | Motorola Solutions, Inc. | Adaptive talkgroup selection and resource assignment for listening posts |
-
2021
- 2021-01-27 CN CN202110108495.XA patent/CN112783672B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN106713226A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种用于分布式系统的远程过程调用处理方法和系统 |
CN106293969A (zh) * | 2016-08-09 | 2017-01-04 | 上海盈方微电子有限公司 | Linux进程间通讯方法及装置、进程退出监听方法 |
CN110018905A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN109040094A (zh) * | 2018-08-21 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种基于RabbitMQ实现异步RPC的方法及系统 |
CN110162389A (zh) * | 2019-05-15 | 2019-08-23 | 广州视源电子科技股份有限公司 | 应用程序的启动方法、装置和智能交互设备 |
CN110392100A (zh) * | 2019-07-12 | 2019-10-29 | 辽宁途隆科技有限公司 | 高并发事件的处理方法及装置、存储介质、计算机设备 |
CN110457129A (zh) * | 2019-07-19 | 2019-11-15 | 深圳联友科技有限公司 | 一种基于zookeeper的优先级锁抢占方法和系统 |
CN111245822A (zh) * | 2020-01-08 | 2020-06-05 | 北京松果电子有限公司 | 远程过程调用处理方法、装置及计算机存储介质 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
CN111581083A (zh) * | 2020-04-26 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 一种接口测试方法、装置、电子设备及存储介质 |
CN111782666A (zh) * | 2020-06-19 | 2020-10-16 | 京东数字科技控股有限公司 | 一种缓存服务系统 |
Non-Patent Citations (1)
Title |
---|
云平台下服务分布式监控系统的研究与实现;刘焓;《中国优秀硕士学位论文电子期刊》;20200715;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112783672A (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112783672B (zh) | 一种远程过程调用处理方法及系统 | |
CN102868736B (zh) | 一种云计算监控框架设计及实现方法及云计算处理设备 | |
US20150163179A1 (en) | Execution of a workflow that involves applications or services of data centers | |
EP2383652A1 (en) | Performance monitoring for virtual machines | |
KR102341809B1 (ko) | 트랜잭셔널 미들웨어 머신 환경에서 도메인 간 메시징을 위해 바이패스-도메인 모델 및 프록시 모델을 지원하고 서비스 정보를 갱신하는 시스템 및 방법 | |
JP2013513860A (ja) | クラウドコンピューティングのモニタリングと管理システム | |
CN105338061A (zh) | 一种轻量级消息中间件的实现方法与系统 | |
US9590885B1 (en) | System and method of calculating and reporting of messages expiring from a queue | |
CN102281190A (zh) | 负载均衡装置组网方法以及服务器、客户端接入方法 | |
CN109451014B (zh) | 一种WebService代理系统及其透明代理方法 | |
EP3809631B1 (en) | Method and system for cloud-native applications-based network operations | |
CN105183470A (zh) | 一种自然语言处理系统化服务平台 | |
CN113468221A (zh) | 一种基于kafka消息数据总线的系统集成方法 | |
CN113630310B (zh) | 一种分布式高可用网关系统 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
Flores et al. | Mobile cloud messaging supported by xmpp primitives | |
JP4834622B2 (ja) | ビジネスプロセス運用管理システム、方法、プロセス運用管理装置およびそのプログラム | |
Longo et al. | BORDER: A benchmarking framework for distributed MQTT brokers | |
CN112600842A (zh) | 集群shell方法、装置、电子设备及计算机可读存储介质 | |
CN116775420A (zh) | 基于Flink流计算的信创云平台资源展示和预警方法及系统 | |
CN115499432A (zh) | 家庭终端算力资源管理系统及算力资源调度方法 | |
US10348814B1 (en) | Efficient storage reclamation for system components managing storage | |
Wei et al. | An agent-based services framework with adaptive monitoring in cloud environments | |
US11943284B2 (en) | Overload protection for edge cluster using two tier reinforcement learning models |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |