一种支撑互联网问诊服务的集群式即时消息系统及其实现方法技术方案

技术编号:24333866 阅读:40 留言:0更新日期:2020-05-29 21:12
本发明专利技术属于即时通讯技术领域,涉及一种支撑互联网问诊服务的集群式即时消息系统及其实现方法。本发明专利技术方法对比标准的Jabber/XMPP架构与协议有着很大的优势,首先客户端不再受到命名约束,而且可以自动化的动态注册到集群任意消息服务,极大的保证了客户端的即时消息使用的高可靠性;其次基于网络连接数的均衡负载算法,比手动域名配置来看,最大化利用好集群中每个节点的资源,并且可以具备更好的动态伸缩性,实现更大规模的即时消息吞吐压力,最后MQ消息中心广播的模式,不仅降低了每个消息节点的路由压力,而且MQ队列的模式,防止了某个消息节点出现的突然骤然升高的并发压力,当出现突然的峰值情况,完全可以通过队列处理的一定延时来防止消息节点崩溃。

A cluster instant message system supporting Internet consultation service and its implementation

【技术实现步骤摘要】
一种支撑互联网问诊服务的集群式即时消息系统及其实现方法
本专利技术属于即时通讯
,具体涉及一种支撑互联网问诊服务的集群式即时消息系统及其实现方法。
技术介绍
即时消息系统是互联网医疗服务的基础需要,医生与患者、医生与医生需要通过一个面向互联网医疗业务特征,即时通讯的消息通知平台,不仅实现文字、图像、文件等通用信息资料的传递,而且能实现EHR(健康档案)、视频交流、在线处方等第三方医疗业务系统的整合协作。例如:发送方提供患者健康档案编号给消息服务节点,消息服务节点对EHR系统进行调用,提取健康档案数据库患者基本信息,并封装成网络可传递的数据包给接收方,便于接收方快速查阅该数据包中患者的基本信息,数据包最终发送给接收端,接收端会根据数据包中的数据来源及证书授权实现对方院内EHR系统的访问穿透查询能力,为接收方客户提供患者详细健康数据调阅能力。那么EHR系统就存在与即时消息系统非常紧密的业务协作关系,视频交流、在线处方等亦如此。为了满足大规模、高并发的互联网消息传递,大多数即时消息产品都是在标准的互联网TCP/IP网络协议之上,形成一个分布式的网络架构,通过一种应用层Socket通讯协议,发送方消息在本消息服务节点上路由到接收方消息服务节点,最终到达目的接收端。例如:Jabber/XMPP协议与架构由IETFXMPP协议(RFC3290)标准化,就是一种比较典型的符合分布式架构特点的标准即时消息协议,用户名通过Jabber识别符表示(some@example.com类似邮件格式),@前半部分表示用户名,@后半部分表示所属的XMPP协议服务器域名,当sender@A.com用户向receiver@B.com用户发送消息,A.com服务节点首先接收到sender发送来的XML流消息,然后通过网关路由到B.com服务节点,最后B.com将接收到的XML流消息发送给所属receiver用户,实现完整消息路由传递。整个过程中A.com,B.com两个服务节点,分别负载了各自庞大的用户群体,实现了真正的分布式网络架构,一方面基于域名分组的方式满足大规模、高并发的需求,另一方面也实现了不同服务节点之间通过标准协议的互联互通。面向互联网问诊服务的消息服务不仅要实现通用的信息资料传递,而且还需要紧密结合业务系统,例如:EHR(电子健康档案系统),视频聊天系统,院内HIS系统等,因此消息服务节点和业务系统紧密结合度会远远大于普通的即时消息服务器,若消息服务与业务的耦合度过于紧密,若业务系统出现不可靠因素,就有可能导致消息服务节点的通讯故障,而互联网医疗问诊服务对系统的可靠性要求极高,因此保护消息服务节点的高可靠性非常关键。首先基于Jabber/XMPP协议与架构的即时消息系统,是通过Jabber识别符的约定,实现了通过域名分组的形式,满足大规模、高并发的即时消息在互联网消息服务节点间的传递。但是Jabber识别符的约定虽然巧妙的解决了消息服务节点的扩展,却带来了新的问题,就是客户端节点必须按照约定的Jabber识别符名称注册到对应域名的消息服务节点上。一旦对应域名的消息服务节点通讯坏掉,那么就没有办法对所属服务节点下的所有客户端动态地进行切换到其他服务节点上,除非更换客户端的用户名及所属域,那么在互联网用户的广泛性上看,这就会带来极高的切换代价。其次服务节点间的消息转移是通过路由的方式,也就是说A.com服务节点是通过TCP/IP建立连接的方式路由到B.com服务节点,那么就形成了(a)A客户端到A.com,(b)A.com到B.com,(b)B.com到B客户端的TCP通讯三阶段消息通讯链,同理我们可以得出,C客户端、D客户端、E客户端……,都是按照此模式由所属的服务节点通过路由的方式和其他服务节点进行消息传递。当网络中出现A、C、D、E……等服务节点同时向B服务节点传递消息的情况时,那么B服务节点将成为巨大的压力点,一旦突发这种情况,B服务点就可能会因为压力出现缓慢甚至崩溃,导致整个网络的通讯异常。而且XMPP协议传递的是XML流数据格式,对网络带宽占用大,DOM组装和解包处理比较慢,也增加了服务节点的压力。
技术实现思路
本专利技术的目的在于提供一种支撑互联网问诊服务的集群式即时消息系统及其实现方法,以解决现有技术中存在的问题。本专利技术的实现过程如下:一种支撑互联网问诊服务的集群式即时消息实现的方法,包括:通过客户端进行消息节点注册,通过SocketIO服务节点的注册请求,生成临时的、动态的令牌,由SocketIO服务端对客户端拿到的临时令牌进行令牌有效性的控制;发送方通过消息节点通讯将消息发送到SocketIO服务节点时,SocketIO服务节点会对消息的类型进行遍历,建立观察者模式,通过图文消息监听对象,实现与图像存储系统的对接;通过视频消息监听对象,实现与视频服务系统的对接;通过健康档案消息监听对象,实现与EHR系统对接;通过处方消息监听对象,实现与HIS系统对象;接收方不在发送方SocketIO消息节点会话内,将在SocketIO消息节点集群广播,如果接收方不在自己的会话内就丢弃,如果接收方在会话内找到就进行SocketIO服务节点与业务节点之间的消息通知、业务交互、结果封装及结果消息发送接收端。上述支撑互联网问诊服务的集群式即时消息实现的方法,所述通过客户端进行消息节点注册的包括如下步骤:S10:客户端注册初始化,向注册请求代理服务发送注册请求;S20:注册请求代理服务接收客户端的注册请求;S21:注册请求代理服务将新的客户端均衡分配到SocketIO服务节点;S30:SocketIO服务节点进行会话注册;S31:若注册失败,返回步骤S20注册请求代理服务,注册请求代理会将错误原路返回给客户端;S32:若注册成功,SocketIO服务节点为客户端创建身份令牌,并通过HTTP协议最终回应给客户端;S40:客户端获取到注册成功的令牌,注册完成。上述支撑互联网问诊服务的集群式即时消息实现的方法,所述通过客户端进行消息节点注册的具体包括如下步骤:S10:客户端注册初始化客户端要进行即时消息通讯,需要进行服务节点的注册初始化;注册初始化的流程中客户端通过HTTP协议之上的WebSocket协议,通过向注册代理服务发送注册请求,建立与SocketIO服务节点的连接资源;S20:注册请求代理服务接收客户端的注册请求,并且进行SocketIO动态分配;代理服务是一个基于HTTP协议的反向代理服务器组成,其中,Nginx服务可以有效的作为高性能反向代理服务,通过这种两级注册模式,实现一级代理作为客户端请求入口,实现SocketIO集群的调度,SocketIO做为二级集群,提供数百台注册服务子节点的负载;S21:Nginx服务进行代理的过程是通过负载均衡的分配方式,负载均衡算法是根据Nginx服务提供的最少连接数算法进行均衡负载,优先给连接数最少的SocketIO服务节点注本文档来自技高网
...

