CN109302435A - 消息发布方法、装置、系统、服务器及计算机可读存储介质 - Google Patents

消息发布方法、装置、系统、服务器及计算机可读存储介质 Download PDF

Info

Publication number
CN109302435A
CN109302435A CN201710611692.7A CN201710611692A CN109302435A CN 109302435 A CN109302435 A CN 109302435A CN 201710611692 A CN201710611692 A CN 201710611692A CN 109302435 A CN109302435 A CN 109302435A
Authority
CN
China
Prior art keywords
message
module
socket
sent
sockets services
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.)
Granted
Application number
CN201710611692.7A
Other languages
English (en)
Other versions
CN109302435B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710611692.7A priority Critical patent/CN109302435B/zh
Publication of CN109302435A publication Critical patent/CN109302435A/zh
Application granted granted Critical
Publication of CN109302435B publication Critical patent/CN109302435B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种消息发布方法,涉及通信技术领域,包括:通过套接字服务模块接收客户端发送的消息;通过套接字服务模块将该消息发送给套接字会话模块;通过套接字会话模块,将该消息发布到消息订阅与发布系统中消息的对应频道,以使得消息订阅与发布系统将该消息发送给对应频道的所有订阅者。此外,本发明还提供一种消息发布装置、系统、服务器及计算机可读存储介质。本发明可满足高可用的需求,并能保证出现高并发请求情况时发布系统的性能,同时保证套接字服务不会受到其他外部因素的影响。

Description

