CN105554142B - 消息推送的方法、装置及系统 - Google Patents
消息推送的方法、装置及系统 Download PDFInfo
- Publication number
- CN105554142B CN105554142B CN201510992832.0A CN201510992832A CN105554142B CN 105554142 B CN105554142 B CN 105554142B CN 201510992832 A CN201510992832 A CN 201510992832A CN 105554142 B CN105554142 B CN 105554142B
- Authority
- CN
- China
- Prior art keywords
- server
- log
- slave
- servers
- voting
- 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 98
- 238000012545 processing Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种消息推送的方法、装置及系统,涉及互联网技术领域,为解决分布式服务器集群环境中推送平台负荷压力较大的问题而发明。本发明的方法包括:主服务器接收推送平台发送的通知消息,将通知消息写入到log日志中,并将log日志分发给从服务器;从服务器接收主服务器分发的log日志,根据log日志更新自身的log日志,并将log日志中的通知消息下发给建立有连接关系的终端;其中,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器。本发明能够有效降低推送平台的负荷压力。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种消息推送的方法、装置及系统。
背景技术
在现有网络中,推送平台会通过服务器向终端主动推送通知消息。当需要推送通知消息时,推送平台会将通知消息发送给服务器,服务器与终端之间建立并保持传输控制协议(Transmission Control Protocol,简称TCP)连接,服务器通过TCP连接将接收到的通知消息发送给终端。日常生活中,手机里的热点新闻推送、好友圈消息更新提示以及应用版本更新提示等功能即是通过消息推送机制实现的。
通常公网中的终端数量十分庞大,通过单台服务器向所有终端推送通知消息并不现实。因此,现有技术中出现了分布式服务器集群的网络架构,即使用多台服务器负责消息推送。终端可以选择与任意一台服务器建立TCP连接,每台服务器负责向自身连接的终端推送通知消息。
在上述通过分布式服务器集群推送消息的过程中,推送平台需要向每一台服务器分别推送通知消息,并且还需要对服务器进行管理,例如保证服务器接收通知消息的同步性、发现并处理宕机服务器等。由此可见,当采用分布式服务器集群的网络架构时,推送平台侧的负荷压力较大。
发明内容
本发明提供了一种消息推送的方法、装置及系统,能够解决分布式服务器集群环境中推送平台负荷压力较大的问题。
为解决上述问题,第一方面,本发明提供了一种消息推送的方法,该方法应用于主服务器侧,该方法包括:
主服务器接收推送平台发送的通知消息,主服务器为分布式服务器集群中通过投票选举出的服务器;
将通知消息写入到log日志中;
将log日志分发给集群中的从服务器,以使得从服务器更新自身的log日志并将通知消息下发给建立有连接关系的终端,从服务器为集群中除主服务器之外的其他服务器。
第二方面,本发明还提供了一种消息推送的方法,该方法应用于从服务器侧,该方法包括:
从服务器接收主服务器分发的log日志,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器,log日志中记录有推送平台向主服务器发送的通知消息;
根据log日志更新自身的log日志;
将log日志中的通知消息下发给建立有连接关系的终端。
第三方面,本发明还提供了一种消息推送的装置,该装置位于主服务器侧,该装置包括:
接收单元,用于接收推送平台发送的通知消息,主服务器为分布式服务器集群中通过投票选举出的服务器;
写入单元,用于将通知消息写入到log日志中;
发送单元,用于将log日志分发给集群中的从服务器,以使得从服务器更新自身的log日志并将通知消息下发给建立有连接关系的终端,从服务器为集群中除主服务器之外的其他服务器。
第四方面,本发明还提供了一种消息推送的装置,该装置位于从服务器侧,该装置包括:
接收单元,用于接收主服务器分发的log日志,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器,log日志中记录有推送平台向主服务器发送的通知消息;
更新单元,用于根据log日志更新自身的log日志;
发送单元,用于将log日志中的通知消息下发给建立有连接关系的终端。
第五方面,本发明还提供了一种消息推送的系统,该系统包括:推送平台、主服务器、从服务器以及终端;其中,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器;
推送平台,用于向主服务器发送通知消息;
主服务器,用于接收推送平台发送的通知消息,将通知消息写入到log日志中,并将log日志分发给从服务器;
从服务器,用于接收主服务器分发的log日志,根据log日志更新自身的log日志,并将log日志中的通知消息下发给建立有连接关系的终端;
终端,用于接收建立有连接关系的从服务器下发的通知消息。
本发明提供的消息推送的方法、装置及系统,能够在分布式服务器集群中选举出主服务器,推送平台将通知消息下发给主服务器,由主服务器通过log日志的形式分发给各个从服务器,并使从服务器将接收的通知消息发送给建立有连接关系的终端。与现有技术相比,本发明中,推送平台仅将通知消息发送给主服务器即可,无需与其他服务器进行通信,因此可以大大减轻推送平台的负荷压力。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的第一种消息推送的方法流程图;
图2示出了本发明实施例提供的第二种消息推送的方法流程图;
图3示出了本发明实施例提供的第三种消息推送的方法流程图;
图4示出了本发明实施例提供的第一种消息推送的装置的组成框图;
图5示出了本发明实施例提供的第二种消息推送的装置的组成框图;
图6示出了本发明实施例提供的第三种消息推送的装置的组成框图;
图7示出了本发明实施例提供的第四种消息推送的装置的组成框图;
图8示出了本发明实施例提供的一种消息推送的系统框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种消息推送的方法,该方法应用于主服务器侧。如图1所示,该方法包括:
101、主服务器接收推送平台发送的通知消息。
本实施例中,推送平台通过分布式服务器集群向终端下发通知消息。该分布式服务器集群由多个服务器组成,各个服务器之间同质,每台服务器接入多个终端,终端可以更改接入的服务器。
在分布式服务器集群中,通过投票选举出一个主服务器,剩余服务器则为从服务器。主服务器用于与推送平台进行对接,接收推送平台发送的通知消息,并将通知消息分发给各个从服务器,使得从服务器将该通知消息分发给自身接入的终端。本实施例中的投票主体为集群中的服务器,每台服务器均需要向包括自身在内的服务器投出至少一票,例如仅向自身投票,或者向自身投一票并且向某个其他服务器头一票。服务器可以依据预先配置的投票策略对其他服务器进行投票。例如对通信速度最快的服务器投票,或者对终端负载量最少的服务器投票,或者对处理资源最空闲的服务器投票等,本实施例对此不作限制。
本实施例中,任意时刻上分布式服务器集群可以仅有一个主服务器,也可以同时存在多个主服务器。对于后者情况,每一个主服务器负责一部分从服务器的消息分发。各个主服务器负责分发的从服务器没有重复。从服务器可以根据自身配置的接入规则,选择或更改连接的主服务器。所述规则包括但不限于是:选择通信速度最快的主服务器、选择距离最近的主服务器等,本实施例对此不作限制。需要说明的是,为保证切实减轻推送平台的负荷压力,实际应用中主服务器的数量最好不要超过服务器总量的三分之一。为便于说明和理解,本实施例后续将以集群中仅存在一个主服务器的情况为例进行说明。
进一步的,本实施例中的投票行为可以是一次性的,例如在网络初始化时进行投票,确定出主服务器。或者投票行为也可以是动态的,例如按照预设的时间段周期性投票选择主服务器。此外,当主服务器宕机时,应当重新进行投票,选举出新的可用主服务器。
在确定主服务器后,该主服务器向推送平台发送更新消息,向推送平台通知自身的主服务器地位。推送平台接收到该通知后,与该服务器建立连接,以便后续下发通知消息。对于从服务器而言,主服务器向集群中的其他服务器广播自身的主服务器地位。在接收到该通知后,从服务器与该主服务器建立通信连接。对于存在多个主服务器的情况,主服务器仅向其负责的服务器单播或组播该通知消息,对于负责服务器的确定,每个服务器中可以预先配置一个IP地址段或者服务器标识列表,其中记录有该服务器(如果当选为主服务器)负责的服务器的IP地址或标识。实际应用中,负责服务器的确定通常可以依据服务器就近原则确定,即主服务器负责距离较近的从服务器,该距离主要是指物理距离。
102、主服务器将通知消息写入到log日志中。
本实施例中,主服务器通过log日志的形式向从服务器发送通知消息。主服务器将推送平台发送的通知消息写入到log日志中,然后执行步骤103,向从服务器发送log日志。
103、主服务器将log日志分发给集群中的从服务器。
本实施例中,主服务器通过广播的方式将写有通知消息的log日志分发给从服务器,以使得从服务器更新自身的log日志并将通知消息下发给建立有连接关系的终端,即使从服务器将通知消息发送给自身接入的终端。对于多个主服务器的情况,主服务器可以以单播或组播的方式定向地向自身负责的从服务器发送log日志。
在本实施例的一种实现方式中,主服务器可以周期性的向从服务器发送log日志。如果推送平台推送了新的通知消息,则主服务器将该通知消息写入到下一个即将发送的log日志中进行分发。如果没有接收到推送平台的通知消息,则当到达推送周期时,主服务器向从服务器下发空的log日志。从服务器从log日志中读取不到通知消息时,不作任何操作。
进一步的,为减少主从服务器之间的通信次数,节省集群中的传输资源,在本实施例的另一种实现方式中,主服务器也可以仅在接收到推送平台的通知消息时才向从服务器发送log日志。
本实施例中,主服务器可以仅用作转发通知消息之用,此情况下主服务器可以不接入终端;此外,主服务器也可以具有从服务器的功能,其自身也接入有多个终端,除了向从服务器发送通知消息以外,主服务器也可以向自身接入的终端下发通知消息。
本发明实施例提供的消息推送的方法,能够在分布式服务器集群中选举出主服务器,推送平台将通知消息下发给主服务器,由主服务器通过log日志的形式分发给各个从服务器,并使从服务器将接收的通知消息发送给建立有连接关系的终端。与现有技术相比,本发明实施例中,推送平台仅将通知消息发送给主服务器即可,无需与其他服务器进行通信,因此可以大大减轻推送平台的负荷压力。
进一步的,本发明实施例还提供了一种消息推送的方法,该方法应用于从服务器侧。如图2所示,该方法包括:
201、从服务器接收主服务器分发的log日志。
如前所述,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器。主服务器将推送平台发送的通知消息写入到log日志中发送给从服务器。
与图1所示方法相同,分布式服务器集群中的每一个服务器均可以申请主服务器,每一个服务器都可以对自身和/或其他服务器进行投票。当仅选举一个主服务器时,服务器可以对自身进行投票,也可以为其他任意一个服务器投票。服务器可以依据预先配置的投票策略对其他服务器进行投票。例如对通信速度最快的服务器投票,或者对终端负载量最少的服务器投票,或者对处理资源最空闲的服务器投票等,本实施例对此不作限制。
202、从服务器根据log日志更新自身的log日志。
在确定出主从服务器后,从服务器与主服务器建立连接,以便后续接收主服务器发送的通知消息。
当某个服务器被选举为主服务器时,该服务器向集群内的其他服务器发送通知,其他服务器根据通知中携带的IP地址或服务器标识与主服务器建立连接。
本实施例中,当主服务器接收到推送平台发送的通知消息后,主服务器将通知消息写入到log日志中,然后将log日志广播给其他的从服务器。当集群中存在多个主服务器时,从服务器只接收其连接的主服务器发送的log日志,此时主服务器通过组播或单播的方式向自身负责的从服务器发送log日志。
接收到log日志后,从服务器对本地保存的log日志进行更新,将包含通知消息的log日志保存在本地。在本实施例的一种实现方式中,从服务器可以定期接收主服务器发送的log日志,该log日志中不一定包含通知消息。从服务器可以无需关心log日志中是否携带通知消息,每次接收到log日志后都对本地log日志进行一次更新。当然从服务器也可以在更新前对log日志进行识别,仅在其中包含通知消息的情况下才更新本地log日志。
在本实施例的另一种实现方式中,主服务器只有在接收到通知消息时才向从服务器发送log日志。此种情况下,从服务器每次接收到log日志时都需要对本地log日志进行更新。
203、从服务器将log日志中的通知消息下发给建立有连接关系的终端。
在对本地log日志进行更新后,从服务器将log日志中的通知消息发送给与其连接的终端,由此使得终端获得推送平台发送的通知消息。
实际应用中,终端可以自由选择与哪个服务器建立连接,并且在建立连接后,终端也可以改为连接其他的服务器。
本发明实施例提供的消息推送的方法,能够在分布式服务器集群中选举出主服务器,推送平台将通知消息下发给主服务器,由主服务器通过log日志的形式分发给各个从服务器,并使从服务器将接收的通知消息发送给建立有连接关系的终端。与现有技术相比,本发明实施例中,推送平台仅将通知消息发送给主服务器即可,无需与其他服务器进行通信,因此可以大大减轻推送平台的负荷压力。
进一步的,本发明实施例还提供了一种消息推送的方法,该方法涉及主服务器及从服务器。如图3所示,该方法包括:
301、每个服务器在一个投票周期内为自身进行投票,并向集群中的其他服务器发送投票请求。
本实施例中,选举主服务器的过程是动态的,即每隔一段时间进行一次选举。分布式服务器集群中可以预先规定一个投票周期,例如2小时、一天等。在每一个投票周期内,每个服务器进行一次投票。在本实施例采用的投票策略为:服务器为自身投一票,并且请求其他服务器的投票。
302、每个服务器在一个投票周期内接收其他服务器发送的投票请求。
本实施例中,每一个服务器即是选举主服务器的候选者,也是选举主服务器投票者。除了向其他服务器请求投票外,也需要响应其他服务器的投票请求为其他服务器进行投票。
303、每个服务器为最先接收到的投票请求对应的服务器投票。
本实施例中,规定每一个服务器除了为自身投票以外,仅向其他服务器投一票。当接收到其他服务器的投票请求后,服务器仅对最先接收的投票请求进行响应,向该请求对应的服务器进行投票。而对于在后接收到的投票请求,服务器不再对其进行响应。
实际应用中,服务器A最先接收到服务器B的投票请求可能存在以下几种情况:1、服务器B相对服务器C、D等最先发出投票请求,并且被服务器A最先接收到;2、服务器B在服务器C、D之后才发出投票请求,但是受制于网络通信条件,服务器B的投票请求先于服务器C、D的投票请求到达服务器A。本实施例中,服务器无需对上述可能出现的不同情况进行区分,只要对最先接收到投票请求进行响应即可。
304、当在投票周期内最先获得最多票数时,服务器确定成为主服务器。
每个服务器除了为自身投的一票外,还会获得其他服务器的投票,或者没有获得其他服务器的投票。如果将为自身投的一票计算在内,那么实际应用中,服务器获得的投票数量最少为一票,最多则为N票。其中,N为分布式服务器集群中的服务器数量。
在获得投票后,服务器之间会将自身获得的票数发送给其他服务器,由此每一个服务器都会获得包括自身在内的所有服务器的票数。然后服务器对各个服务器的票数进行统计,如果票数最多的服务器是其他服务器,则服务器承认该服务器的主服务器地位,并且自动将自身地位确定为从服务器。如果票数最多的服务器就是本服务器,那么该服务器承认自身的主服务器地位,由此完成主服务器的选举。
进一步的,如前所述,主服务器的选举过程是动态的,每一个投票周期都要进行一次选举。这种方式需要保证所有服务器的投票行为都是处于同一个投票周期内的。为实现该前期条件,本实施例中,每一个服务器都独立维护自身的周期数,每个投票周期对应一个周期数。服务器在每经过一个投票周期后就对周期数进行一次增加,以使周期数唯一并且随时间推移单调递增。
示例性的,假设网络初始化完毕的时刻为时13:47:00,预设的投票周期为2h。在13:47:00-15:47:00这一时段,每个服务器维护的周期数为1。当到达15:47:00-17:47:00这一时段时,进入第二个投票周期,每一个服务器将自己维护的周期数加1,得到的周期数为2。当到达17:47:00-19:47:00这一时段时,进入第三个投票周期,每一个服务器将自己维护的周期数再次加1,得到的周期数为3。以此类推。
理论上所有服务器在同一时刻上维护的周期数都应当是相同的,但是受网络传输条件、服务器处理性能等因素影响,有时服务器会提前或滞后更新自身的周期数,由此使得自身维护的周期数大于或小于其他服务器维护的周期数。进而使得该服务器的投票周期与其他服务器的投票周期不同步。
为解决该问题,在发送投票请求时,服务器可以将自身当前的周期数携带在投票请求中。对于接收到投票请求的服务器,其可以将投票请求中的周期数与自身维护的周期数进行比对,前者数值等于后者数值,则服务器按照上述流程根据实际情况进行投票(是否为最先接收到的投票请求);如果前者数值大于后者数值,则服务器将自身的周期数更新为投票请求中的周期数,并根据实际情况进行投票;如果前者数值小于后者数值,则服务器拒绝为发送投票请求的服务器投票。
此外,在本实施例的另一种实现方式中,在确定成为主服务器之后,主服务器也可以与从服务器定期进行周期数交换。具体的,主服务器与从服务器定期交换周期数,并且每一个从服务器也会与包括主服务器在内的其他服务器交换周期数。交换周期数的周期通常小于投票周期。对于主服务器而言,若从服务器的周期数小于主服务器的周期数,则主服务器使从服务器根据主服务器的周期数进行周期数更新,使从服务器将主服务器的周期数更新为自身的周期数;若从服务器的周期数大于主服务器的周期数,则主服务器放弃主服务器地位。与此对应的,对于从服务器而言,若主服务器的周期数大于自身的周期数,则从服务器根据主服务器的周期数进行周期数更新;若主服务器的周期数小于自身的周期数,则从服务器否定主服务器的主服务器地位。
对于主服务器放弃主服务器地位,或者从服务器否认主服务器的主服务器地位的情况,各个服务器可以在当前的投票周期内再次发起投票,也可以等待到达下一投票周期时进行再次投票,以选举出新的主服务器。
进一步的,为避免主服务器宕机影响消息推送,在本实施例的另一种实现方式中,主服务器还可以定期向从服务器发送心跳包,以向从服务器通知自身的主服务器地位。从服务器定期接收主服务器发送的心跳包,以便确定主服务器的主服务器地位。如果主服务器因宕机等原因无法发送心跳包,则当从服务器在预设时长内未接收到主服务器发送的心跳包时,从服务器否定主服务器的主服务器地位,由此启动下一次选举。本实施例中,主服务器发送心跳包的周期独立于投票周期,上述预设时长通常为心跳间隔的倍数。
305、主服务器接收推送平台发送的通知消息。
本步骤的实现方式与图1步骤101的实现方式相同,此处不再赘述。
306、主服务器在log日志中生成log操作记录。
主服务器在本地的log日志中生成一条log操作记录,用以记录接收到的通知消息。
307、主服务器将通知消息作为变量写入到log操作记录中。
在将通知消息写入到log操作记录中后,就获得的携带通知消息的log日志。
308、主服务器将log日志分发给集群中的从服务器。
本实施例中,集群中有且只有一个主服务器,主服务器通过广播的形式向各个从服务器发送log日志。
309、从服务器根据log日志更新自身的log日志。
本步骤的实现方式与图2步骤202的实现方式相同,此处不再赘述。
310、从服务器向主服务器上报log日志的更新状态。
在本实施例的一种实现方式中,从服务器需要根据主服务器的指示向终端发送通知消息。主服务器对从服务器的更新状态进行统计,当成功更新log日志的从服务器数量满足一定条件时,主服务器通知从服务器向终端发送通知消息。
为保证全网消息推送的同步性,只有全部从服务器均成功更新log日志后,主服务器才会指示从服务器发送通知消息。但是实际应用中部分从服务器可能受到通信条件、处理负荷等因素的影响无法成功更新log日志。对于此种情况,如果等待所有从服务器都更新完log日志,那么会对其他从服务器发送通知消息造成拖延。因此在本实施例中,可以由主服务器对从服务器的更新状态进行统计,当成功更新log日志的从服务器达到一定数量时,主服务器就可以通知这些从服务器进行消息发送,而对于其他从服务器,主服务器后续可以重复向其发送log日志,以使从服务器再次进行更新。
本步骤中,从服务器完成log日志后向主服务器发送日志的更新状态,该状态可以是“更新成功”或者是“更新失败”。对于因宕机导致从服务器无法返回更新状态的情况,主服务器也可以以在一定时间内没有收到更新状态为依据,判断从服务器更新失败。
311、主服务器统计各个从服务器的更新状态。
312、当成功更新log日志的从服务器数量超过预设数量时,主服务器指示成功更新log日志的从服务器向连接的终端下发通知消息。
在本实施例的一种实现方式中,该预设数量为集群服务器总数的二分之一。当集群服务器数量为奇数时,预设数量也可以为(N-1)/2+1或者(N-1)/2-1,其中N为集群中的服务器数量。
313、从服务器根据主服务器的指示,将log日志中的通知消息下发给建立有连接关系的终端。
对于成功更新log日志的从服务器,在接收到主服务器的指示后,向终端发送通知消息。而对于更新失败的从服务器,主服务器向更新失败的从服务器重复分发log日志。从服务器接收主服务器重复分发的log日志,根据重复接收的log日志再次更新自身的log日志,并反馈更新状态。
如果从服务器仍旧更新失败,那么主服务器可以再次进行发送log日志,直至发送次数达到预设上限值为止,主服务器放弃本次消息推送。
进一步的,作为对图1及图3所示方法的实现,本发明实施例还提供了一种消息推送的装置,该装置位于主服务器侧,可以在主服务器内部,也可以独立于主服务器但是与主服务器建立有数据交互关系。如图4所示,该装置包括:接收单元41、写入单元42以及发送单元43;其中,
接收单元41,用于接收推送平台发送的通知消息,主服务器为分布式服务器集群中通过投票选举出的服务器;
写入单元42,用于将通知消息写入到log日志中;
发送单元43,用于将log日志分发给集群中的从服务器,以使得从服务器更新自身的log日志并将通知消息下发给建立有连接关系的终端,从服务器为集群中除主服务器之外的其他服务器。
进一步的,如图5所示,该装置进一步包括处理单元44,用于:
在接收推送平台发送的通知消息之前,在一个投票周期内为自身进行投票;并且,
向集群中的其他服务器发送投票请求,以获得其他服务器的投票;
当在投票周期内最先获得最多票数时,确定成为主服务器。
进一步的,如图5所示,该装置进一步包括:
交换单元45,用于在确定成为主服务器之后,与从服务器交换周期数,每个投票周期对应一个周期数,周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
更新单元46,用于当从服务器的周期数小于主服务器的周期数时,使从服务器根据主服务器的周期数进行周期数更新;
处理单元44,用于当从服务器的周期数大于主服务器的周期数时,放弃主服务器地位。
进一步的,发送单元43,用于在确定成为主服务器之后,定期向从服务器发送心跳包,以便向从服务器通知自身的主服务器地位。
进一步的,如图5所示,写入单元42,包括:
生成模块421,用于在log日志中生成log操作记录;
写入模块422,用于将通知消息作为变量写入到log操作记录中。
进一步的,如图5所示,该装置进一步包括统计单元47,用于在将log日志分发给集群中的从服务器之后,统计各个从服务器的更新状态;
指示单元48,用于当成功更新log日志的从服务器数量超过预设数量时,指示成功更新log日志的从服务器向连接的终端下发通知消息。
进一步的,指示单元48使用的预设数量为集群服务器总数的二分之一。
进一步的,发送单元43,用于在统计各个从服务器的更新状态之后,向更新失败的从服务器重复分发log日志。
进一步的,作为对图2及图3所示方法的实现,本发明实施例还提供了一种消息推送的装置,该装置位于从服务器侧,可以在从服务器内部,也可以独立于从服务器但是与从服务器建立有数据交互关系。如图6所示,该装置包括:接收单元61、更新单元62以及发送单元63;其中,
接收单元61,用于接收主服务器分发的log日志,主服务器为分布式服务器集群中通过投票选举出的服务器,从服务器为集群中除主服务器之外的其他服务器,log日志中记录有推送平台向主服务器发送的通知消息;
更新单元62,用于根据log日志更新自身的log日志;
发送单元63,用于将log日志中的通知消息下发给建立有连接关系的终端。
进一步的,如图7所示,该装置进一步包括:处理单元64,用于:
在接收主服务器分发的log日志之前,在一个投票周期内接收其他服务器发送的投票请求;
为最先接收到的投票请求对应的服务器投票。
进一步的,如图7所示,该装置进一步包括:
交换单元65,用于在投票选举出主服务器之后,与包括主服务器在内的其他服务器交换周期数,每个投票周期对应一个周期数,周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
更新单元62,用于当主服务器的周期数大于自身的周期数时,根据主服务器的周期数进行周期数更新;
处理单元64,用于当主服务器的周期数小于自身的周期数时,否定主服务器的主服务器地位。
进一步的,接收单元61,用于在投票选举出主服务器之后,定期接收主服务器发送的心跳包,以便处理单元64确定主服务器的主服务器地位。
进一步的,处理单元64,用于当在预设时长内未接收到主服务器发送的心跳包时,否定主服务器的主服务器地位。
进一步的,发送单元63,用于:
向主服务器上报log日志的更新状态;
当更新成功时,根据主服务器的指示,将log日志中的通知消息下发给建立有连接关系的终端。
进一步的,接收单元61,用于当更新失败时,接收主服务器重复分发的log日志;
更新单元62,用于根据重复接收的log日志再次更新自身的log日志。
本发明实施例提供的消息推送的装置,能够在分布式服务器集群中选举出主服务器,推送平台将通知消息下发给主服务器,由主服务器通过log日志的形式分发给各个从服务器,并使从服务器将接收的通知消息发送给建立有连接关系的终端。与现有技术相比,本发明实施例中,推送平台仅将通知消息发送给主服务器即可,无需与其他服务器进行通信,因此可以大大减轻推送平台的负荷压力。
进一步的,作为对图1至图3所示方法的实现,本发明实施例还提供了一种消息推送的系统。如图8所示,该系统包括:推送平台81、主服务器82、从服务器83以及终端84;其中,主服务器82为分布式服务器集群中通过投票选举出的服务器,从服务器83为集群中除主服务器82之外的其他服务器;
推送平台81,用于向主服务器82发送通知消息;
主服务器82,用于接收推送平台81发送的通知消息,将通知消息写入到log日志中,并将log日志分发给从服务器83;
从服务器83,用于接收主服务器82分发的log日志,根据log日志更新自身的log日志,并将log日志中的通知消息下发给建立有连接关系的终端84;
终端84,用于接收建立有连接关系的从服务器83下发的通知消息。
本发明实施例提供的消息推送的系统,能够在分布式服务器集群中选举出主服务器,推送平台将通知消息下发给主服务器,由主服务器通过log日志的形式分发给各个从服务器,并使从服务器将接收的通知消息发送给建立有连接关系的终端。与现有技术相比,本发明实施例中,推送平台仅将通知消息发送给主服务器即可,无需与其他服务器进行通信,因此可以大大减轻推送平台的负荷压力。
本发明的实施例公开了:
A1、一种消息推送的方法,所述方法应用于主服务器侧,其特征在于,所述方法包括:
主服务器接收推送平台发送的通知消息,所述主服务器为分布式服务器集群中通过投票选举出的服务器;
将所述通知消息写入到log日志中;
将所述log日志分发给集群中的从服务器,以使得所述从服务器更新自身的log日志并将所述通知消息下发给建立有连接关系的终端,所述从服务器为集群中除所述主服务器之外的其他服务器。
A2、根据A1所述的方法,其特征在于,在所述接收推送平台发送的通知消息之前,所述方法进一步包括:
在一个投票周期内为自身进行投票;并且,
向集群中的其他服务器发送投票请求,以获得所述其他服务器的投票;
当在所述投票周期内最先获得最多票数时,确定成为所述主服务器。
A3、根据A2所述的方法,其特征在于,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
在确定成为所述主服务器之后,所述方法进一步包括:
与所述从服务器交换周期数;
若所述从服务器的周期数小于所述主服务器的周期数,则使所述从服务器根据所述主服务器的周期数进行周期数更新;
若所述从服务器的周期数大于所述主服务器的周期数,则放弃主服务器地位。
A4、根据A2所述的方法,其特征在于,在确定成为所述主服务器之后,所述方法进一步包括:
定期向所述从服务器发送心跳包,以便向所述从服务器通知自身的主服务器地位。
A5、根据A1所述的方法,其特征在于,所述将所述通知消息写入到log日志中,包括:
在所述log日志中生成log操作记录;
将所述通知消息作为变量写入到所述log操作记录中。
A6、根据A1所述的方法,其特征在于,在所述将所述log日志分发给集群中的从服务器之后,所述方法进一步包括:
统计各个从服务器的更新状态;
当成功更新log日志的从服务器数量超过预设数量时,指示成功更新log日志的从服务器向连接的终端下发所述通知消息。
A7、根据A6所述的方法,其特征在于,所述预设数量为集群服务器总数的二分之一。
A8、根据A6或7所述的方法,其特征在于,在所述统计各个从服务器的更新状态之后,所述方法进一步包括:
向更新失败的从服务器重复分发所述log日志。
B9、一种消息推送的方法,所述方法应用于从服务器侧,其特征在于,所述方法包括:
从服务器接收主服务器分发的log日志,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器,所述log日志中记录有推送平台向所述主服务器发送的通知消息;
根据所述log日志更新自身的log日志;
将所述log日志中的所述通知消息下发给建立有连接关系的终端。
B10、根据B9所述的方法,其特征在于,在所述接收主服务器分发的log日志之前,所述方法进一步包括:
在一个投票周期内接收其他服务器发送的投票请求;
为最先接收到的投票请求对应的服务器投票。
B11、根据B10所述的方法,其特征在于,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
在投票选举出所述主服务器之后,所述方法进一步包括:
与包括所述主服务器在内的其他服务器交换周期数;
若所述主服务器的周期数大于自身的周期数,则根据所述主服务器的周期数进行周期数更新;
若所述主服务器的周期数小于自身的周期数,则否定所述主服务器的主服务器地位。
B12、根据B10所述的方法,其特征在于,在投票选举出所述主服务器之后,所述方法进一步包括:
定期接收所述主服务器发送的心跳包,以便确定所述主服务器的主服务器地位。
B13、根据B12所述的方法,其特征在于,若在预设时长内未接收到所述主服务器发送的心跳包,则否定所述主服务器的主服务器地位。
B14、根据B9所述的方法,其特征在于,所述方法进一步包括:
向所述主服务器上报所述log日志的更新状态;
所述将所述log日志中的所述通知消息下发给建立有连接关系的终端,包括:
若更新成功,则根据所述主服务器的指示,将所述log日志中的所述通知消息下发给建立有连接关系的终端。
B15、根据B14所述的方法,其特征在于,所述方法进一步包括:
若更新失败,则接收所述主服务器重复分发的所述log日志;
根据重复接收的所述log日志再次更新自身的log日志。
C16、一种消息推送的装置,所述装置位于主服务器侧,其特征在于,所述装置包括:
接收单元,用于接收推送平台发送的通知消息,所述主服务器为分布式服务器集群中通过投票选举出的服务器;
写入单元,用于将所述通知消息写入到log日志中;
发送单元,用于将所述log日志分发给集群中的从服务器,以使得所述从服务器更新自身的log日志并将所述通知消息下发给建立有连接关系的终端,所述从服务器为集群中除所述主服务器之外的其他服务器。
C17、根据C16所述的装置,其特征在于,所述装置进一步包括处理单元,用于:
在所述接收推送平台发送的通知消息之前,在一个投票周期内为自身进行投票;并且,
向集群中的其他服务器发送投票请求,以获得所述其他服务器的投票;
当在所述投票周期内最先获得最多票数时,确定成为所述主服务器。
C18、根据C17所述的装置,其特征在于,所述装置进一步包括:
交换单元,用于在确定成为所述主服务器之后,与所述从服务器交换周期数,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
更新单元,用于当所述从服务器的周期数小于所述主服务器的周期数时,使所述从服务器根据所述主服务器的周期数进行周期数更新;
所述处理单元,用于当所述从服务器的周期数大于所述主服务器的周期数时,放弃主服务器地位。
C19、根据C17所述的装置,其特征在于,所述发送单元,用于在确定成为所述主服务器之后,定期向所述从服务器发送心跳包,以便向所述从服务器通知自身的主服务器地位。
C20、根据C16所述的装置,其特征在于,所述写入单元,包括:
生成模块,用于在所述log日志中生成log操作记录;
写入模块,用于将所述通知消息作为变量写入到所述log操作记录中。
C21、根据C16所述的装置,其特征在于,所述装置进一步包括统计单元,用于在将所述log日志分发给集群中的从服务器之后,统计各个从服务器的更新状态;
指示单元,用于当成功更新log日志的从服务器数量超过预设数量时,指示成功更新log日志的从服务器向连接的终端下发所述通知消息。
C22、根据C21所述的装置,其特征在于,所述指示单元使用的所述预设数量为集群服务器总数的二分之一。
C23、根据C21或22所述的装置,其特征在于,所述发送单元,用于在统计各个从服务器的更新状态之后,向更新失败的从服务器重复分发所述log日志。
D24、一种消息推送的装置,所述装置位于从服务器侧,其特征在于,所述装置包括:
接收单元,用于接收主服务器分发的log日志,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器,所述log日志中记录有推送平台向所述主服务器发送的通知消息;
更新单元,用于根据所述log日志更新自身的log日志;
发送单元,用于将所述log日志中的所述通知消息下发给建立有连接关系的终端。
D25、根据D24所述的装置,其特征在于,所述装置进一步包括:处理单元,用于:
在接收主服务器分发的log日志之前,在一个投票周期内接收其他服务器发送的投票请求;
为最先接收到的投票请求对应的服务器投票。
D26、根据D25所述的装置,其特征在于,所述装置进一步包括:
交换单元,用于在投票选举出所述主服务器之后,与包括所述主服务器在内的其他服务器交换周期数,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
所述更新单元,用于当所述主服务器的周期数大于自身的周期数时,根据所述主服务器的周期数进行周期数更新;
所述处理单元,用于当所述主服务器的周期数小于自身的周期数时,否定所述主服务器的主服务器地位。
D27、根据D25所述的装置,其特征在于,所述接收单元,用于在投票选举出所述主服务器之后,定期接收所述主服务器发送的心跳包,以便所述处理单元确定所述主服务器的主服务器地位。
D28、根据D27所述的装置,其特征在于,所述处理单元,用于当在预设时长内未接收到所述主服务器发送的心跳包时,否定所述主服务器的主服务器地位。
D29、根据D24所述的装置,其特征在于,所述发送单元,用于:
向所述主服务器上报所述log日志的更新状态;
当更新成功时,根据所述主服务器的指示,将所述log日志中的所述通知消息下发给建立有连接关系的终端。
D30、根据D29所述的装置,其特征在于,所述接收单元,用于当更新失败时,接收所述主服务器重复分发的所述log日志;
所述更新单元,用于根据重复接收的所述log日志再次更新自身的log日志。
E31、一种消息推送的系统,其特征在于,所述系统包括:推送平台、主服务器、从服务器以及终端;其中,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器;
所述推送平台,用于向所述主服务器发送通知消息;
所述主服务器,用于接收所述推送平台发送的所述通知消息,将所述通知消息写入到log日志中,并将所述log日志分发给所述从服务器;
所述从服务器,用于接收所述主服务器分发的所述log日志,根据所述log日志更新自身的log日志,并将所述log日志中的所述通知消息下发给建立有连接关系的终端;
所述终端,用于接收建立有连接关系的从服务器下发的所述通知消息。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (31)
1.一种消息推送的方法,所述方法应用于主服务器侧,其特征在于,所述方法包括:
主服务器接收推送平台发送的通知消息,所述主服务器为分布式服务器集群中通过投票选举出的服务器;
将所述通知消息写入到log日志中;
将所述log日志分发给集群中的从服务器,以使得所述从服务器更新自身的log日志并将所述通知消息下发给与所述从服务器自身建立有连接关系的终端,所述从服务器为集群中除所述主服务器之外的其他服务器。
2.根据权利要求1所述的方法,其特征在于,在所述接收推送平台发送的通知消息之前,所述方法进一步包括:
在一个投票周期内为自身进行投票;并且,
向集群中的其他服务器发送投票请求,以获得所述其他服务器的投票;
当在所述投票周期内最先获得最多票数时,确定成为所述主服务器。
3.根据权利要求2所述的方法,其特征在于,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
在确定成为所述主服务器之后,所述方法进一步包括:
与所述从服务器交换周期数;
若所述从服务器的周期数小于所述主服务器的周期数,则使所述从服务器根据所述主服务器的周期数进行周期数更新;
若所述从服务器的周期数大于所述主服务器的周期数,则放弃主服务器地位。
4.根据权利要求2所述的方法,其特征在于,在确定成为所述主服务器之后,所述方法进一步包括:
定期向所述从服务器发送心跳包,以便向所述从服务器通知自身的主服务器地位。
5.根据权利要求1所述的方法,其特征在于,所述将所述通知消息写入到log日志中,包括:
在所述log日志中生成log操作记录;
将所述通知消息作为变量写入到所述log操作记录中。
6.根据权利要求1所述的方法,其特征在于,在所述将所述log日志分发给集群中的从服务器之后,所述方法进一步包括:
统计各个从服务器的更新状态;
当成功更新log日志的从服务器数量超过预设数量时,指示成功更新log日志的从服务器向与所述成功更新log日志的从服务器自身连接的终端下发所述通知消息。
7.根据权利要求6所述的方法,其特征在于,所述预设数量为集群服务器总数的二分之一。
8.根据权利要求6或7所述的方法,其特征在于,在所述统计各个从服务器的更新状态之后,所述方法进一步包括:
向更新失败的从服务器重复分发所述log日志。
9.一种消息推送的方法,所述方法应用于从服务器侧,其特征在于,所述方法包括:
从服务器接收主服务器分发的log日志,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器,所述log日志中记录有推送平台向所述主服务器发送的通知消息;
根据所述log日志更新自身的log日志;
将所述log日志中的所述通知消息下发给与所述从服务器自身建立有连接关系的终端。
10.根据权利要求9所述的方法,其特征在于,在所述接收主服务器分发的log日志之前,所述方法进一步包括:
在一个投票周期内接收其他服务器发送的投票请求;
为最先接收到的投票请求对应的服务器投票。
11.根据权利要求10所述的方法,其特征在于,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
在投票选举出所述主服务器之后,所述方法进一步包括:
与包括所述主服务器在内的其他服务器交换周期数;
若所述主服务器的周期数大于自身的周期数,则根据所述主服务器的周期数进行周期数更新;
若所述主服务器的周期数小于自身的周期数,则否定所述主服务器的主服务器地位。
12.根据权利要求10所述的方法,其特征在于,在投票选举出所述主服务器之后,所述方法进一步包括:
定期接收所述主服务器发送的心跳包,以便确定所述主服务器的主服务器地位。
13.根据权利要求12所述的方法,其特征在于,若在预设时长内未接收到所述主服务器发送的心跳包,则否定所述主服务器的主服务器地位。
14.根据权利要求9所述的方法,其特征在于,所述方法进一步包括:
向所述主服务器上报所述log日志的更新状态;
所述将所述log日志中的所述通知消息下发给与所述从服务器自身建立有连接关系的终端,包括:
若更新成功,则根据所述主服务器的指示,将所述log日志中的所述通知消息下发给建立有连接关系的终端。
15.根据权利要求14所述的方法,其特征在于,所述方法进一步包括:
若更新失败,则接收所述主服务器重复分发的所述log日志;
根据重复接收的所述log日志再次更新自身的log日志。
16.一种消息推送的装置,所述装置位于主服务器侧,其特征在于,所述装置包括:
接收单元,用于接收推送平台发送的通知消息,所述主服务器为分布式服务器集群中通过投票选举出的服务器;
写入单元,用于将所述通知消息写入到log日志中;
发送单元,用于将所述log日志分发给集群中的从服务器,以使得所述从服务器更新自身的log日志并将所述通知消息下发给与所述从服务器自身建立有连接关系的终端,所述从服务器为集群中除所述主服务器之外的其他服务器。
17.根据权利要求16所述的装置,其特征在于,所述装置进一步包括处理单元,用于:
在所述接收推送平台发送的通知消息之前,在一个投票周期内为自身进行投票;并且,
向集群中的其他服务器发送投票请求,以获得所述其他服务器的投票;
当在所述投票周期内最先获得最多票数时,确定成为所述主服务器。
18.根据权利要求17所述的装置,其特征在于,所述装置进一步包括:
交换单元,用于在确定成为所述主服务器之后,与所述从服务器交换周期数,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
更新单元,用于当所述从服务器的周期数小于所述主服务器的周期数时,使所述从服务器根据所述主服务器的周期数进行周期数更新;
所述处理单元,用于当所述从服务器的周期数大于所述主服务器的周期数时,放弃主服务器地位。
19.根据权利要求17所述的装置,其特征在于,所述发送单元,用于在确定成为所述主服务器之后,定期向所述从服务器发送心跳包,以便向所述从服务器通知自身的主服务器地位。
20.根据权利要求16所述的装置,其特征在于,所述写入单元,包括:
生成模块,用于在所述log日志中生成log操作记录;
写入模块,用于将所述通知消息作为变量写入到所述log操作记录中。
21.根据权利要求16所述的装置,其特征在于,所述装置进一步包括统计单元,用于在将所述log日志分发给集群中的从服务器之后,统计各个从服务器的更新状态;
指示单元,用于当成功更新log日志的从服务器数量超过预设数量时,指示成功更新log日志的从服务器向与所述成功更新log日志的从服务器自身连接的终端下发所述通知消息。
22.根据权利要求21所述的装置,其特征在于,所述指示单元使用的所述预设数量为集群服务器总数的二分之一。
23.根据权利要求21或22所述的装置,其特征在于,所述发送单元,用于在统计各个从服务器的更新状态之后,向更新失败的从服务器重复分发所述log日志。
24.一种消息推送的装置,所述装置位于从服务器侧,其特征在于,所述装置包括:
接收单元,用于接收主服务器分发的log日志,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器,所述log日志中记录有推送平台向所述主服务器发送的通知消息;
更新单元,用于根据所述log日志更新自身的log日志;
发送单元,用于将所述log日志中的所述通知消息下发给与所述从服务器自身建立有连接关系的终端。
25.根据权利要求24所述的装置,其特征在于,所述装置进一步包括:处理单元,用于:
在接收主服务器分发的log日志之前,在一个投票周期内接收其他服务器发送的投票请求;
为最先接收到的投票请求对应的服务器投票。
26.根据权利要求25所述的装置,其特征在于,所述装置进一步包括:
交换单元,用于在投票选举出所述主服务器之后,与包括所述主服务器在内的其他服务器交换周期数,每个投票周期对应一个周期数,所述周期数唯一并且随时间推移单调递增,每个服务器单独维护自身的周期数;
所述更新单元,用于当所述主服务器的周期数大于自身的周期数时,根据所述主服务器的周期数进行周期数更新;
所述处理单元,用于当所述主服务器的周期数小于自身的周期数时,否定所述主服务器的主服务器地位。
27.根据权利要求25所述的装置,其特征在于,所述接收单元,用于在投票选举出所述主服务器之后,定期接收所述主服务器发送的心跳包,以便所述处理单元确定所述主服务器的主服务器地位。
28.根据权利要求27所述的装置,其特征在于,所述处理单元,用于当在预设时长内未接收到所述主服务器发送的心跳包时,否定所述主服务器的主服务器地位。
29.根据权利要求24所述的装置,其特征在于,所述发送单元,用于:
向所述主服务器上报所述log日志的更新状态;
当更新成功时,根据所述主服务器的指示,将所述log日志中的所述通知消息下发给与所述从服务器自身建立有连接关系的终端。
30.根据权利要求29所述的装置,其特征在于,所述接收单元,用于当更新失败时,接收所述主服务器重复分发的所述log日志;
所述更新单元,用于根据重复接收的所述log日志再次更新自身的log日志。
31.一种消息推送的系统,其特征在于,所述系统包括:推送平台、主服务器、从服务器以及终端;其中,所述主服务器为分布式服务器集群中通过投票选举出的服务器,所述从服务器为集群中除所述主服务器之外的其他服务器;
所述推送平台,用于向所述主服务器发送通知消息;
所述主服务器,用于接收所述推送平台发送的所述通知消息,将所述通知消息写入到log日志中,并将所述log日志分发给所述从服务器;
所述从服务器,用于接收所述主服务器分发的所述log日志,根据所述log日志更新自身的log日志,并将所述log日志中的所述通知消息下发给与所述从服务器自身建立有连接关系的终端;
所述终端,用于接收建立有连接关系的从服务器下发的所述通知消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510992832.0A CN105554142B (zh) | 2015-12-24 | 2015-12-24 | 消息推送的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510992832.0A CN105554142B (zh) | 2015-12-24 | 2015-12-24 | 消息推送的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105554142A CN105554142A (zh) | 2016-05-04 |
CN105554142B true CN105554142B (zh) | 2019-02-01 |
Family
ID=55833074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510992832.0A Active CN105554142B (zh) | 2015-12-24 | 2015-12-24 | 消息推送的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105554142B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314479B (zh) * | 2016-06-20 | 2022-08-23 | 北京奥星贝斯科技有限公司 | 一种数据处理方法和设备 |
CN106789197A (zh) * | 2016-12-07 | 2017-05-31 | 高新兴科技集团股份有限公司 | 一种集群选举方法及系统 |
CN107682210A (zh) * | 2017-11-10 | 2018-02-09 | 北京明朝万达科技股份有限公司 | 一种基于混合传输模式的数据升级方法及系统 |
CN107968842B (zh) * | 2017-12-26 | 2020-12-08 | 百度在线网络技术(北京)有限公司 | 基于分布式系统的新闻推送方法、装置及设备 |
CN110365794B (zh) * | 2019-07-30 | 2021-09-14 | 四川虹魔方网络科技有限公司 | 一种基于互联网电视的消息推送方法及系统 |
CN112865992B (zh) * | 2019-11-27 | 2022-10-14 | 上海哔哩哔哩科技有限公司 | 分布式主从系统中主节点的切换方法、装置和计算机设备 |
CN112615944B (zh) * | 2020-12-11 | 2023-07-11 | 互联网域名系统北京市工程研究中心有限公司 | 分布式dns主辅同步的方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516575A (zh) * | 2012-06-15 | 2014-01-15 | 上海蓝卓教育信息科技有限公司 | 一种通用智能消息发送系统 |
CN103731341A (zh) * | 2013-12-30 | 2014-04-16 | 广州华多网络科技有限公司 | 一种对即时通讯业务进行处理的方法及系统 |
CN103731549A (zh) * | 2013-12-16 | 2014-04-16 | 南京国通智能科技有限公司 | 一种智能手机终端消息的管理方法 |
CN103856392A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 消息推送方法及其外发服务器和外发服务器系统 |
CN104023321A (zh) * | 2014-06-13 | 2014-09-03 | 中国民航信息网络股份有限公司 | 基于移动网络的安全可靠的消息传输系统 |
CN104243285A (zh) * | 2014-09-19 | 2014-12-24 | 广州华多网络科技有限公司 | 一种消息推送的方法以及服务器 |
CN104917842A (zh) * | 2015-06-16 | 2015-09-16 | 上海斐讯数据通信技术有限公司 | 一种批量任务处理系统及方法 |
CN104980289A (zh) * | 2014-04-14 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 消息推送方法、装置和系统 |
-
2015
- 2015-12-24 CN CN201510992832.0A patent/CN105554142B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103516575A (zh) * | 2012-06-15 | 2014-01-15 | 上海蓝卓教育信息科技有限公司 | 一种通用智能消息发送系统 |
CN103856392A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 消息推送方法及其外发服务器和外发服务器系统 |
CN103731549A (zh) * | 2013-12-16 | 2014-04-16 | 南京国通智能科技有限公司 | 一种智能手机终端消息的管理方法 |
CN103731341A (zh) * | 2013-12-30 | 2014-04-16 | 广州华多网络科技有限公司 | 一种对即时通讯业务进行处理的方法及系统 |
CN104980289A (zh) * | 2014-04-14 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 消息推送方法、装置和系统 |
CN104023321A (zh) * | 2014-06-13 | 2014-09-03 | 中国民航信息网络股份有限公司 | 基于移动网络的安全可靠的消息传输系统 |
CN104243285A (zh) * | 2014-09-19 | 2014-12-24 | 广州华多网络科技有限公司 | 一种消息推送的方法以及服务器 |
CN104917842A (zh) * | 2015-06-16 | 2015-09-16 | 上海斐讯数据通信技术有限公司 | 一种批量任务处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105554142A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105554142B (zh) | 消息推送的方法、装置及系统 | |
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
CN106155780B (zh) | 一种基于时间的节点选举方法及装置 | |
CN112118315A (zh) | 数据处理系统、方法、装置、电子设备和存储介质 | |
US7870425B2 (en) | De-centralized nodal failover handling | |
CN105262835B (zh) | 一种多机房中的数据存储方法和装置 | |
US11445013B2 (en) | Method for changing member in distributed system and distributed system | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
CN105162879B (zh) | 实现多机房数据一致性的方法、装置及系统 | |
CN109040184B (zh) | 一种主节点的选举方法及服务器 | |
CN103024065A (zh) | 用于云存储系统的系统配置管理方法 | |
CN104854845B (zh) | 使用高效的原子操作的方法和装置 | |
CN110535811B (zh) | 远端内存管理方法及系统、服务端、客户端、存储介质 | |
CN109412890B (zh) | 基于dds的联合试验平台中间件节点状态检测方法 | |
CN115023919B (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
CN104468594A (zh) | 一种数据请求的方法、装置及系统 | |
WO2014173366A2 (zh) | 一种实现电信能力群发的方法、装置及系统 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
US20220272222A1 (en) | Image forming apparatus, method, and system for firmware upgrade | |
CN113542150B (zh) | 一种数据传输方法、装置及中心端网桥 | |
EP2071764B1 (en) | A method, device and communication system thereof of electing local master | |
US9967163B2 (en) | Message system for avoiding processing-performance decline | |
CN106790354A (zh) | 一种防数据拥堵的通信方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Co-patentee after: QAX Technology Group Inc. Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Co-patentee before: BEIJING QIANXIN TECHNOLOGY Co.,Ltd. Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. |