【技术保护点】
1.一种支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于,包括:/n通过客户端进行消息节点注册,通过SocketIO服务节点的注册请求,生成临时的、动态的令牌,由SocketIO服务端对客户端拿到的临时令牌进行令牌有效性的控制;/n发送方通过消息节点通讯将消息发送到SocketIO服务节点时,SocketIO服务节点会对消息的类型进行遍历,建立观察者模式,通过图文消息监听对象,实现与图像存储系统的对接;通过视频消息监听对象,实现与视频服务系统的对接;通过健康档案消息监听对象,实现与EHR系统对接;通过处方消息监听对象,实现与HIS系统对象;/n接收方不在发送方SocketIO消息节点会话内,将在SocketIO消息节点集群广播,如果接收方不在自己的会话内就丢弃,如果接收方在会话内找到就进行SocketIO服务节点与业务节点之间的消息通知、业务交互、结果封装及结果消息发送接收端。/n

【技术特征摘要】
1.一种支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于,包括:
通过客户端进行消息节点注册,通过SocketIO服务节点的注册请求,生成临时的、动态的令牌,由SocketIO服务端对客户端拿到的临时令牌进行令牌有效性的控制;
发送方通过消息节点通讯将消息发送到SocketIO服务节点时,SocketIO服务节点会对消息的类型进行遍历,建立观察者模式,通过图文消息监听对象,实现与图像存储系统的对接;通过视频消息监听对象,实现与视频服务系统的对接;通过健康档案消息监听对象,实现与EHR系统对接;通过处方消息监听对象,实现与HIS系统对象;
接收方不在发送方SocketIO消息节点会话内,将在SocketIO消息节点集群广播,如果接收方不在自己的会话内就丢弃,如果接收方在会话内找到就进行SocketIO服务节点与业务节点之间的消息通知、业务交互、结果封装及结果消息发送接收端。


