CN111385323B - Ejb业务处理方法、装置、设备及介质 - Google Patents
Ejb业务处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111385323B CN111385323B CN201811626623.4A CN201811626623A CN111385323B CN 111385323 B CN111385323 B CN 111385323B CN 201811626623 A CN201811626623 A CN 201811626623A CN 111385323 B CN111385323 B CN 111385323B
- Authority
- CN
- China
- Prior art keywords
- ejb
- instance
- instances
- connection
- state
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 10
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 206010033799 Paralysis Diseases 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供一种EJB业务处理方法、装置、设备及介质,所述的方法应用于EJB客户端,所述的方法包括:确定EJB集群中EJB实例的状态,以动态更新第一集合,所述第一集合中包括状态正常的EJB实例;基于预先定制的序列化协议,将多个业务请求负载均衡分发给所述第一集合中的EJB实例。根据本发明实施例,能够免于依赖第三方的负载均衡设备,而且动态更新状态正常的EJB实例,保证EJB实例的高可用性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种EJB业务处理方法、装置、设备及介质。
背景技术
目前针对Java平台企业版(Java Platform Enterprise Edition,Java EE)类应用的三层架构,在万维网(World Wide Web,简称web)调用企业Java组件(EnterpriseJavaBean,EJB)时,高可用保证主要依赖于第三方组件。
目前的Java平台企业版(Java Platform,Enterprise Edition,Java EE)中,EJB客户端调用EJB实例的高可用方案如图1所示,(1)负载均衡器请求转发策略等一些复杂的负载配置;(2)EJB客户端发出业务请求;(3)负载均衡器根据配置与EJB服务端的EJB实例建立连接,EJB客户端的业务请求直接提交给后端对应的EJB实例上;(4)若后端存在可用的EJB实例,EJB客户端与后端可用的EJB实例直接建立长连接,如果后端不存在可用的EJB实例,直接返回错误信息;(5)EJB实例处理完请求直接将结果返回EJB客户端进行处理。
现阶段方案有如下的缺点:
1、由于需要依赖于第三方的负载均衡设备,因此,请求流转环节增加,网络层的开销增大,请求处理效率也降低,维护成本增大。
2、后端的EJB列表是静态的,无法自动调整EJB列表,因此EJB列表中的EJB实例很有可能是异常的,导致将业务请求分发给异常的EJB实例。
发明内容
本发明实施例提供了一种EJB业务处理方法、装置、设备及介质,能够免于依赖第三方的负载均衡设备,而且动态更新状态正常的EJB实例,保证EJB实例的高可用性。
第一方面,本发明实施例提供了一种EJB业务处理方法,应用于EJB客户端,所述的方法包括:
确定EJB集群中EJB实例的状态,以动态更新第一集合,所述第一集合中包括状态正常的EJB实例;
基于预先定制的序列化协议,将多个业务请求负载均衡分发给所述第一集合中的EJB实例。
第二方面,本发明实施例提供了一种EJB业务处理装置,应用于EJB客户端,所述的装置包括:
第一动态更新模块,用于确定EJB集群中EJB实例的状态,以动态更新第一集合,所述第一集合中包括状态正常的EJB实例;
请求分发模块,用于基于预先定制的序列化协议,将多个业务请求负载均衡分发给所述第一集合中的EJB实例。
第三方面,本发明实施例提供了一种EJB业务处理设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。
本发明实施例提供的EJB业务处理方法、装置、设备及介质,通过从协议层实现业务请求分发的负载均衡,能够免于依赖第三方的负载均衡设备,从而减少了请求流转环节,减少了网络层的开销,请求处理效率也随之升高,节省了负载均衡设备的购买费用和维护费用。进一步地,可以动态更新状态正常的EJB实例,保证EJB实例的高可用性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了现有技术中EJB客户端与EJB服务端之间连接的示意图;
图2示出了本发明的一个实施例的EJB系统的结构示意图;
图3示出了本发明的一个实施例的EJB业务处理方法的流程示意图;
图4示出了本发明的一个实施例的向EJB实例分发业务请求的示意图;
图5示出了本发明的另一个实施例的向EJB实例分发业务请求的示意图;
图6示出了本发明的又一个实施例的向EJB实例分发业务请求的示意图;
图7示出了本发明的一个实施例的EJB业务处理装置的结构示意图;
图8示出了本发明一个实施例的EJB业务处理设备的硬件结构图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
图2示出了本发明的一个实施例的EJB系统的结构示意图。本发明的一个实施例的EJB业务处理方法基于如图2所示的EJB系统,该EJB系统包括:
EJB客户端(EJB Client):在JavaEE三层架构中一般指WEB端。EJB客户端包括:Bean接口和存根(stub)。
EJB服务端(EJB Server):在JavaEE三层架构中一般指业务处理层,核心逻辑代码都在EJB服务端实现。EJB服务端包括:Bean应用(Implementation)和框架(skeleton)。
在两个Java虚拟机(Java Virtual Machine,JVM)中各开一个Stub和Skeleton,二者通过套接字socket通信来实现参数和返回值的传递。
图3示出了本发明的一个实施例的EJB业务处理方法的流程示意图。如图3所示,该方法应用于EJB客户端,该方法包括:
S101,确定EJB集群中EJB实例的状态,以动态更新第一集合,第一集合中包括状态正常的EJB实例。
另外,还可以根据EJB集群中EJB实例的状态,动态更新第二集合,第二集合中包括状态异常的EJB实例。因此,将EJB集群中的EJB实例分为状态正常的EJB实例和状态异常的EJB实例,第一集合中的EJB实例可以存放到一个列表中,第二集合中的EJB实例可以存放到另一个列表中。
S102,基于预先定制的序列化协议,将多个业务请求负载均衡分发给第一集合中的EJB实例。
其中,序列化协议是采用二进制压缩算法的序列化协议。
在本发明实施例中,为远程调用EJB实例定制私有的序列化协议,底层的传输协议基于传输控制协议(Transmission Control Protocol,TCP)。通过从协议层实现业务请求分发的负载均衡,能够免于依赖第三方的负载均衡设备,从而减少了请求流转环节,减少了网络层的开销,请求处理效率也随之升高,节省了负载均衡设备的购买费用和维护费用。序列化协议采用高效的二进制压缩算法,并内置了高可用方案,相对于现有方案具备更高效,更可靠的特点。进一步地,可以动态更新状态正常的EJB实例,保证EJB实例的高可用性。
在本发明的一个实施例中,有四种实施方式将多个业务请求负载均衡分发给第一集合中的EJB实例。
实施方式一
将多个业务请求均分发给与EJB客户端对应的EJB实例上。
其中,基于会话轮询算法(Session Round Robin)分发多个业务请求。会话轮询算法对于来自于一个EJB客户端的请求,只会将压力分配到一个EJB实例上。
EJB客户端在初始化时,将EJB集群实例列表中的实例随机排序后选取列表的第一个EJB实例,此后该EJB客户端的所有业务请求均发送到该EJB实例上。其中,业务请求包括:Java命名和目录接口(Java Naming and Directory Interface,JNDI)请求和EJB请求。
如图4所示,将EJB客户端1的业务请求均分发到对应的EJB实例3上,将EJB客户端2的业务请求均分发到对应的EJB实例1上。其中,在创建新的IC(Initial Context,初始化内容)时,随机选择一个EJB实例,将EJB客户端的业务请求分发给该EJB实例。
在该实施方式中,由于将EJB集群的实例列表进行了随机排序并选取第一个EJB实例,可以避免来自于多个EJB客户端的业务请求均分配到同一个EJB实例的情况。
实施方式二
以轮询方式在第一集合中选择EJB实例,将业务请求分发给轮询选择的EJB实例。
其中,基于请求轮询算法(Request Round Robin)将多个业务请求分发给EJB实例。
比如,总共有4个EJB实例,将第一组的业务请求分发给第一个EJB实例,将第二组的业务请求分发给第二个EJB实例,将第三组的业务请求分发给第三个EJB实例,将第四组的业务请求分发给第四个EJB实例,将第五组的业务请求分发给第一个EJB实例,以此类推。
如图5所示,EJB客户端的业务请求依次分发给EJB实例1、EJB实例2和EJB实例3。需要说明的是,EJB请求会轮询选取集群中的EJB实例来处理,JNDI请求则采用会话轮询算法,所有的JNDI请求发送到同一个EJB实例上。无状态EJB请求依次轮询集群中的所有EJB实例,有状态EJB请求则粘滞到lookup时所选择的EJB实例。
对于轮询算法,假如集群中有N个EJB实例,存活或健康的EJB实例(即正常状态的EJB实例)为M个,当前并发的总请求数目为GlobalConcurrent个,则每台机器上分发的并发处理的请求的最大数目MaxDispatchCount满足:
MaxDispatchCount=GlobalConcurrent/M+((GlobalConcurrent%M)==0?0:1)。
实施方式三
根据第一集合中每个EJB实例的当前权重,将多个业务请求分别分发给第一集合中的EJB实例。
根据集群中EJB实例的权重来分配EJB实例来处理EJB请求和JNDI请求。每次分配EJB实例时,EJB请求和JNDI请求可能分配到不同的EJB实例上。
对于权重算法,假如集群中有N个EJB实例,存活或健康的EJB实例为M个,M个EJB实例的总权重为TotalWeight,当前并发的总请求数目为GlobalConcurrent个,当前分发的EJB实例的权重为Weight,则当前分发实例的并发处理的请求的最大数目MaxDispatchCount满足:
MaxDispatchCount=GlobalConcurrent*Weight/TotalWeight+((GlobalConcurrent*Weight)%TotalWeight==0?0:1)。
实施方式四
当第一集合中包括多个EJB实例时,在同一时刻将多个业务请求分发给第一集合中的不同的EJB实例。
对于连接被动断开的情况,比如已经建立的Socket连接无法在短时间内检测出网线断掉或者网卡松掉,出现该种情况时,会导致EJB客户端请求卡住较长时间。如果按照传统的轮询算法(Request Round Robin)进行请求分发或者按照权重进行请求分发,会将所有业务请求都负载到网线已经断掉的EJB实例上导致整个EJB客户端瘫痪。为了解决该问题,可以通过控制请求分发来实现。在EJB客户端并发多个业务请求,并且有多个状态正常的EJB实例时,在同一时刻不允许将所有并发的业务请求负载到一个EJB实例上。如图6所示,EJB客户端在同一个时刻将三个因特网包探索器(Packet Internet Grope,PING)请求分别分发给EJB实例1、EJB实例2和EJB实例3。在业务分发过程中,如果发现与EJB实例3的连接坏掉,则存根向连接管理器报告该连接已坏掉,连接管理器将连接坏掉的EJB实例从好连接列表移到坏连接列表中。
在本发明实施方式中,通过请求分发控制算法,解决现在负载均衡器在特殊连接被动断开的情况下,后端EJB实例故障发现太晚导致前台客户端的请求都分发到故障EJB实例上,前台客户端瘫痪的情况,确保前台客户端不瘫痪,提高私有序列化协议的高可用性。请求分发控制可以避免轮询算法和权重算法的一些缺陷,即使EJB实例的服务端出现网线断掉和网卡松掉的情况,EJB客户端不会瘫痪,解决已建立连接无法及时检测出故障EJB实例的情况。
在本发明的一个实施例中,S101包括:
根据EJB集群的EJB实例列表,向EJB实例列表中的EJB实例发送连接请求;根据与EJB实例的连接结果,确定EJB实例的状态;和/或,通过应用程序接口API,接收来自EJB服务端的EJB实例的监控指标;根据监控指标,确定EJB实例的状态。
其中,EJB客户端包括连接管理器,连接管理器用于确定EJB集群中EJB实例的状态。
作为一个示例,连接管理器在初始化时,会根据用户配置的EJB实例列表来创建连接。其中,用户配置的EJB实例列表中包含实例IP和端口信息。连接管理器会依次向EJB实例列表中的所有EJB实例发送请求来验证EJB实例是否正常,这是主动检测手段。还可以通过API接收EJB实例的监控指标,以监测EJB实例的状态。将EJB实例列表中能够正常访问或者指标正常的实例,放入到好连接列表中,好连接列表中的EJB实例组合的集合是第一集合。如果EJB实例列表中存在不能访问或者指标异常的实例,则将其放入坏连接列表中,坏连接列表中的EJB实例组合的集合是第二集合。
在本发明实施例中,实时更新EJB实例的动态,可以更加准确地判断EJB实例的状态情况,使得EJB实例的高可用性更有保证。基于协议实现了故障转移,EJB集群的状态实时更新,无需针对第三方负载均衡器做重加载的操作和重启操作。
在本发明的一个实施例中,该方法还包括:
在分发多个业务请求的过程中,若与第一集合中的EJB实例的连接中断,则将该连接中断的EJB实例从第一集合中删除,将该连接中断的EJB实例添加到第二集合中。
在本发明的一个实施例中,该方法还包括:
在分发多个业务请求的过程中,若第一集合为空,则向第二集合中的EJB实例发送连接请求;若与第二集合中的EJB实例连接成功,则将多个业务请求中的至少一个请求分发给该连接成功的EJB实例。
作为一个示例,如果没有状态正常的EJB实例可以使用,则连接管理器尝试从坏连接列表中恢复连接,如果恢复与坏连接列表中的EJB实例的连接,则将恢复连接的EJB实例放入好连接列表中,业务调用继续。如果没有EJB实例可以恢复连接,则业务请求失败。
在本发明的一个实施例中,该方法还包括:
从第一集合中选择待询问EJB实例,向待询问EJB实例询问EJB集群中各个EJB实例的状态;根据待询问EJB实例反馈的结果,更新第一集合和第二集合中的EJB实例。
需要说明的是,EJB服务端通过组服务(GMS)来维护好连接列表和坏连接列表,任何一个集群实例均可获取当前集群的好连接列表和坏连接列表,所以连接管理器可以向任何一个EJB实例询问当前集群的EJB实例状态,实时构建动态集群,从而确保业务请求被分发到正常状态下的EJB实例上。如果开启负载均衡,则根据来自EJB服务端的好连接列表、坏连接列表,对EJB客户端的好连接列表和坏连接列表进行更新。
在本发明的一个实施例中,EJB客户端包括侦测线程;该方法还包括:
建立侦测线程与EJB服务端之间的短连接,以通过侦测线程向待询问EJB实例询问EJB实例的状态。
作为一个示例,在业务分发过程中,如果发现与EJB实例的连接坏掉,则向连接管理器报告该连接已断掉,连接管理器将连接断掉的EJB实例放入坏连接列表中并通知侦测线程立即同步EJB服务端的EJB实例列表,EJB服务端的EJB实例列表也包括好连接列表和坏连接列表,好连接列表中包括状态正常的EJB实例,坏连接列表中包括状态异常的EJB实例。
需要说明的是,侦测线程会定期的从EJB服务端获取当前集群的最新状态,并和EJB客户端的连接列表整合。在一个检查周期内,发现集群里有新的EJB实例启动或是恢复到正常状态的EJB实例时,则将该EJB实例加入到好连接列表中,如果集群里有EJB实例停止或是出现状态异常的EJB实例时,则从好连接列表中移除该EJB实例并将其放入坏连接列表中。由于每个集群实例可获取当前集群实例的状态,所以侦测线程可以从好连接列表中随机选择一个EJB实例询问集群中EJB实例的状态。如果没有状态正常的EJB实例可用时,则尝试从坏连接列表中恢复连接并询问集群实例列表。当侦测线程发现超过10分钟没有业务请求的分发需求,则会关闭该线程。当后续有业务请求的分发需求时,连接管理器发现侦测线程已经停止,则会重新启动一个侦测线程。最小化资源开销的侦测线程在连接管理器中只存在一个。
Socket连接建立后,如果Socket连接的另一方的设备突然断电或者网卡松动,TCP底层存在需要花费很长时间才能侦测到对方连接已经断开,因此,将侦测线程的健康检查连接默认配置为短连接,并为进行EJB实例状态检测的Socket连接设置较小的SO_TIMEOUT。本发明实施例同时支持短连接和长连接的监测机制,解决已建立连接无法及时发现故障EJB实例的问题。
图7示出了本发明的一个实施例的EJB业务处理装置的结构示意图。该装置应用于EJB客户端,如图7所示,该装置200包括:
第一动态更新模块201,用于确定EJB集群中EJB实例的状态,以动态更新第一集合,第一集合中包括状态正常的EJB实例。
请求分发模块202,用于基于预先定制的序列化协议,将多个业务请求负载均衡分发给第一集合中的EJB实例。
在本发明的一个实施例中,请求分发模块202包括:
会话轮询分发模块,用于将多个业务请求均分发给与EJB客户端对应的EJB实例上。
请求分发模块202包括:
请求轮询分发模块,用于以轮询方式在第一集合中选择EJB实例,将多个业务请求分发给轮询选择的EJB实例。
请求分发模块202包括:
权重分发模块,用于根据第一集合中每个EJB实例的当前权重,将多个业务请求分别分发给第一集合中的EJB实例。
请求分发模块202包括:
分发控制模块,用于当第一集合中包括多个EJB实例时,将多个业务请求中的同一时刻产生的多个请求分发给第一集合中的不同的EJB实例。
在本发明的一个实施例中,第一动态更新模块201包括:
第一连接模块,用于根据EJB集群的EJB实例列表,向EJB实例列表中的EJB实例发送连接请求。
第一确定模块,用于根据与EJB实例的连接结果,确定EJB实例的状态。
在本发明的一个实施例中,第一动态更新模块201包括:
指标接收模块,用于通过应用程序接口API,接收来自EJB服务端的EJB实例的监控指标。
第二确定模块,用于根据监控指标,确定EJB实例的状态。
在本发明的一个实施例中,该装置200还包括:
第二动态更新模块,用于根据EJB集群中EJB实例的状态,动态更新第二集合,第二集合中包括状态异常的EJB实例。
在本发明的一个实施例中,该装置200还包括:
在分发多个业务请求的过程中,若与第一集合中的EJB实例的连接中断,则将该连接中断的EJB实例从第一集合中删除,将该连接中断的EJB实例添加到第二集合中。
在本发明的一个实施例中,该装置200还包括:
第二连接模块,用于在分发多个业务请求的过程中,若第一集合为空,则向第二集合中的EJB实例发送连接请求。
请求分发模块202,用于当与第二集合中的EJB实例连接成功时,将多个业务请求中的至少一个请求分发给该连接成功的EJB实例。
在本发明的一个实施例中,该装置200还包括:
状态询问模块,用于从第一集合中选择待询问EJB实例,向待询问EJB实例询问EJB集群中各个EJB实例的状态。
实例更新模块,用于根据待询问EJB实例反馈的结果,更新第一集合和第二集合中的EJB实例。
在本发明的一个实施例中,该装置还包括:EJB客户端包括侦测线程;该装置还包括:
连接建立模块,用于建立侦测线程与EJB服务端之间的短连接,以通过侦测线程向待询问EJB实例询问EJB实例的状态。
在本发明的一个实施例中,序列化协议是采用二进制压缩算法的序列化协议。
图8示出了本发明一个实施例的EJB业务处理设备的硬件结构图。如图8所示,EJB业务处理设备300包括输入设备301、输入接口302、处理器303、存储器304、输出接口305、以及输出设备306。
其中,输入接口302、处理器303、存储器304、以及输出接口305通过总线310相互连接,输入设备301和输出设备306分别通过输入接口302和输出接口305与总线310连接,进而与EJB业务处理设备300的其他组件连接。
具体地,输入设备301接收来自外部的输入信息,并通过输入接口302将输入信息传送到处理器303;处理器303基于存储器304中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器304中,然后通过输出接口305将输出信息传送到输出设备306;输出设备306将输出信息输出到EJB业务处理设备300的外部供用户使用。
EJB业务处理设备300可以执行本申请上述的方法中的各步骤。
处理器303可以是一个或多个中央处理器(英文:Central Processing Unit,CPU)。在处理器303是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器304可以是但不限于随机存储存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM),可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、硬盘等中的一种或多种。存储器304用于存储程序代码。
可以理解的是,在本申请实施例中,图7提供的任一模块或全部模块的功能可以用图8所示的处理器303实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本说明书的各个部分均采用递进的方式进行描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
Claims (10)
1.一种EJB业务处理方法,应用于EJB客户端,其特征在于,所述的方法包括:
确定EJB集群中EJB实例的状态,以动态更新第一集合,所述第一集合中包括状态正常的EJB实例;
基于预先定制的序列化协议,将多个业务请求负载均衡分发给所述第一集合中的EJB实例;
所述EJB客户端包括连接管理器,所述连接管理器用于确定EJB集群中EJB实例的状态,所述连接管理器在初始化时,根据用户配置的EJB实例列表来创建连接;
根据所述EJB集群中EJB实例的状态,动态更新第二集合,所述第二集合中包括状态异常的EJB实例;
从所述第一集合中选择待询问EJB实例,向所述待询问EJB实例询问所述EJB集群中各个EJB实例的状态;
根据所述待询问EJB实例反馈的结果,更新所述第一集合和所述第二集合中的EJB实例;
所述EJB客户端包括侦测线程;所述的方法还包括:
建立所述侦测线程与EJB服务端之间的短连接,以通过所述侦测线程向所述待询问EJB实例询问EJB实例的状态。
2.根据权利要求1所述的方法,其特征在于,所述将多个业务请求负载均衡分发给所述第一集合中的EJB实例,包括:
将所述多个业务请求均分发给与所述EJB客户端对应的EJB实例上;
或者,
以轮询方式在所述第一集合中选择EJB实例,将所述多个业务请求分发给轮询选择的EJB实例;
或者,
根据所述第一集合中每个EJB实例的当前权重,将所述多个业务请求分别分发给所述第一集合中的EJB实例;
或者,
当所述第一集合中包括多个EJB实例时,在同一时刻将所述多个业务请求分发给所述第一集合中的不同的EJB实例。
3.根据权利要求1所述的方法,其特征在于,所述确定EJB集群中EJB实例的状态,包括:
根据所述EJB集群的EJB实例列表,向所述EJB实例列表中的EJB实例发送连接请求;根据与EJB实例的连接结果,确定EJB实例的状态;
和/或,
通过应用程序接口API,接收来自EJB服务端的EJB实例的监控指标;根据所述监控指标,确定EJB实例的状态。
4.根据权利要求1所述的方法,其特征在于,所述EJB客户端包括连接管理器,所述连接管理器用于确定EJB集群中EJB实例的状态。
5.根据权利要求1所述的方法,其特征在于,还包括:
在分发所述多个业务请求的过程中,若与所述第一集合中的EJB实例的连接中断,则将该连接中断的EJB实例从所述第一集合中删除,将该连接中断的EJB实例添加到所述第二集合中。
6.根据权利要求1所述的方法,其特征在于,还包括:
在分发所述多个业务请求的过程中,若所述第一集合为空,则向所述第二集合中的EJB实例发送连接请求;
若与所述第二集合中的EJB实例连接成功,则将所述多个业务请求中的至少一个请求分发给该连接成功的EJB实例。
7.根据权利要求1所述的方法,其特征在于,所述序列化协议是采用二进制压缩算法的序列化协议。
8.一种EJB业务处理装置,应用于EJB客户端,其特征在于,所述的装置包括:
第一动态更新模块,用于确定EJB集群中EJB实例的状态,以动态更新第一集合,所述第一集合中包括状态正常的EJB实例;
请求分发模块,用于基于预先定制的序列化协议,将多个业务请求负载均衡分发给所述第一集合中的EJB实例;
所述EJB客户端包括连接管理器,所述连接管理器用于确定EJB集群中EJB实例的状态,所述连接管理器在初始化时,根据用户配置的EJB实例列表来创建连接;
所述的装置还包括:
第二动态更新模块,用于根据EJB集群中EJB实例的状态,动态更新第二集合,第二集合中包括状态异常的EJB实例;
状态询问模块,用于从第一集合中选择待询问EJB实例,向待询问EJB实例询问EJB集群中各个EJB实例的状态;
实例更新模块,用于根据待询问EJB实例反馈的结果,更新第一集合和第二集合中的EJB实例;
EJB客户端包括侦测线程;所述的装置还包括:
连接建立模块,用于建立侦测线程与EJB服务端之间的短连接,以通过侦测线程向待询问EJB实例询问EJB实例的状态。
9.一种EJB业务处理设备,其特征在于,包括:处理器、存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811626623.4A CN111385323B (zh) | 2018-12-28 | 2018-12-28 | Ejb业务处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811626623.4A CN111385323B (zh) | 2018-12-28 | 2018-12-28 | Ejb业务处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385323A CN111385323A (zh) | 2020-07-07 |
CN111385323B true CN111385323B (zh) | 2023-04-18 |
Family
ID=71218096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811626623.4A Active CN111385323B (zh) | 2018-12-28 | 2018-12-28 | Ejb业务处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111385323B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710865A (zh) * | 2005-06-30 | 2005-12-21 | 西安交通大学 | 一种提高基于构件软件系统可靠性的方法 |
CN1754146A (zh) * | 2003-02-24 | 2006-03-29 | Bea系统公司 | 用于服务器负载均衡和服务器亲缘关系的系统和方法 |
CN101236510A (zh) * | 2008-02-22 | 2008-08-06 | 深圳市金蝶中间件有限公司 | 一种ejb集群的失败恢复处理方法及系统 |
CN102025630A (zh) * | 2010-12-14 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 负载均衡方法及负载均衡系统 |
CN104079630A (zh) * | 2014-06-09 | 2014-10-01 | 中国建设银行股份有限公司 | 一种业务服务端负载均衡方法、客户端、服务端以及系统 |
CN107579924A (zh) * | 2017-09-29 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种流量调拨方法和装置 |
CN108512865A (zh) * | 2017-02-23 | 2018-09-07 | 北京宝兰德软件股份有限公司 | 一种Java应用服务器的EJB容器系统的数据传输方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774776B2 (en) * | 2004-07-13 | 2010-08-10 | International Business Machines Corporation | Single port initial context access to enterprise java bean |
-
2018
- 2018-12-28 CN CN201811626623.4A patent/CN111385323B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1754146A (zh) * | 2003-02-24 | 2006-03-29 | Bea系统公司 | 用于服务器负载均衡和服务器亲缘关系的系统和方法 |
CN1710865A (zh) * | 2005-06-30 | 2005-12-21 | 西安交通大学 | 一种提高基于构件软件系统可靠性的方法 |
CN101236510A (zh) * | 2008-02-22 | 2008-08-06 | 深圳市金蝶中间件有限公司 | 一种ejb集群的失败恢复处理方法及系统 |
CN102025630A (zh) * | 2010-12-14 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 负载均衡方法及负载均衡系统 |
CN104079630A (zh) * | 2014-06-09 | 2014-10-01 | 中国建设银行股份有限公司 | 一种业务服务端负载均衡方法、客户端、服务端以及系统 |
CN108512865A (zh) * | 2017-02-23 | 2018-09-07 | 北京宝兰德软件股份有限公司 | 一种Java应用服务器的EJB容器系统的数据传输方法及装置 |
CN107579924A (zh) * | 2017-09-29 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种流量调拨方法和装置 |
Non-Patent Citations (2)
Title |
---|
_从头再来_.几种序列化协议的介绍.《https://blog.csdn.net/sanyaoxu_2/article/details/79722431》.2018, * |
刘勇等.EJB集群系统动态自适应负载均衡服务的设计与实现.《计算机应用研究》.2008,(第07期), * |
Also Published As
Publication number | Publication date |
---|---|
CN111385323A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111615066B (zh) | 一种基于广播的分布式微服务注册及调用方法 | |
US8190740B2 (en) | Systems and methods for dynamically provisioning cloud computing resources | |
JP6495010B2 (ja) | トラフィックディレクタ環境におけるトラフィックのアクティブ−パッシブルーティングおよび制御のためのシステムおよび方法 | |
US7844851B2 (en) | System and method for protecting against failure through geo-redundancy in a SIP server | |
US7617309B2 (en) | Network system, information management server, and information management method | |
US7757236B1 (en) | Load-balancing framework for a cluster | |
JP4616159B2 (ja) | クラスタシステム、ロードバランサ、ノード振替方法およびノード振替プログラム | |
CN109951537B (zh) | 一种面向区块链的负载均衡分发方法 | |
US20170214751A1 (en) | Migrating a chat message service provided by a chat server to a new chat server | |
CN108055338B (zh) | 一种iscsi访问负载均衡方法 | |
CN112866394B (zh) | 一种负载均衡方法、装置、系统、计算机设备和存储介质 | |
US20160344582A1 (en) | Call home cluster | |
CN107682442B (zh) | 一种Web连接方法及装置 | |
CN107689878A (zh) | 基于命名调度的tcp长连接负载均衡系统 | |
US9760370B2 (en) | Load balancing using predictable state partitioning | |
CN114900526B (zh) | 负载均衡方法及系统、计算机存储介质、电子设备 | |
CN112671554A (zh) | 一种节点故障处理方法及相关装置 | |
CN112367221A (zh) | 一种工业物联网下分布式注册中心推荐方法 | |
CN111385323B (zh) | Ejb业务处理方法、装置、设备及介质 | |
CN110198221A (zh) | 一种负载均衡的实现方法、装置及系统 | |
CN111147389A (zh) | Tcp长连接服务器负载均衡系统及方法 | |
CN107819858B (zh) | 一种在云服务动态伸缩时管理云服务的方法及装置 | |
CN112799849A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN107508760B (zh) | 一种基于线路源ip进行负载分发的方法 | |
JP2003256390A (ja) | 分散オブジェクトシステム |
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 |