CN110971506B - 一种去中心化实时集群通讯方法、装置、设备及系统 - Google Patents
一种去中心化实时集群通讯方法、装置、设备及系统 Download PDFInfo
- Publication number
- CN110971506B CN110971506B CN201911078894.5A CN201911078894A CN110971506B CN 110971506 B CN110971506 B CN 110971506B CN 201911078894 A CN201911078894 A CN 201911078894A CN 110971506 B CN110971506 B CN 110971506B
- Authority
- CN
- China
- Prior art keywords
- server
- event
- room
- client
- connection
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0869—Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Abstract
本发明公开了一种去中心化实时集群通讯方法,步骤包括:客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;同时,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。本发明提供了一种去中心化实时集群通讯方法、装置、设备及系统,通过构建实时通讯集群,实现多种通讯协议之间的互通,从而使多种不同的即时通讯应用实现相互通讯。
Description
技术领域
本发明涉及软件开发、实时通讯技术领域,尤其是涉及一种去中心化实时集群通讯方法、装置、设备及系统。
背景技术
由于网络技术普及,在现代生活中人们已经离不开即时通讯网络。当前网络环境下,存在IP通讯分散问题,针对不同的使用场景使用不同的应用,人们通常会下载并使用多种即时通讯应用,但是,现有的各种即时通讯应用彼此之间存在差异,无法互相通讯。
发明内容
针对上述技术问题,本发明提供了一种去中心化实时集群通讯方法、装置、设备及系统,通过构建实时通讯集群,实现多种通讯协议之间的互通,从而使多种不同的即时通讯应用实现相互通讯。所述技术方案如下:
第一方面,本发明实施例提供了一种去中心化实时集群通讯方法,步骤包括:
客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;
同时,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
在本发明第一方面的第一种可能的实现方式中,所述的去中心化实时集群通讯方法,还包括:
处于同一房间的所有服务器各自保存所述事件,并且在处于同一房间的所有服务器同步更新事件时,赋予事件深度值,并且根据所述深度值进行事件排序。
在本发明第一方面的第二种可能的实现方式中,所述将所述事件发送到处于同一房间的连接服务器,具体为:
发出HTTP请求,并利用公共密钥进行数字签名。
在本发明第一方面的第三种可能的实现方式中,所述客户端与服务器建立连接,之前还包括步骤:
接收客户端发送的携带房间识别号的房间加入请求后,通过检查房间的状态信息确定是否允许加入;若是,则生成数字签名并向所述房间内广播新成员加入的加入事件,同时将所述客户端添加到所述房间。
在本发明第一方面的第四种可能的实现方式中,所述响应客户端加入房间的请求,还包括:
当查询到所述房间识别号为未知时,通过查询目录服务器以获取所述房间的房间识别号,并发出房间加入请求。
在本发明第一方面的第五种可能的实现方式中,所述的去中心化实时集群通讯方法,还包括:
加入房间后,向所述房间的服务器发送获取历史记录请求。
在本发明第一方面的第六种可能的实现方式中,所述的去中心化实时集群通讯方法,还包括:
当接收到事件时,判断是否丢弃所述事件;
若否,则根据所述事件的权限及状态判断是否拒绝所述事件,同时根据当前房间的状态,是否将所述事件判定为软失败;其中,当事件被判定为软失败时,停止将所述事件发送到客户端以及停止在新事件中被引用。
第二方面,本发明实施例提供了一种去中心化实时集群通讯装置,包括:
发送模块,用于客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;
广播模块,用于将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
第三方面,本发明实施例提供了一种去中心化实时集群通讯设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的去中心化实时集群通讯方法。
第四方面,本发明实施例提供了一种去中心化实时集群通讯系统,包括:
客户端,用于向服务器发送或接收包含状态信息和/或消息的事件;
服务器,用于客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;以及,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
相比于现有技术,本发明实施例具有如下有益效果:
本发明提供一种去中心化实时集群通讯方法、装置、设备及系统,通过创建能够兼容各种客户端及服务器且具有保密性的房间并在处于同一房间的客户端和服务器之间进行信息交流,从而能够与现有通讯协议进行桥接,实现多种通讯协议之间的互通,进而使多种不同的即时通讯应用实现相互通讯。
本发明所述的事件为可拓展JSON对象,并且通过API进行信息流通,由于API具有广泛的适用性,JSON格式报文解析方便,因此便于和各个平台进行互通,提高集群通讯方法的可操作性。
本发明技术方案中的任一服务器均与其他服务器进行交互,并各自保存数据,所有的房间的相关数据没有所有者,不存在中心服务器,从而实现去中心化。
附图说明
图1是本发明实施例中的一种去中心化实时集群通讯系统的架构图;
图2是本发明实施例中的一种去中心化实时集群通讯方法的推送流程示意图;
图3是本发明实施例中的一种去中心化实时集群通讯方法的数据交互方法示意图;
图4是本发明实施例中的一种去中心化实时集群通讯方法的步骤流程图;
图5是本发明实施例中的一种去中心化实时集群通讯方法的房间加入请求的信息流动示意图;
图6是本发明实施例中的一种去中心化实时集群通讯装置的模块图;
图7是本发明实施例中的一种去中心化实时集群通讯系统的扩展系统的架构图;
图8是本发明实施例中的一种去中心化实时集群通讯方法的进一步扩展系统的架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,本发明提供一种示例性实施例,一种去中心化实时集群通讯系统,包括:
客户端,用于向服务器发送或接收包含状态信息和/或消息的事件;
服务器,用于客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;以及,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
所述去中心化实时集群通讯系统,还包括身份服务器,所述身份服务器与所述服务器连接。
所述身份服务器,用于验证、存储和回答有关用户身份的问题。
身份服务器的目的是验证,存储和回答有关用户身份的问题。特别是,它存储形式为“标识符X代表与标识符Y相同的用户”的关联,其中身份可能存在于不同系统上(例如电子邮件地址,电话号码等)。身份服务器具有一些私有-公共密钥对。当被问及ID关联时,它将使用其私钥对关联的详细信息进行签名。客户端可以通过使用身份服务器的公共密钥验证签名来验证有关关联的声明。通常,身份服务器被视为可靠的服务器。他们不一定提供证据证明他们已经验证了关联,但是声称已经这样做。建立个人身份服务器的可信赖性是客户的一项工作。身份是一个隐私敏感的问题。虽然存在身份服务器以提供身份信息,但是应该限制访问以避免泄露潜在的敏感数据。一般而言,API允许将第三方ID映射到用户ID,但不能在另一个方向上映射(即,不应该能够获取与给定用户ID相关联的所有第三方ID,或者与给定第三方ID相关联的所有第三方ID)。
应用服务器,用于与所述服务器桥接,并接入不同平台的客户端。
客户端--服务器API和服务器--服务器API提供了实现服务器集群传递消息结构的方法。但是他们仅提供了有限的方法来实现自定义服务器行为。例如网关,事件过滤,外部钩子等。这是刻意而为之的。(为了能够更好的划分服务器职能)。因此,应用服务器API定义了能够实现此类拓展功能的一系列标准API,与服务器的实现无关。首先,应用服务器是被动的,只能观察来自服务器的事件。应用服务器可以将事件注入到其参与的房间中。但无法阻止事件的发送,也不能修改正在发送事件的内容。为了观察来自服务器的事件,需要对服务器配置,使其将某些类型的流量(事件)传递给应用服务器。这些配置需要手动完成。当服务器向应用服务器发送请求时,服务器必须包含access_token(查询参数),其中含有来自应用服务器的server_token。应用服务器必须验证所提供的access_token是否与其已知的server_token相匹配。否则,请求失败。当应用服务器向服务器将自己标识为应用服务器时,应用服务器可以使用功能更强大的客户端–服务器API(具备某些而外的能力或访问权限)。
推送服务器,用于接收所述服务器转发的事件,并向所述客户端推送通知。
请参见图2,当服务器收到消息时,客户端可能希望收到推送消息。这由专门的推送服务器(推送网关)来管理。服务器将收到的事件信息转发到推送服务器,然后由推送服务器提交给推送通知的提供者(APNS,GCM)。
请参见图3,在本实施例中,客户端和服务器之间通交换的可拓展JSON对象称为事件。
客户端通常是即使消息/VoIP应用程序或IoT设备,它们使用客户端API将通信历史记录与服务器同步。
每个服务器都存储其所有客户端的通信历史记录和账户信息,并通过服务器API与其他服务器共享数据。
客户端通常通过在虚拟房间中发出事件来相互通信。房间数据将在其所有房间内用户(所有服务器上归属于同一个房间的用户,包含跨服务器)所在的服务器之间复制。因此没有一个服务器可以控制或者拥有给定房间的所有权。
服务器将通讯历史记录建模为事件的部分排序图,称为房间的事件图,并通过服务器API与其他参与服务器的最终一致性进行同步。以一致性为代价对CAP定理的可用性和分区容错性进行优化。
需要说明的是,本专利所讨论的所有API的报文包体均为可拓展JSON对象;事件泛指房间内的状态事件和消息事件。例,人员加入/离开,发送消息,修改房间信息等。
请参见图4,本发明提供一种示例性实施例,一种去中心化实时集群通讯方法,步骤包括:
S101、客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;其中,所述事件为客户端和服务器之间通交换的可拓展JSON对象;所述房间为发送和接收事件的概念性场所,每一所述房间具备对应的房间识别号,将事件发送到房间,该房间中所有具有足够访问权限的参与者都将收到该事件;
房间对于整个服务器集群的运作方式至关重要,并对允许容纳的内容有严格的规定。房间还可以具有不同任务的各种算法,例如当两个或多个事件发生冲突时该怎么办。因此,为了允许通过新算法或规则改进房间,利用版本来管理每个房间的一组期望值,并根据需要分配新的房间版本。
S102、同时,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
在本实施例中,所述包含状态信息和/或消息的事件指的是,服务器之间每个房间的共享数据结构分为消息事件和状态事件:
消息事件,描述房间中的一次性活动,例如即时消息,VoIP呼叫,文件传输等。它们通常描述通信活动。
状态事件,描述房间相关的永久性(状态)信息。例如房间名称,主题,成员,相关服务器等。每个房间的状态建模为键/值对的查找表,每个键都是state key和事件的元组,每个状态事件都会更新给定的键值。
其中,通过考虑事件图中给定事件之前(包括该事件)的所有事件来计算给定点处的房间状态。在事件描述相同状态的情况下,应用合并冲突算法。并且,状态解析算法是可传递的,不依赖于服务器状态,因为它必须始终选择相同的事件,而不管服务器或接受事件的顺序如何。
服务器还可以通过向其他参与服务器请求来回填事件。
所述处于同一房间的所有服务器各自保存所述事件,还包括:
在处于同一房间的所有服务器同步更新事件时,赋予事件深度值,并且根据所述深度值进行事件排序。
在本实施例中,在房间中交换的事件存储在称为事件图的有向无环图(DAG)中。该图的部分排序给出了凡间内事件的时间顺序。
图中的每个事件都有零个或多个父事件,从创建该事件的服务器来看,这些父事件是指任何没有按时间顺序排列的后继事件。
事件通常只有一个父事件,即发送事件时房间内的最新消息。但是服务器在发送消息时可能合法地相互竞争,从而导致单个事件具有多个后继事件。因此添加到图中的下一个事件将具有多个父事件。每一个事件图都有一个没有父事件的事件,称为根事件。
为了排序和简化途中事件之间的时间顺序比较,服务器在每一个事件上维护一个”深度”元数据字段。事件的深度是一个正整数,严格大于其任何父事件的深度。根事件的深度应为1。因此如果一个事件在另一个事件之前,则它的深度必须较小。
所述客户端与服务器建立连接,之前还包括步骤:
接收客户端发送的携带房间识别号的房间加入请求后,通过检查房间的状态信息确定是否允许加入;若是,则生成数字签名并向所述房间内广播新成员加入的加入事件,同时将所述客户端添加到所述房间。
还包括房间离开请求。通常服务器可以发送用户离开事件代表用户离开房间或拒绝邀请。当来自其他服务器的远程邀请则需要另一种方法来拒绝邀请。建议不要加入房间并立即离开,因为这样容易混淆接受邀请并离开房间和拒绝邀请。与加入会议的握手类似,希望离开会议室的服务器发送离开事件给驻留服务器,并由驻留服务器将时间发送到房间中的其他服务器。
所述响应客户端加入房间的请求,还包括:
当查询到所述房间识别号为未知时,通过查询目录服务器以获取所述房间的的房间识别号,并发出房间加入请求。
具体地,当服务器不知道该房间时,它将无法直接执行此操作。取而代之的是,它必须花费更长的多阶段握手。
首先选择一个已经参与该房间的的远程服务器,然后使用它来协助加入;
此握手涉及希望加入的新成员的服务器(join server),托管用户请求加入的房间ID的目录服务器(directory server),以及已经存在该房间成员的服务器(residentserver)。
远程加入握手由加入服务器查询目录服务器以获取有关房间的的ID和候选者列表,然后加入服务器向其中一个候选者请求房间信息,并构造加入事件发给驻留服务器(resident server)。
从概念上讲,这是服务器的三种不同角色。在实际场景中,目录服务器很可能就是房间所在的服务器,因此加入服务器可以将其作为候选者之一。同样,尽管原则上可以使用任何有效的候选者,但是加入的服务器很可能在事件构建的两个阶段都选择相同的候选者。因此任何加入握手都可能涉及两个到四个服务器。(大多数情况是两个)。
请参见图5,远程握手的第一部分通常使用目录服务器来请求房间ID。在新用户收到邀请而加入房间的情况下,加入用户的服务器可以通过选择该邀请消息的原始服务器作为候选者来优化这一步骤。
但若邀请的原始服务器已经离开房间,则此优化失败,应准备好退回到常规加入流程。
当新事件提交给驻留服务器后,驻留服务器将这个事件加入房间的事件图中,并相应加入服务器完整的房间状态。同时驻留服务器还需将时间发送到房间内的其他服务器。
所述去中心化实时集群通讯方法,还包括:
加入房间后,向所述房间的服务器发送获取历史记录请求。
所述将所述事件发送到处于同一房间的连接服务器,包括:
发出HTTP请求,并利用公共密钥进行数字签名。
具体地,服务器发出的每个HTTP请求均使用公钥进行数字签名。请求的方法(method),路径(uri),内容(content)被封装在JSON对象中,并对其进行签名。生成的签名添加到Authonrization头域中。其中,路径是完整路径,包含以?开头的任何查询参数(如果存在),但不包含https和目标主机名。
还包括:
响应鉴权,响应由TLS证书保证。服务器在对连接的服务器进行身份验证之前,不应发送请求,以避免将消息泄露给窃听者。
客户端鉴权,请求鉴权在HTTP层而不是TLS层。因为服务器通常部署在处理TLS连接的负载均衡器后面,使得检查TLS客户端证书变得困难。
服务器可以提供TLS客户端证书,接收的服务器可以检查客户端证书是否与原始服务器的证书相匹配。
可以理解的是,常规的单区HTTP服务器集群,通常会由负载均衡器(例如反向代理)担任流量入口,统一处理TLS连接,而真正的HTTP服务器并不需要自己部署证书。此时服务器和证书通常分别位于两台服务器上,由于HTTP服务器收到请求的连接来自于负载均衡器,并非客户端真正的连接,这追加了服务器检验客户端的额外难度,将请求鉴权转移到HTTP协议层不仅能够避免该问题,也能够降低集群部署的难度。
所述利用公钥进行数字签名,还包括:
通过API发布公共密钥;当需要获取公共密钥时,通过公证服务器查询其他服务器以确认所述公证服务器所返回的密钥。
可以理解的是,在网络上确保每个服务器都安全是困难的,攻击者可以有多种手段可以伪造请求的响应。确保每个服务器所连接的其他服务器就是集群内的服务器十分重要。单个信任根存在较大安全隐患,在其被攻破后将直接影响整个服务器集群,当服务器可以自由选择受信的公证服务器来互相验证服务器的真伪,可以在降低安全风险的同时,提升伪造难度。
所述去中心化实时集群通讯方法,还包括:
当接收到事件时,判断是否丢弃所述事件;
若否,则根据所述事件的权限及状态判断是否拒绝所述事件,同时根据当前房间的状态,是否将所述事件判定为软失败;其中,当事件被判定为软失败时,停止将所述事件发送到客户端以及停止在新事件中被引用。
具体地,每当服务器从远程服务器接收到事件时,接收服务器必须确保该事件:
是有效事件,否则将被丢弃;
通过签名检查,否则将被丢弃;
通过哈希检查,否则将对其进行编辑啊,然后再进行进一步处理;
根据事件的权限,通过授权规则,否则将被拒绝;
根据事件的状态,通过授权规则,否则将被拒绝;
根据当前房间的状态,通过授权规则,否则认为其软失败;所述软失败指的是未基于房间当前状态,虽然该事件是有效的。但是服务器可以选择不将新事件通知给客户端。
例如,B代表对用户X的禁用事件,如果用户X在试图逃避禁令时发送C事件来改变房间主题;在B之后接收C事件的服务器应使事件C软失败,因此既不会将C中继到其客户端,也不会发送任何引用C的事件。
如果另一台服务器发送了一个同时引用了B和C的事件D。那么服务器将正常处理D事件。事件D会被发送到客户端。此时解析D处的状态将会包含C事件,这种情况下还应告知客户端该状态的更改包含C事件(这取决于房间所使用的解析算法,这也是需要通过房间版本来辅助管理的重要原因。不同的解析算法可能导致完全不同的结果)。
假设事件B先于C到达服务器,则任何新事件D都不会引用C。
在本实施例中,服务器之间有三种主要的通信:
永久数据单元(PDU)
这些事件从一个服务器广播到已加入同一房间(通过房间ID标识)的任何其他服务器。它们会长期保存,并记录消息的历史和房间的状态。
PDU的原始服务器使用私钥对PDU进行签名(确保可以通过第三方服务器转发),并负责将事件传送到其他接收服务器。
临时数据单元(EDU)
这些事件在两个服务器之间推送。它们不是持久的,也不是房间历史的一部分,接收服务器也不必回复它们。
查询(query)
这些是服务器之间单次请求/响应交互,通常由一方发送HTTPS GET请求以获取某些信息,并由另一方响应。它们不会持久存在,通常是获取请求发起时服务器的状态。
所述去中心化实时集群通讯方法,还包括:
利用第三方识别号邀请客户端加入所述房间。所述第三方识别号可以是电子邮件或电话号码,第三方识别号及其与客户端识别号的绑定由身份服务器实现。
具体地,当知道第三方ID的用户ID时,直接发出邀请,当不知道第三方ID的用户ID时,服务器要求身份服务器记录邀请的详细信息,并在将来收到该ID绑定时,通知被邀请人所在的服务器。
请参见图6,本发明提供一种示例性实施例,一种去中心化实时集群通讯装置,包括:
发送模块201,用于客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;
广播模块202,用于将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件。
还包括:
请求处理模块,用于接收客户端发送的携带房间识别号的房间加入请求后,通过检查房间的状态信息确定是否允许加入;若是,则生成数字签名并向所述房间内广播新成员加入的加入事件,同时将所述客户端添加到所述房间。
深度值计算模块,用于处于同一房间的所有服务器各自保存所述事件,并且在处于同一房间的所有服务器同步更新事件时,赋予事件深度值,并且根据所述深度值进行事件排序。
接收模块,用于当接收到事件时,判断是否丢弃所述事件;
若否,则根据所述事件的权限及状态判断是否拒绝所述事件,同时根据当前房间的状态,是否将所述事件判定为软失败;其中,当事件被判定为软失败时,停止将所述事件发送到客户端以及停止在新事件中被引用。
所述广播模块,包括:
数字签名设置模块,用于发出HTTP请求,并利用公共密钥进行数字签名。
所述请求处理模块,包括:
查询模块,用于当查询到所述房间识别号为未知时,通过查询目录服务器以获取所述房间的房间识别号,并发出房间加入请求。
事件回填模块,用于加入房间后,向所述房间的服务器发送获取历史记录请求。
本发明提供一种示例性实施例,一种去中心化实时集群通讯设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的去中心化实时集群通讯方法。
本发明还提供一种具体的实施例,一种去中心化实时集群通讯系统,包括:
客户端、服务器、应用服务器、身份服务器、推送服务器;
请参见图7,在即时通讯应用场景中,桥接服务器可视为应用服务器。
Wechat bridge通过在房间中创建一位虚拟用户,可以实现本通讯集群与wechat的互通。
SIP bridge同理,借助应用服务器API,协助完成SIP协议的转换。
Kurento bridge为服务器(房间)提供媒体通话能力,由它完成对媒体服务器(Kurento Server)的控制。
需要说明的是,本系统采用HTTP协议,不仅可以很容易实现web客户端,并且得益于HTTP协议的广泛应用,桥接服务器的开发语言几乎可以是任意的。
请参见图8,推送服务器解决移动平台消息分发问题。
基于上述系统,可以完成Web/Mobile/PC/IoT平台客户端接入,利用应用服务器API实现其他IM协议的接入,或是为房间提供额外的能力,例如音视频通话。
本发明提供一种去中心化实时集群通讯方法、装置、设备及系统,通过创建能够兼容各种客户端及服务器且具有保密性的房间并在处于同一房间的客户端和服务器之间进行信息交流,从而能够与现有通讯协议进行桥接,实现多种通讯协议之间的互通,进而使多种不同的即时通讯应用实现相互通讯。
本发明所述的事件为可拓展JSON对象,并且通过API进行信息流通,由于API具有广泛的适用性,JSON格式报文解析方便,因此便于和各个平台进行互通,提高集群通讯方法的可操作性。
本发明技术方案中的任一服务器均与其他服务器进行交互,并各自保存数据,所有的房间的相关数据没有所有者,不存在中心服务器,从而实现去中心化。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (10)
1.一种去中心化实时集群通讯方法,其特征在于,步骤包括:
客户端与服务器集群建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;
同时,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件;
其中,所述服务器集群包括连接服务器、身份服务器、应用服务器和推送服务器;所述身份服务器、应用服务器和所述推送服务器分别连接所述连接服务器;
所述连接服务器用于连接处于同一房间的所有客户端,所述身份服务器用于验证、存储和回答有关用户身份的问题;所述应用服务器用于接入不同平台的客户端;所述推送服务器用于根据所述连接服务器接收的事件向所述客户端推送通知。
2.如权利要求1所述的去中心化实时集群通讯方法,其特征在于,还包括:
处于同一房间的所有服务器各自保存所述事件,并且在处于同一房间的所有服务器同步更新事件时,赋予事件深度值,并且根据所述深度值进行事件排序。
3.如权利要求1所述的去中心化实时集群通讯方法,其特征在于,所述将所述事件发送到处于同一房间的连接服务器,具体为:
发出HTTP请求,并利用公共密钥进行数字签名。
4.如权利要求1所述的去中心化实时集群通讯方法,其特征在于,所述客户端与服务器集群建立连接,之前还包括步骤:
接收客户端发送的携带房间识别号的房间加入请求后,通过检查房间的状态信息确定是否允许加入;若是,则生成数字签名并向所述房间内广播新成员加入的加入事件,同时将所述客户端添加到所述房间。
5.如权利要求4所述的去中心化实时集群通讯方法,其特征在于,响应客户端加入房间的请求,还包括:
当查询到所述房间识别号为未知时,通过查询目录服务器以获取所述房间的房间识别号,并发出房间加入请求。
6.如权利要求4所述的去中心化实时集群通讯方法,其特征在于,还包括:
加入房间后,向所述房间的服务器集群发送获取历史记录请求。
7.如权利要求1所述的去中心化实时集群通讯方法,其特征在于,还包括:
当接收到事件时,判断是否丢弃所述事件;
若否,则根据所述事件的权限及状态判断是否拒绝所述事件,同时根据当前房间的状态,是否将所述事件判定为软失败;其中,当事件被判定为软失败时,停止将所述事件发送到客户端以及停止在新事件中被引用。
8.一种去中心化实时集群通讯装置,其特征在于,包括:
发送模块,用于客户端与服务器集群建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;
广播模块,用于将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件;
其中,所述服务器集群包括连接服务器、身份服务器、应用服务器和推送服务器;所述身份服务器、应用服务器和所述推送服务器分别连接所述连接服务器;
所述连接服务器用于连接处于同一房间的所有客户端,所述身份服务器用于验证、存储和回答有关用户身份的问题;所述应用服务器用于接入不同平台的客户端;所述推送服务器用于根据所述连接服务器接收的事件向所述客户端推送通知。
9.一种去中心化实时集群通讯设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的去中心化实时集群通讯方法。
10.一种去中心化实时集群通讯系统,其特征在于,包括:
客户端,用于向服务器集群发送或接收包含状态信息和/或消息的事件;
服务器集群,用于客户端与服务器建立连接后,接收客户端发送的包含状态信息和消息的事件,并将所述事件发送到处于同一房间的连接客户端;以及,将所述事件发送到处于同一房间的连接服务器,并通过所述连接服务器向处于同一房间的其他客户端广播所述事件;
其中,所述服务器集群包括连接服务器、身份服务器、应用服务器和推送服务器;所述身份服务器、应用服务器和所述推送服务器分别连接所述连接服务器;
所述连接服务器用于连接处于同一房间的所有客户端,所述身份服务器用于验证、存储和回答有关用户身份的问题;所述应用服务器用于接入不同平台的客户端;所述推送服务器用于根据所述连接服务器接收的事件向所述客户端推送通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078894.5A CN110971506B (zh) | 2019-11-06 | 2019-11-06 | 一种去中心化实时集群通讯方法、装置、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078894.5A CN110971506B (zh) | 2019-11-06 | 2019-11-06 | 一种去中心化实时集群通讯方法、装置、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110971506A CN110971506A (zh) | 2020-04-07 |
CN110971506B true CN110971506B (zh) | 2021-12-28 |
Family
ID=70030269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911078894.5A Active CN110971506B (zh) | 2019-11-06 | 2019-11-06 | 一种去中心化实时集群通讯方法、装置、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110971506B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014544B (zh) * | 2021-01-25 | 2023-02-10 | 阳光凯讯(北京)科技有限公司 | 基于webRtc无中心媒体链路建立方法及装置 |
CN116501218A (zh) * | 2022-01-21 | 2023-07-28 | 北京字节跳动网络技术有限公司 | 一种即时通信中的交互方法、装置、计算机设备及存储介质 |
CN115499256A (zh) * | 2022-07-27 | 2022-12-20 | 深圳市酷开网络科技股份有限公司 | 资源联动显示方法及装置、系统、存储介质、电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185728A (zh) * | 2011-06-10 | 2011-09-14 | 上海志新信息科技有限公司 | 具有统一管理平台的通信系统及其通信方法 |
CN103207814A (zh) * | 2012-12-27 | 2013-07-17 | 北京仿真中心 | 一种去中心化的跨集群资源管理与任务调度系统与调度方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1654852B1 (en) * | 2003-07-11 | 2008-04-02 | International Business Machines Corporation | System and method for authenticating clients in a client-server environment |
CN104661191A (zh) * | 2013-11-15 | 2015-05-27 | 深圳市快播科技有限公司 | 局域网通信方法、系统、终端及信息分享装置 |
CN105897827A (zh) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | 服务器节点、局域网服务器集群及其实现方法 |
CN105931081A (zh) * | 2016-05-10 | 2016-09-07 | 腾讯科技(深圳)有限公司 | 事件处理方法和装置 |
CN106993200B (zh) * | 2017-04-18 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 一种数据的直播方法、相关设备及系统 |
CN109286625A (zh) * | 2018-09-28 | 2019-01-29 | 北斗天地股份有限公司 | 一种基于无中心应用软件的通信方法及装置 |
-
2019
- 2019-11-06 CN CN201911078894.5A patent/CN110971506B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185728A (zh) * | 2011-06-10 | 2011-09-14 | 上海志新信息科技有限公司 | 具有统一管理平台的通信系统及其通信方法 |
CN103207814A (zh) * | 2012-12-27 | 2013-07-17 | 北京仿真中心 | 一种去中心化的跨集群资源管理与任务调度系统与调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110971506A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11489961B2 (en) | System and method for determining and communicating presence information | |
US8335852B2 (en) | Contact destination information registration method, network system, node, and contact destination information registration program | |
JP5254005B2 (ja) | 協調的招待システムおよび方法 | |
CN110971506B (zh) | 一种去中心化实时集群通讯方法、装置、设备及系统 | |
CN110035002B (zh) | 即时通信的实现方法,终端设备及存储介质 | |
US20080134316A1 (en) | private network system and method | |
US8683551B2 (en) | Peer-to-peer network | |
EP2735131B1 (en) | Self-adapting direct peer to peer communication and messaging system | |
EP3215949A1 (en) | A new instant messaging (im) system | |
EP2552089A2 (en) | System and method for short range electronic communication | |
US11792186B2 (en) | Secure peer-to-peer based communication sessions via network operating system in secure data network | |
CN102893579B (zh) | 用于在通信系统中发放票据的方法、节点和设备 | |
US8656031B2 (en) | Dialog communication system, dialog communication method and dialog communication program | |
CN111064742B (zh) | 一种基于网络代理实现内网访问的方法、装置及相关设备 | |
CN105743922B (zh) | 域间通信的方法、装置以及系统 | |
WO2010115322A1 (zh) | 预定义加入群组会话的加入实现方法和系统 | |
CN115086352A (zh) | 区块链事件处理方法及相关装置、平台和存储介质 | |
Toth | Design of a social messaging system using stateful multicast | |
JP6215508B1 (ja) | セキュアなメディアベース会議におけるコンプライアンス監視のための方法およびシステム | |
CN111447087A (zh) | 一种动态组网的区块链配置方法 | |
US8627505B2 (en) | Technique for controlling access by a client entity to a service | |
AU2013204382B2 (en) | A private network and system | |
EP4080923A1 (fr) | Dispositif électronique de gestion décentralisée de groupe(s) de communication | |
CN116848834A (zh) | 分散式会话管理 | |
GB2438258A (en) | Provision of personal data in a data communications network |
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 |