2.根据权利要求1所述支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于,所述通过客户端进行消息节点注册的包括如下步骤:
S10:客户端注册初始化,向注册请求代理服务发送注册请求;
S20:注册请求代理服务接收客户端的注册请求;
S21:注册请求代理服务将新的客户端均衡分配到SocketIO服务节点;
S30:SocketIO服务节点进行会话注册;
S31:若注册失败,返回步骤S20注册请求代理服务,注册请求代理会将错误原路返回给客户端;
S32:若注册成功,SocketIO服务节点为客户端创建身份令牌,并通过HTTP协议最终回应给客户端;
S40:客户端获取到注册成功的令牌,注册完成。


3.根据权利要求2所述支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于,所述通过客户端进行消息节点注册的具体包括如下步骤:
S10:客户端注册初始化
客户端要进行即时消息通讯,需要进行服务节点的注册初始化;注册初始化的流程中客户端通过HTTP协议之上的WebSocket协议,通过向注册代理服务发送注册请求,建立与SocketIO服务节点的连接资源;
S20:注册请求代理服务接收客户端的注册请求,并且进行SocketIO动态分配;
代理服务是一个基于HTTP协议的反向代理服务器组成,其中,Nginx服务可以有效的作为高性能反向代理服务,通过这种两级注册模式,实现一级代理作为客户端请求入口,实现SocketIO集群的调度,SocketIO做为二级集群,提供数百台注册服务子节点的负载;
S21:Nginx服务进行代理的过程是通过负载均衡的分配方式,负载均衡算法是根据Nginx服务提供的最少连接数算法进行均衡负载,优先给连接数最少的SocketIO服务节点注册新的客户端连接;
S30:SocketIO服务节点是以Netty-SocketIO开源组件为基础,提供了TCP/IP长连接之间的数据通讯;
SocketIO服务节点会话注册步骤:(a)SocketIO服务节点获取注册代理节点发来的客户端注册请求,(b)SocketIO对服务节点的身份证书进行数据库身份鉴权,所述身份鉴权数据会缓存在Redis内存数据库中;
S31:若注册失败返回步骤S20注册请求代理服务,注册请求代理会将错误原路返回给客户端;
S32:若注册成功,SocketIO服务节点为客户端创建身份令牌,作为下次访问的身份授权证书,通过HTTP协议最终回应给客户端;
S40:客户端获取到注册成功的令牌消息后,将令牌保存在自己的本地临时数据库中,当下次进行消息发送的时候,会将令牌和消息一并发送。


4.根据权利要求2或3所述支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于:步骤S40中,所述令牌有过期时间,若令牌超过过期时间后,客户端需要重新注册申请。


5.根据权利要求1所述支撑互联网问诊服务的集群式即时消息实现的方法,其特征在于,消息发送过程中,包括如下步骤:
100:客户端作为发送端,开始健康档案的编号发送;
200:SocketIO注册节点获取到客户端发来的消息;
201:根据200SocketIO注册节点获取的健康档案编号进行医院EHR系统编号查询;
202:对健康档案中患者索引信息、医院EHR透传所需信息进行数据封装;
203:SocketIO服务节点完成对健康档案数据的封装后进行发送准备,并确认在本SocketIO服务节点的注册列表中是否存在接收方客户端;
204:如果确认本SocketIO服务节点的注册列表中有接收方客户端,则将封装后的健康档案数据向接收方客户端直接进行数据传输;
300:接收方客户端接收到健康档案数据,并对健康档案数据进行解析,链接到700:接收方客户端所属的系统中,由EHR系统查询详细信息,并返回...

【专利技术属性】
技术研发人员:杨帆
申请(专利权)人:西安新能技术有限公司杨帆
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1