消息发布方法、装置、系统、服务器及计算机可读存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种消息发布方法、装置、系统、服务器及计算机可读存储介质。
背景技术
Socket又称“套接字”,是连接应用程序和网络驱动程序的桥梁,用于同一台服务器上的两个不同进程间的通信或不同主机之间的进程间的通信。通过Socket,可实现客服端与服务端的实时通讯。消息,通常指的是信号要传递的内容,如:语言、声音、音乐、文字、符号、数据、图象等等。消息发布是通信技术中非常重要的一个环节。现有技术中,通常使用管道(Channel)服务来实现消息发布,但是管道服务具有以下三点缺陷:
1、负责消息发布的管道服务本身是单点,即,所有的Socket都连接到一个管道服务,因此不符合高可用的规范;
2、Socket服务与管道服务紧耦合,二者之间存在着相互调用的关系,因此当管道服务不可用时,Socket服务也会受到影响;
3、管道服务由于是单点部署,当出现高并发请求情况时,存在性能问题。
发明内容
有鉴于此,本发明实施例提供一种消息发布方法、装置、系统、服务器及计算机可读存储介质,可满足高可用的需求,并能保证出现高并发请求情况时消息发布系统的性能,同时保证套接字服务不会受到其他外部因素的影响。
本发明实施例第一方面提供了一种消息发布方法,应用于服务器,包括:通过套接字服务模块接收客户端发送的消息;通过所述套接字服务模块将所述消息发送给套接字会话模块;通过所述套接字会话模块,将所述消息发布到消息订阅与发布系统中所述消息的对应频道,以使得所述消息订阅与发布系统将所述消息发送给所述对应频道的所有订阅者。
本发明实施例第二方面提供了一种消息发布装置,包括:套接字服务模块以及套接字会话模块;所述套接字服务模块,用于接收客户端发送的消息,并将所述消息发送给所述套接字会话模块;所述套接字会话模块,用于在接收到所述套接字服务模块发送的消息后,将所述消息发布到消息订阅与发布系统中所述消息的对应频道,以使得所述消息订阅与发布系统将所述消息发送给所述对应频道的所有订阅者。
本发明实施例第三方面提供了一种消息发布系统,包括:分布式部署的套接字服务器集群、消息订阅与发布系统以及客户端;所述套接字服务器中运行有上述本发明实施例第二方面提供的消息发布装置;所述客户端,用于向所述套接字服务器发送消息以及接收所述套接字服务器发送的订阅消息;所述消息订阅与发布系统,包括消息订阅与发布服务器集群,用于将所述套接字服务器发送的消息,发送给订阅了所述消息的对应频道的所有订阅者。
本发明实施例第四方面提供了一种服务器,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述本发明实施例第一方面提供的消息发布方法。
本发明实施例第五方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述本发明实施例第一方面提供的消息发布方法。
本发明实施例,一方面,通过消息订阅与发布服务器集群构成的消息订阅与发布系统进行消息的发布,由于整个网络架构中没有单点,因此可满足高可用的需求,并能保证高并发请求情况出现时,整个发布系统的性能,另一方面,由于套接字服务模块与预设的套接字会话模块之间相互独立,彼此之间无调用关系,因此即便套接字会话模块内运行的脚本出现了故障,也不会影响到套接字服务的正常运行。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为本发明实施例提供的消息发布系统的结构示意图;
图2为本发明一实施例提供的服务器的硬件结构示意图;
图3为本发明一实施例提供的消息发布方法的流程示意图;
图4为本发明另一实施例提供的消息发布方法的流程示意图;
图5为本发明实施例提供的消息发布方法中套接字会话模块、消息监听模块以及监控模块的数据流示意图;
图6为本发明实施例提供的消息发布方法的一应用实例的示意图;
图7为本发明一实施例提供的消息发布装置的结构示意图;
图8为本发明另一实施例提供的消息发布装置的结构示意图。
具体实施方式
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
图1为本发明实施例提供的消息发布系统的结构示意图。如图1所示,本实施例提供的消息发布系统包括:客户端100、套接字(Socket)服务器200以及消息订阅与发布系统300。客户端100、Socket服务器200以及消息订阅与发布系统300位于有线或无线网络中,通过该有线网络或无线网络,客户端100与Socket服务器200之间以及Socket服务器200与消息订阅与发布系统300之间进行数据交互。
其中,Socket服务器200采用分布式部署,一台Socket服务器200可以连接任意台客户端100。客户端100可以但不限于包括:具有联网功能的智能手机、平板电脑等移动终端以及其他不可移动的计算机设备。
各Socket服务器之间在网络上可以互相不可见,部署新的Socket服务器或停掉某台服务器上的Socket服务不会影响其他Socket服务的正常运行,从而可实现动态扩展,提高Socket服务扩展和维护的便利性。
请参阅图2,图2为本发明一实施例提供的服务器的硬件结构示意图,可应用于图1所示消息发布系统中的Socket服务器200。可以理解地,图2所示的结构仅为示意,Socket服务器200还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
如图2所示,Socket服务器200可因配置或性能不同而产生比较大的差异,具体可以包括一个或一个以上中央处理器(Central Processing Units,CPU)222和存储器232,一个或一个以上存储计算机程序242或数据244的存储介质230(例如一个或一个以上存储设备)。其中,存储器232和存储介质230可以是短暂存储或持久存储。存储在存储介质230中的计算机程序242可以包括一个或一个以上功能模块,每个功能模块可以包括对服务器的一系列指令操作。
更进一步地,中央处理器222可以设置为与存储介质230通信,中央处理器222在执行计算机程序242时,实现下述各实施例中的消息发布方法。此外,Socket服务器200还可以包括一个或一个以上电源226,一个或一个以上有线或无线网络接口250,一个或一个以上输入输出接口258,和/或,一个或一个以上操作系统241,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM等等。
具体的,如图5所示,每一台Socket服务器200的存储介质230中存储的计算机程序242可以包括:Socket服务模块、Socket会话模块。每一个功能模块可包括一段主程序及对应的脚本程序。一般来说,脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。一个功能模块在运行时通常是从其主程序的第一行代码开始依次执行,然后通过主程序中的调用函数调用或运行对应的脚本程序,实现对应的功能。
其中,Socket服务模块通过Socket接口为本地进程或与连接到该Socket接口的网络上的客户端中的进程提供Socket服务。
Socket会话模块通过运行对应的Socket会话脚本,与本地Socket服务模块建立连接。然后,Socket会话模块在接收到本地Socket服务模块发送的消息时,连接消息订阅与发布系统,将接收的消息,发布到消息订阅与发布系统中该消息的对应频道,以使得消息订阅与发布系统将该消息发送给该对应频道的所有订阅者。
进一步地,如图5所示,计算机程序242还包括:消息监听模块以及监控模块。
消息监听模块通过运行对应的消息监听脚本,接收消息订阅与发布系统发送的订阅消息。然后,消息监听模块将接收的订阅消息发送给本地Socket服务模块。本地Socket服务模块在对接收的订阅消息进行处理后,将处理后的订阅消息发送给所有连接到本地Socket接口的客户端。
监控模块通过运行对应的监控脚本,与本地Socket服务模块建立连接。监控模块接收本地Socket服务模块发送的所有会引起数据变更的消息,并将该消息记录到日志中。此外,监控模块还对本地Socket服务模块、Socket会话模块和消息监听模块进行健康监控及告警。其中会引起数据变更的消息,包括例如:某个指令消息,该指令消息用于删除内存中的某个数据;或者,新接收的订阅消息等等。
消息订阅与发布系统300包括:由多个用于提供消息订阅与发布服务的服务器1、2……N构成的服务器集群。消息订阅与发布系统300接收Socket服务器200中的Socket会话模块发送的消息,将该消息作为订阅消息广播给订阅了该消息的对应频道的所有订阅者。由于消息订阅与发布系统300没有单点的问题,因此可满足高可用的需求,并能保证出现高并发请求情况时,整个消息发布系统的性能。
可选的,消息订阅与发布系统,可以采用除了广播之外的其他传输方式向订阅者发送订阅消息。并进一步的,在发送该订阅消息时,若发布该订阅消息的套接字服务器也订阅了该订阅消息,则不将该订阅消息发送给该套接字服务器,以减轻该套接字服务器的工作量。
客户端100一方面通过Socket服务器200,将消息发布到消息订阅与发布系统300中的指定频道,然后再由消息订阅与发布系统300将该消息通过Socket服务器200,发送给该指定频道的所有订阅者。另一方面,接收Socket服务器200发送的消息,该消息包括其他客户端通过消息订阅与发布系统300发布的订阅消息。
上述客户端100、Socket服务器200以及消息订阅与发布系统300的具体功能及各自实现功能的过程,可参考以下各实施例中的相关内容,此处不再赘述。
进一步地,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于服务器中,该计算机可读存储介质可以是前述图2所示实施例中的存储介质230。该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现后述图3至图6所示实施例中的消息方法。进一步地,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取记忆体(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
请参阅图3,图3为本发明一实施例提供的消息发布方法的流程图。本实施例可应用于图1所示的消息发布系统中,通过图1所示的Socket服务器200实现消息发布方法。本实施例是从Socket服务器的角度进行的说明,如图3所示,本实施例提供的消息发布方法主要包括:
步骤S101,通过套接字服务模块接收客户端发送的消息;
步骤S102,通过套接字服务模块将该消息发送给套接字会话模块;
步骤S103,通过套接字会话模块,将该消息发布到消息订阅与发布系统中消息的对应频道。
于本实施例中,套接字(Socket)服务模块利用Socket接口,提供服务器端的Socket服务,主要用于侦听连接请求,根据侦听到的连接请求与连接请求发送端建立数据连接,并与之进行通信。
如图5所示,在Socket服务器中预设Socket会话模块,Socket会话模块中运行有Socket会话脚本。Socket会话脚本,主要用于连接Socket服务器本地的Socket服务模块,并当连接成功后,接收Socket服务模块发送的所有消息,以及将接收的消息发布到消息订阅与发布系统中该消息的对应频道,以使得消息订阅与发布系统通过Socket服务器,将该消息发送给该对应频道的所有订阅者,如,订阅了该频道的本地进程或网络上的客户端中的进程。
可以理解的,传送消息的链路称为频道。一个订阅者可以订阅任意个频道。上述Socket服务模块发送的所有消息,一般是指Socket服务接收的客户端发送的所有待发布的消息,如:包含图片、音频、视频、文字等信息内容的消息。
本发明实施例提供的消息发布方法,一方面,通过消息订阅与发布服务器集群构成的消息订阅与发布系统进行消息的发布,由于整个网络架构中没有单点,因此可满足高可用的需求,并能保证高并发请求情况出现时,整个发布系统的性能,另一方面,由于预设的Socket会话模块与Socket服务模块之间相互独立,因此即便Socket会话模块内运行的脚本出现了故障,也不会影响到Socket服务模块的正常运行。
请参阅图4,图4为本发明另一实施例提供的消息发布方法的流程图。本实施例可应用于图1所示的消息发布系统中,通过图1所示的Socket服务器200实现消息发布方法。本实施例是从Socket服务器的角度进行的说明,如图4所示,本实施例提供的消息发布方法主要包括:
步骤S201,通过套接字服务模块接收客户端发送的消息;
步骤S202,通过套接字服务模块将该消息发送给套接字会话模块;
步骤S203,通过套接字会话模块,将该消息发布到消息订阅与发布系统中该消息的对应频道;
步骤S204,通过消息套接字服务模块按照预设的处理规则将该消息进行处理;
步骤S205,通过消息套接字服务模块将处理后的消息,发送给连接到消息套接字服务模块的所有客户端;
于本实施例中,套接字(Socket)服务模块提供服务器端的Socket服务,主要用于侦听连接请求,根据侦听到的连接请求与连接请求发送端建立数据连接,并与之进行通信。
如图5所示,在Socket服务器中预设Socket会话模块,Socket会话模块中运行有Socket会话脚本。Socket会话脚本,主要用于与Socket服务器本地的Socket服务模块连接,并当连接成功后,接收Socket服务模块发送的所有消息,以及将接收的消息发布到消息订阅与发布系统中该消息的对应频道,以使得消息订阅与发布系统通过Socket服务器,将该消息发送给该对应频道的所有订阅者,如,订阅了该频道的本地进程或外部网络上的客户端中的进程。
可以理解的,Socket会话模块并不需要始终与消息订阅与发布系统保持连接,也可在接收到来自Socket服务模块的消息后,才连接消息订阅与发布系统,并在发布消息后,断开与消息订阅与发布系统的连接,以减轻网络负担。
其中,传送消息的链路称为频道。一个订阅者可以订阅任意个频道。上述Socket服务模块发送的所有消息,一般是指客户端发送给Socket服务模块的所有待发布的消息。
可选的,Socket会话模块通过运行Socket会话脚本,利用广播的方式,向消息订阅与发布系统发布一则封装有Socket消息的广播消息,以将Socket发送的消息发布到消息订阅与发布系统中该消息的对应频道。具体的,发送给消息订阅与发布系统中该对应频道的管理服务器中。其中广播是主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,也就是说,无论是否需要,网络中的所有主机都可以接收到网络中广播的所有信息。
进一步的,本地Socket服务模块在将接收的消息发送给Socket会话模块的同时,将接收的消息按照预设的处理规则进行处理后,发送给所有连接到自己的客户端。其中,按照预设的处理规则进行处理,例如:将接收的消息按照与客户端预先约定好的协议进行重新封装,以将该消息处理为客户端可解析的消息。在实际应用中,假设接收的消息是以Socket协议进行封装,而客户端只支持HTTPS协议(Hyper Text Transfer Protocol overSecure Socket Layer,安全套接字层超文本传输协议),也就是说,该客户端无法解析Socket协议的消息,则提取接收的Socket协议的消息中的内容,然后按照HTTPS协议的格式将提取的内容重新封装为HTTPS协议的消息。可选的,Socket服务模块可利用广播的方式,将处理后的消息发送给所有连接到自己的客户端。
步骤S206,通过消息监听模块接收消息订阅与发布系统发送的订阅消息,并通过消息监听模块将该订阅消息发送给套接字服务模块;
于本实施例中,如图5所示,在Socket服务器中预设消息监听模块,消息监听模块中运行有消息监听脚本。消息监听脚本,主要用于与消息订阅与发布系统连接,以及当接收到消息订阅与发布系统发送的订阅消息时,连接本地Socket服务模块,向本地Socket服务模块发送一则由接收的订阅消息组成的Socket消息,以使得本地Socket服务模块将该订阅消息进行处理后,发送给所有连接到本地Socket服务模块的客户端。
步骤S207,通过套接字服务模块判断是否存在订阅消息的处理记录;若不存在处理记录,则执行步骤S208:通过套接字服务模块按照预设的处理规则将该订阅消息进行处理,并通过套接字服务模块将处理后的订阅消息,发送给连接到套接字服务模块的所有客户端;若存在处理记录,则执行步骤S209:通过套接字服务模块忽略该订阅消息。
其中,按照预设的处理规则进行处理,包括例如:将该订阅消息按照与客户端预先约定好的协议进行重新封装,以将该订阅消息处理为客户端可解析的消息。像这样,通过Socket服务模块先判断消息订阅与发布系统发送的订阅消息是否在本地被处理过,若未处理再处理,若处理过则不再处理,可避免对订阅消息的重复处理和发送,减轻Socket服务模块的工作负担。
可选的,Socket服务模块通过广播的方式,将处理后的订阅消息发送给所有连接到本地Socket的客户端。
为进一步说明上述方法,结合图5和图6,举例来说,在一应用实例中,假设在步骤1:客户端A向Socket服务模块1发送消息A,则Socket服务模块1在步骤2:在接收到消息A之后,对消息A进行处理,以生成消息B,然后向所有连接到Socket服务模块1的客户端A、B和C广播消息B。同时,Socket服务模块1在步骤3:在接收到消息A的时候,将该消息A发送给与Socket服务模块1保持连接的Socket会话模块1。
之后,在步骤4:Socket会话模块1在接收到Socket服务模块1发送的消息A后,将该消息A发布到消息订阅与发布系统中该消息A所属的频道中。
然后,在步骤5:消息订阅与发布系统在接收到消息A后,将消息A作为订阅消息A,向该频道的所有订阅者(假设Socket服务器1~3都订阅了该频道)发送。
再然后,在步骤6:Socket服务器1中的消息监听模块1在监听到消息订阅与发布系统发送的订阅消息A时,将订阅消息A发送给Socket服务模块1;Socket服务器2中的消息监听模块2在监听到消息订阅与发布系统发送的订阅消息A时,将订阅消息A发送给Socket服务模块2;Socket服务器3中的消息监听模块3在监听到消息订阅与发布系统发送的订阅消息A时,将订阅消息A发送给Socket服务模块3。
之后,在步骤7:Socket服务模块1~3在收到来自各自连接的消息监听模块的订阅消息A后,会先判断自己是否处理过订阅消息A,根据判断结果,如果已处理过订阅消息A则忽略订阅消息A,如Socket服务模块1。如果未处理过订阅消息A,则会将订阅消息A进行处理后生成订阅消息B,如Socket服务模块2和3,并在步骤8中,向各自连接的所有客户端广播订阅消息B。在本应用实例中,订阅消息A就是由Socket服务器1中的Socket会话模块发布,也就意味着Socket服务模块1曾经处理过订阅消息A,因此Socket服务模块1会忽略订阅消息A,但Socket服务模块2和3会将订阅消息A处理成订阅消息B后广播给各自连接的客户端D~F。至此,实现了Socket服务模块1收到客户端A发送的消息后,将该消息发布给作为该消息的订阅者的所有连接到Socket服务模块1~3的客户端的整个数据流。
进一步的,如图5所示,在Socket服务器中设置监控模块,监控模块中运行有监控脚本。该监控脚本主要用于记录本地Socket的运行日志(log),以保证Socket服务模块可专注于提供业务服务。具体的,通过预设的监控模块运行上述监控脚本,连接本地Socket服务模块,当与本地socket服务模块连接成功后,接收该Socket服务模块发送的所有会引起数据变更的消息,并记录在日志中。其中会引起数据变更的消息,包括例如:某个指令消息,该指令消息用于删除内存中的某个数据;或者,新接收的订阅消息等等。
进一步的,上述监控脚本还可用于本地Socket服务模块的健康监控。具体的,通过该监控模块运行上述监控脚本,接收Socket服务模块发送的该Socket服务模块的会话数据。一方面,当检测到Socket服务模块断开与该监控模块的连接时,通过该监控模块将Socket服务模块在断开连接前最后发送的会话数据,发布到消息订阅与发布系统中与会话数据对应的频道。消息订阅与发布系统在接收到监控模块发送的上述会话数据后,将该会话数据发送给该会话数据对应的频道的所有订阅者。另一方面,通过该监控模块按照预设的告警方式进行告警。其中,按照预设的告警方式进行告警,包括例如:向预设的邮箱发送告警邮件,或者,通过即时通信软件向预设客户端发送告警消息,或者,根据预设的手机号发送告警短消息等,以通知管理员Socket服务模块发生故障。Socket服务模块的会话数据包括:该Socket服务模块在与其他进程进行会话时产生的内存数据信息。其他进程是除Socket服务模块的进程之外的可与Socket服务模块进行会话的其他任意进程,例如:Socket会话模块的进程、消息监听模块的进程等等。
可选的,Socket服务模块可以实时或定期将得到的所有会引起数据变更的消息以及产生的会话数据发送给监控模块。
当某个Socket服务模块发生故障时,通过上述监控模块可保存该Socket服务模块在与该监控模块失联前最后发送的会话数据,并发送给指定的对象,以便该对象可以接替该Socket服务模块的工作,从而可以实现Socket服务模块的无缝切换,提高了Socket服务模块集群的高可用性。
进一步的,通过运行上述监控脚本还可进行Socket会话模块的健康检查。具体的,通过监控模块运行上述监控脚本,定期检测Socket会话模块是否未运行;若未运行,则说明Socket会话模块发生故障,于是启动未运行的Socket会话模块,并按照预设的告警方式进行告警。其中启动未运行的Socket会话模块,例如通过执行监控脚本中的WinExec、ShellExecute或CreateProcess函数,调用Socket会话模块的主程序,以启动Socket会话模块。定期检测Socket会话模块是否未运行,包括例如:定期向Socket会话模块发送响应信息获取请求,若Socket会话模块没有返回响应信息,则确定Socket会话模块未运行。其中,按照预设的告警方式进行告警,包括例如:向预设的邮箱发送告警邮件,或者,通过即时通信软件向预设客户端发送告警消息,或者,根据预设的手机号发送告警短消息等,以通知管理员Socket会话模块发生故障。
进一步的,通过运行上述监控脚本还可进行消息监听模块的健康检查。具体的,通过该监控模块运行上述监控脚本,定期检测消息监听模块是否未运行;若未运行,则说明消息监听模块发生故障,于是启动未运行的消息监听模块,并按照预设的告警方式进行告警。定期检测消息监听模块是否未运行,例如:定期向消息监听模块发送响应信息获取请求,若消息监听模块没有返回响应信息,则确定消息监听模块未运行。其中,按照预设的告警方式进行告警,包括例如:向预设的邮箱发送告警邮件,或者,通过即时通信软件向预设客户端发送告警消息,或者,根据预设的手机号发送告警短消息等,以通知管理员消息监听模块发生故障。
本发明实施例提供的消息发布方法,一方面,通过消息订阅与发布服务器集群构成的消息订阅与发布系统进行消息的发布,由于整个网络架构中没有单点,因此可满足高可用的需求,并能保证高并发请求情况出现时,整个发布系统的性能,另一方面,由于预设的Socket会话模块、消息监听模块、监控模块与Socket服务模块之间相互独立,即便上述各模块内运行的脚本出现了故障,也不会影响到Socket服务模块的正常运行。
图7为本发明一实施例提供的消息发布装置的结构示意图。本实施例提供的消息发布装置可应用于图2所示的Socket服务器200中,用于实现上述实施例中的消息发布方法。如图7所示,本实施例提供的消息发布装置包括:套接字服务模块501以及套接字会话模块502。
其中,套接字服务模块501,用于接收客户端发送的消息,并将该消息发送给套接字会话模块502。
套接字会话模块502,用于在接收到套接字服务模块501发送的消息后,将该消息发布到消息订阅与发布系统中该消息的对应频道,以使得该消息订阅与发布系统将该消息发送给该对应频道的所有订阅者。
本实施例提供的消息发布装置中各功能模块实现各自功能的具体过程,请参见上述图3至图6所示实施例中描述的具体内容,此处不再赘述。
本发明实施例提供的消息发布装置,一方面,通过消息订阅与发布服务器集群构成的消息订阅与发布系统进行消息的发布,由于整个网络架构中没有单点,因此可满足高可用的需求,并能保证高并发请求情况出现时,整个发布系统的性能,另一方面,由于预设的Socket会话模块与Socket服务模块之间相互独立,因此即便上述各模块内运行的脚本出现了故障,也不会影响到Socket服务模块的正常运行。
图8为本发明另一实施例提供的消息发布装置的结构示意图。本实施例提供的消息发布装置可应用于图2所示的Socket服务器200中,用于实现上述实施例中的消息发布方法。如图8所示,本实施例提供的消息发布装置包括:套接字服务模块601、套接字会话模块602、消息监听模块603以及监控模块604。
其中,套接字服务模块601,用于接收客户端发送的消息,并将该消息发送给套接字会话模块602。
套接字会话模块602,用于在接收到套接字服务模块601发送的消息后,将该消息发布到消息订阅与发布系统中该消息的对应频道,以使得该消息订阅与发布系统将该消息发送给该对应频道的所有订阅者。
消息监听模块603,用于接收该消息订阅与发布系统发送的订阅消息,并将该订阅消息发送给套接字服务模块601。
进一步的,套接字服务模块601,包括:判断模块6011以及处理模块6012。
其中,判断模块6011,用于判断是否存在该订阅消息的处理记录;处理模块6012,用于若判断模块6011的判断结果为不存在该处理记录,则按照预设的处理规则对该订阅消息进行处理,并将处理后的订阅消息发送给连接到套接字服务模块601的所有客户端,以及若判断模块6011的判断结果为存在该处理记录,则忽略该订阅消息。
套接字服务模块601,还用于将所有会引起数据变更的消息发送给监控模块604,以及,将会话数据发送给监控模块604。
监控模块604包括:日志模块6041、检测模块6042、数据发布模块6043以及告警模块6044。
其中,日志模块6041,用于将接收的所有会引起数据变更的消息记录在日志中;检测模块6042,用于检测套接字服务模块601是否断开与监控模块604的连接;数据发布模块6043,用于在检测模块6042检测到套接字服务模块601断开与监控模块604的连接时,将套接字服务模块601在断开连接前最后发送的会话数据,发布到该消息订阅与发布系统中与该会话数据对应的频道;告警模块6044,用于在检测到套接字服务模块601断开与监控模块604的连接时,按照预设的告警方式进行告警。
进一步地,检测模块6042,还用于定期检测套接字会话模块602是否未运行,以及定期检测消息监听模块603是否未运行;
监控模块604,还包括:启动模块6045,用于当检测模块6042检测到套接字会话模块602未运行时,启动套接字会话模块602,以及当检测到消息监听模块603未运行时,启动消息监听模块603;
告警模块6044,还用于当检测模块6042检测到套接字会话模块602未运行时,按照预设的告警方式进行告警,以及当检测到消息监听模块603未运行时,按照预设的告警方式进行告警。
进一步地,套接字服务模块601,还用于在接收客户端发送的消息之后,按照预设的处理规则将该消息进行处理,并将处理后的消息发送给连接到套接字服务模块601的所有客户端。
本实施例提供的消息发布装置中各功能模块实现各自功能的具体过程,请参见上述图3至图7所示实施例中描述的具体内容,此处不再赘述。
本发明实施例提供的消息发布装置,一方面,通过消息订阅与发布服务器集群构成的消息订阅与发布系统进行消息的发布,由于整个网络架构中没有单点,因此可满足高可用的需求,并能保证高并发请求情况出现时,整个发布系统的性能,另一方面,由于预设的Socket会话模块、消息监听模块、监控模块与Socket服务模块之间相互独立,即便上述各模块内运行的脚本出现了故障,也不会影响到Socket服务模块的正常运行。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (15)

1.一种消息发布方法,其特征在于,应用于服务器,包括:
通过套接字服务模块接收客户端发送的消息;
通过所述套接字服务模块将所述消息发送给套接字会话模块;
通过所述套接字会话模块,将所述消息发布到消息订阅与发布系统中所述消息的对应频道,以使得所述消息订阅与发布系统将所述消息发送给所述对应频道的所有订阅者。
2.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:
通过消息监听模块接收所述消息订阅与发布系统发送的订阅消息,并通过所述消息监听模块将所述订阅消息发送给所述套接字服务模块;
通过所述套接字服务模块判断是否存在所述订阅消息的处理记录;
若不存在所述处理记录,则通过所述套接字服务模块按照预设的处理规则将所述订阅消息进行处理,并通过所述套接字服务模块将处理后的订阅消息,发送给连接到所述套接字服务模块的所有客户端;
若存在所述处理记录,则通过所述套接字服务模块忽略所述订阅消息。
3.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:
通过所述套接字服务模块将所有会引起数据变更的消息发送给监控模块;
通过所述监控模块将接收的所有会引起数据变更的消息记录在日志中。
4.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:
通过所述套接字服务模块将会话数据发送给监控模块;
通过所述监控模块在检测到所述套接字服务模块断开与所述监控模块的连接时,将所述套接字服务模块在断开连接前最后发送的会话数据,发布到所述消息订阅与发布系统中与所述会话数据对应的频道,并通过所述监控模块按照预设的告警方式进行告警。
5.如权利要求1所述的消息发布方法,其特征在于,所述方法还包括:
通过监控模块定期检测所述套接字会话模块是否未运行;
当检测到所述套接字会话模块未运行时,通过所述监控模块启动所述套接字会话模块,并通过所述监控模块按照预设的告警方式进行告警。
6.如权利要求2所述的消息发布方法,其特征在于,所述方法还包括:
通过监控模块定期检测所述消息监听模块是否未运行;
当检测到所述消息监听模块未运行时,通过所述监控模块启动所述消息监听模块,并通过所述监控模块按照预设的告警方式进行告警。
7.如权利要求1至6中的任一项所述的消息发布方法,其特征在于,通过所述套接字服务模块接收客户端发送的消息之后,还包括:
通过所述套接字服务模块按照预设的处理规则将所述消息进行处理;
通过所述套接字服务模块将处理后的消息,发送给连接到所述套接字服务模块的所有客户端。
8.一种消息发布装置,其特征在于,包括:套接字服务模块以及套接字会话模块;
所述套接字服务模块,用于接收客户端发送的消息,并将所述消息发送给所述套接字会话模块;
所述套接字会话模块,用于在接收到所述套接字服务模块发送的消息后,将所述消息发布到消息订阅与发布系统中所述消息的对应频道,以使得所述消息订阅与发布系统将所述消息发送给所述对应频道的所有订阅者。
9.如权利要求8所述的消息发布装置,其特征在于,所述装置还包括:
消息监听模块,用于接收所述消息订阅与发布系统发送的订阅消息,并将所述订阅消息发送给所述套接字服务模块;
所述套接字服务模块,包括:
判断模块,用于判断是否存在所述订阅消息的处理记录;
处理模块,用于若所述判断模块的判断结果为不存在所述处理记录,则按照预设的处理规则对所述订阅消息进行处理,并将处理后的订阅消息发送给连接到所述套接字服务模块的所有客户端,以及若所述判断模块的判断结果为存在所述处理记录,则忽略所述订阅消息。
10.如权利要求9所述的消息发布装置,其特征在于,所述装置还包括:监控模块;
所述套接字服务模块,还用于将所有会引起数据变更的消息发送给所述监控模块,以及,将会话数据发送给所述监控模块;
所述监控模块包括:
日志模块,用于将接收的所有会引起数据变更的消息记录在日志中;
检测模块,用于检测所述套接字服务模块是否断开与所述监控模块的连接;
数据发布模块,用于在所述检测模块检测到所述套接字服务模块断开与所述监控模块的连接时,将所述套接字服务模块在断开连接前最后发送的会话数据,发布到所述消息订阅与发布系统中与所述会话数据对应的频道;
告警模块,用于在检测到所述套接字服务模块断开与所述监控模块的连接时,按照预设的告警方式进行告警。
11.如权利要求10所述的消息发布装置,其特征在于,
所述检测模块,还用于定期检测所述套接字会话模块是否未运行,以及定期检测所述消息监听模块是否未运行;
所述监控模块,还包括:
启动模块,用于当所述检测模块检测到所述套接字会话模块未运行时,启动所述套接字会话模块,以及当检测到所述消息监听模块未运行时,启动所述消息监听模块;
所述告警模块,还用于当所述检测模块检测到所述套接字会话模块未运行时,按照预设的告警方式进行告警,以及当检测到所述消息监听模块未运行时,按照预设的告警方式进行告警。
12.如权利要求8至11中的任一项所述的消息发布装置,其特征在于,
所述套接字服务模块,还用于在接收客户端发送的消息之后,按照预设的处理规则处理将所述消息进行处理,以及将处理后的消息发送给连接到所述套接字服务模块的所有客户端。
13.一种消息发布系统,其特征在于,所述系统包括:分布式部署的套接字服务器集群、消息订阅与发布系统以及客户端;
所述套接字服务器中运行有如权利要求8至12中的任一项所述的消息发布装置;
所述客户端,用于向所述套接字服务器发送消息以及接收所述套接字服务器发送的订阅消息;
所述消息订阅与发布系统,包括消息订阅与发布服务器集群,用于将所述套接字服务器发送的消息,发送给订阅了所述消息的对应频道的所有订阅者。
14.一种服务器,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至7中的任一项所述的消息发布方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7中的任一项所述的消息发布方法。
CN201710611692.7A 2017-07-25 2017-07-25 消息发布方法、装置、系统、服务器及计算机可读存储介质 Active CN109302435B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710611692.7A CN109302435B (zh) 2017-07-25 2017-07-25 消息发布方法、装置、系统、服务器及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710611692.7A CN109302435B (zh) 2017-07-25 2017-07-25 消息发布方法、装置、系统、服务器及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109302435A true CN109302435A (zh) 2019-02-01
CN109302435B CN109302435B (zh) 2021-03-16

Family

ID=65167273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710611692.7A Active CN109302435B (zh) 2017-07-25 2017-07-25 消息发布方法、装置、系统、服务器及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109302435B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110719207A (zh) * 2019-10-23 2020-01-21 北京数制科技有限公司 告警消息传输方法、装置、工业数据采集平台和存储介质
CN110958240A (zh) * 2019-11-27 2020-04-03 北京数知科技股份有限公司 消息订阅系统及方法
CN111711663A (zh) * 2020-05-26 2020-09-25 北京金山云网络技术有限公司 发布及订阅服务的处理方法、装置及电子设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651698A (zh) * 2007-12-12 2010-02-17 浙江大学 基于nio和io的面向发布订阅系统的传输方法
CN102508722A (zh) * 2011-12-02 2012-06-20 中科方德软件有限公司 一种嵌入式环境下的进程间通信方法
CN102571550A (zh) * 2010-12-30 2012-07-11 北京亿阳信通软件研究院有限公司 一种通用的信息交互平台和方法
CN102664947A (zh) * 2012-04-18 2012-09-12 迈普通信技术股份有限公司 分布式系统中的通知分发方法
US8572263B1 (en) * 2011-06-14 2013-10-29 Urban Airship, Inc. Push gateway systems and methods
CN103593172A (zh) * 2012-10-29 2014-02-19 百度在线网络技术(北京)有限公司 面向统一结构化数据的应用程序的开发系统、方法及装置
CN104243606A (zh) * 2014-09-29 2014-12-24 浙江大学 一种c/s模式的dds通信系统及方法
US20160352867A1 (en) * 2015-05-27 2016-12-01 Elastic Beam, Inc. Systems and methods for api routing and security
CN106254362A (zh) * 2016-08-15 2016-12-21 杭州当虹科技有限公司 一种共享sdi数据的方法
CN106534241A (zh) * 2015-09-11 2017-03-22 北京奇虎科技有限公司 实时数据更新方法、装置和系统
CN106775772A (zh) * 2017-01-20 2017-05-31 山东浪潮商用系统有限公司 一种基于Mqtt协议服务器实现方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101651698A (zh) * 2007-12-12 2010-02-17 浙江大学 基于nio和io的面向发布订阅系统的传输方法
CN102571550A (zh) * 2010-12-30 2012-07-11 北京亿阳信通软件研究院有限公司 一种通用的信息交互平台和方法
US8572263B1 (en) * 2011-06-14 2013-10-29 Urban Airship, Inc. Push gateway systems and methods
CN102508722A (zh) * 2011-12-02 2012-06-20 中科方德软件有限公司 一种嵌入式环境下的进程间通信方法
CN102664947A (zh) * 2012-04-18 2012-09-12 迈普通信技术股份有限公司 分布式系统中的通知分发方法
CN103593172A (zh) * 2012-10-29 2014-02-19 百度在线网络技术(北京)有限公司 面向统一结构化数据的应用程序的开发系统、方法及装置
CN104243606A (zh) * 2014-09-29 2014-12-24 浙江大学 一种c/s模式的dds通信系统及方法
US20160352867A1 (en) * 2015-05-27 2016-12-01 Elastic Beam, Inc. Systems and methods for api routing and security
CN106534241A (zh) * 2015-09-11 2017-03-22 北京奇虎科技有限公司 实时数据更新方法、装置和系统
CN106254362A (zh) * 2016-08-15 2016-12-21 杭州当虹科技有限公司 一种共享sdi数据的方法
CN106775772A (zh) * 2017-01-20 2017-05-31 山东浪潮商用系统有限公司 一种基于Mqtt协议服务器实现方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110719207A (zh) * 2019-10-23 2020-01-21 北京数制科技有限公司 告警消息传输方法、装置、工业数据采集平台和存储介质
CN110958240A (zh) * 2019-11-27 2020-04-03 北京数知科技股份有限公司 消息订阅系统及方法
CN111711663A (zh) * 2020-05-26 2020-09-25 北京金山云网络技术有限公司 发布及订阅服务的处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN109302435B (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN108897854B (zh) 一种超时任务的监控方法和装置
CN103718578B (zh) 用于消息通知、以及用于提供消息通知的方法和装置
CN109547511B (zh) 一种web消息实时推送方法、服务器、客户端及系统
CN102739411B (zh) 提供证明服务
CN112527525A (zh) 基于消息队列的分布式事件总线处理方法、终端及介质
WO2021237433A1 (zh) 消息推送方法、装置、电子设备及计算机可读介质
WO2015187400A1 (en) Computer system to support failover in an event stream processing system
CN109302435A (zh) 消息发布方法、装置、系统、服务器及计算机可读存储介质
CN113157466A (zh) 一种消息推送方法、装置、系统、电子设备和存储介质
CN113542337B (zh) 信息共享方法、装置、电子设备及存储介质
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
CN111246238A (zh) 直播方法、装置、存储介质及直播系统
CN110534136B (zh) 录音的方法和装置
CN111866544B (zh) 数据处理方法、装置、设备及计算机可读存储介质
WO2023185071A1 (zh) 数据查询方法、数据写入方法、相关装置和系统
CN115632815A (zh) 一种数据的更新方法、装置、电子设备及存储介质
CN112866622B (zh) 信息处理方法、装置、服务器、存储介质和系统
CN111290873B (zh) 故障处理方法和装置
CN111935316B (zh) 一种前端设备目录获取方法及装置
CN114938388A (zh) 分布式数据的传输方法、装置、系统及存储介质
CN110519397B (zh) 一种基于nginx的sip终端接入的负载均衡系统及方法
CN114461582A (zh) 文件处理方法、装置、设备及存储介质
CN113206780A (zh) 企业即时通讯方法、装置、计算机设备及可读存储介质
CN109064317B (zh) 一种数据接收与转发方法、电子设备和可读存储介质
CN113760693A (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
GR01 Patent grant
GR01 Patent grant