基于私有云的统一推送平台、方法以及终端
技术领域
本发明涉及医疗技术领域,特别是涉及一种基于私有云的统一推送平台、方法以及终端。
背景技术
随着医疗信息化的发展,医院对信息系统的高可用和信息及时性的要求越来越高,公司的产品线都需要及时将一些报警信息和服务端处理的结果实时地推送给用户。传统的做法是每个产品都要将手机短信、企业微信和邮件的功能集成到产品中,以备在需要时发送信息给用户,这种方式时常会出现推送消息丢失的情况,可靠性得不到保证。
在产品研发的过程中,应用了微服务的架构设计,由于前后端分离而且会同时部署多份,但很难做到将后端产生的结果实时推送给指定的前端用户。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于私有云的统一推送平台、方法以及终端,用于解决现有技术每个产品都要将手机短信、企业微信和邮件的功能集成到产品中,以备在需要时发送信息给用户,这种方式时常会出现推送消息丢失的情况,可靠性得不到保证以及应用了微服务的架构设计,由于前后端分离而且会同时部署多份,但很难做到将后端产生的结果实时推送给指定的前端用户的问题。
为实现上述目的及其他相关目的,本发明提供一种基于私有云的统一推送平台,包括:推送服务模块,用于接收来自产品服务端的推送消息并转发;高可用消息处理模块,连接所述推送服务模块,用于根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择路由路径,对所述推送信息进行路由,以获得高可用的路由推送信息;调度模块,连接所述高可用消息处理模块,用于根据所述路由推送消息对应的发送模式得到接收者信息,并按所述接收者信息投递所述路由推送消息;接入点模块,连接所述调度模块,用于将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。
于本发明的一实施例中,所述高可用消息处理模块包括:一或多个路由单元,用于按照其对应的路由路径来对所述推送信息进行路由;其中,每个路由单元包括:一或多个对应不同类型的用户终端的消息队列子单元。
于本发明的一实施例中,所述调度模块,包括:一或多个对应不同发送模式的调度器,用于根据该发送模式下的所述路由推送消息获取接入点信息,并将所述路由推送消息投递到所述接入点信息对应的接入点。
于本发明的一实施例中,所述推送服务模块包括:用于维持所述推送信息性能稳定的连接池单元、超时检测单元、自动重连单元以及单链接多频段单元中的一种或多种。
于本发明的一实施例中,所述推送消息的发送模式包括:广播、群组、私信以及附件模式中的一种或多种。
于本发明的一实施例中,所述用户终端的类型包括:Android、IOS、PC以及Web类型终端的一种或多种。
于本发明的一实施例中,所述基于私有云的统一推送平台还包括:储存模块和/或过滤模块;其中,所述储存模块,用于储存所述基于私有云的统一推送平台上的所有数据;所述过滤模块,用于根据过滤条件筛选所述用户终端。
于本发明的一实施例中,所述基于私有云的统一推送平台还包括:权限认证模块、统计服务模块、监控报警服务模块以及监控管理服务模块中的一种或多种;其中,权限认证模块,用于对所述来自产品服务端的推送消息以及所述用户端接收的所述路由推送消息进行认证;统计服务模块,用于对所述推送消息对应的推送情况数据进行统计,以判断所述平台的运行状况;监控报警服务模块,用于对所述平台的运行情况进行监控和报警;管理服务模块,连接所述推送服务模块,用于对所述产品服务端对应的产品进行配置管理。
为实现上述目的及其他相关目的,本发明提供一种基于私有云的统一推送方法,所述方法包括:接收来自产品服务端的推送消息;根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择路由路径,对所述推送信息进行路由,以获得高可用的路由推送信息;根据所述路由推送消息对应的发送模式得到接收者信息,并按所述接收者信息投递所述路由推送消息;将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。
为实现上述目的及其他相关目的,本发明提供一种基于私有云的统一推送终端,包括:存储器,用于存储计算机程序;处理器,用于执行所述的基于私有云的统一推送方法。
如上所述,本发明的一种基于私有云的统一推送平台、方法以及终端,具有以下有益效果:将各产品要推送的消息发送到统一推送平台,在高并发和大数据量的消息发送中保证消息可靠推送到用户端,极大地提高产品研发周期中的生产效率。
附图说明
图1显示为本发明一实施例中的基于私有云的统一推送平台的结构示意图。
图2显示为本发明一实施例中的基于私有云的统一推送平台的结构示意图。
图3显示为本发明一实施例中的基于私有云的统一推送方法的流程示意图。
图4显示为本发明一实施例中的基于私有云的统一推送终端的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,在下述描述中,参考附图,附图描述了本发明的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本发明的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本发明的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本发明。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、““下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
其中提到的第一、第二及第三等术语是为了说明多样的部分、成份、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成份、区域、层或段区别于其它部分、成份、区域、层或段。因此,以下叙述的第一部分、成份、区域、层或段在不超出本发明范围的范围内,可以言及到第二部分、成份、区域、层或段。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
本发明实施例中提供一种基于私有云的统一推送平台,解决了现有技术每个产品都要将手机短信、企业微信和邮件的功能集成到产品中,以备在需要时发送信息给用户,这种方式时常会出现推送消息丢失的情况,可靠性得不到保证以及应用了微服务的架构设计,由于前后端分离而且会同时部署多份,但很难做到将后端产生的结果实时推送给指定的前端用户的问题。将各产品要推送的消息发送到统一推送平台,在高并发和大数据量的消息发送中保证消息可靠推送到用户端,极大地提高产品研发周期中的生产效率。
下面以附图为参考,针对本发明的实施例进行详细说明,以便本发明所述技术领域的技术人员能够容易地实施。本发明可以以多种不同形态体现,并不限于此处说明的实施例。
如图1所示,展示本发明实施例中的基于私有云的统一推送平台的结构示意图。
所述平台包括:
推送服务模块11,用于接收来自产品服务端的推送消息并转发;
高可用消息处理模块12,连接所述推送服务模块11,用于根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择路由路径,对所述推送信息进行路由,以获得高可用的路由推送信息;
调度模块13,连接所述高可用消息处理模块12,用于根据所述路由推送消息对应的发送模式得到接收者信息,并按所述接收者信息投递所述路由推送消息;
接入点模块14,连接所述调度模块13,用于将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。
可选的,所述推送服务模块11,用于接收来自SDK产品服务端的推送消息并转发。其中所述SDK产品可以为各类SDK产品,在本申请中不作限定。
可选的,所述推送服务模块11包括:用于维持所述推送信息性能稳定的连接池单元、超时检测单元、自动重连单元以及单链接多频段单元中的一种或多种。具体的,所述推送服务模块在连接建立过程中,采用连接池、超时检测、自动重连、单连接多channel等多种机制确保消息发送稳定性和性能。
可选的,所述推送服务模块11将接收到的推送信息转发给所述高可用消息处理模块12 中的消息队列中。
可选的,所述高可用消息处理模块12包括:一或多个路由单元,用于按照其对应的路由路径来对所述推送信息进行路由;其中,每个路由单元包括:一或多个对应不同类型的用户终端的消息队列子单元。
具体的,所述高可用消息处理模块12根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择所述路由单元的路由路径中的一个对应不同类型的用户终端的消息队列子单元,来对所述推送信息进行路由,以获得高可用的路由推送信息。
举例来说,所述高可用消息处理模块12接收到的所述推送消息的发送模式为广播信息,以及需接收所述推送信息的用户终端为Android终端,根据以上信息来选择所述广播路由单元的路由路径中的Android消息队列子单元,来对所述推送信息进行路由,以获得高可用的路由推送信息。
可选的,所述路由单元的类型包括:私信路由、广播路由、群组路由以及附件路由中的一种或多种。
可选的,所述消息队列子单元的类型包括:Android、IOS、PC以及Web队列的一种或多种。其中,每种所述消息队列子单元的类型对应一种用户终端的类型。
可选的,所述用户终端的类型包括:Android、IOS、PC以及Web类型终端的一种或多种。
可选的,所述高可用消息处理模块12基于RabbitMQ实现高可用消息队列服务,负责根据消息接收终端和消息发送模式对消息进行路由,基于负载均衡支持水平扩展,基于持久化、 confirm/ack、HA、流控等机制实现高可用,基于二级路由策略隔离不同类型消息避免阻塞。
可选的,所述调度模块13,包括:一或多个对应不同发送模式的调度器,用于根据该发送模式下的所述路由推送消息获取接入点信息,并将所述路由推送消息投递到所述接入点信息对应的接入点。
可选的,所述调度器类型包括:对应于私信发送模式的私信调度器、对应于广播发送模式的广播适配器、对应于群组发送模式的群组适配器以及对应于附件发送模式的附件适配器中的一种或多种。
可选的,所述接入点模块14包括:一或多个对应不同需接收所述推送信息的用户终端的类型的接入点;所述接入点模块14用于将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。所述调度模块13将所述路由推送消息投递到所述接入点信息对应的接入点模块;举例来说,若所述路由推送消息投递的需接收所述推送信息的用户终端的类型为Android终端,则接入点模块的类型为Android的接入点。
可选的,所述接入点的类型包括:Android、IOS、PC以及Web类型接入点的一种或多种。
可选的,所述接入点模块14基于负载均衡支持水平扩展,采用Docker多结点部署、客户端重连、进程假死检测、重连退避等机制实现服务隔离和高可用。
可选的,所述用户终端提供API简化其接入流程和复杂度,负责接收接入点下推的路由推送信息,并通知对应的APP进行处理。
可选的,所述用户终端基于长连接、心跳退避、自动重连、ack、链路复用等机制确保消息的可靠接收,并减少了流量和电量等消耗。
可选的,所述用户终端包括:台式计算机、手机、笔记本、平板电脑、POS机以及车载电脑等终端,在本申请中不作限定。
可选的,所述基于私有云的统一推送平台还包括:储存模块和/或过滤模块;其中,所述储存模块,用于储存所述基于私有云的统一推送平台上的所有数据;所述过滤模块,用于根据过滤条件筛选所述用户终端。
可选的,所述储存模块,基于Redis为用户终端连接、终端上报数据、消息内容、离线消息等提供存储访问服务,采用基于Sharding的Master-Slave方案实现高可用。
可选的,所述过滤模块,用于负责存储用户终端上报的数据,并根据过滤条件筛选目标用户列表,优选的所述过滤条件支持逻辑组合和黑名单功能。
可选的,所述基于私有云的统一推送平台还包括:权限认证模块、统计服务模块、监控报警服务模块以及监控管理服务模块中的一种或多种;
其中,权限认证模块,用于对所述来自产品服务端的推送消息以及所述用户端接收的所述路由推送消息进行认证;
统计服务模块,用于对所述推送消息对应的推送情况数据进行统计,以判断所述平台的运行状况;
监控报警服务模块,用于对所述平台的运行情况进行监控和报警;
管理服务模块,连接所述推送服务模块,用于对所述产品服务端对应的产品进行配置管理。
可选的,所述权限认证模块用于基于OAuth签名认证机制对产品服务端发送消息和用户终端接收消息进行安全认证,避免消息被篡改及冒名发送/接收等。
可选的,所述统计服务模块用于对广播、附件等推送模式的推送情况数据,例如实际接收用户数目、发送时间等进行统计,以评估系统运行状况,同时提供给产品方进行参考。
可选的,所述监控报警服务模块用于负责从服务器资源、应用层、服务质量等多个层面对平台的运行情况进行运行时监控和异常报警,实现对系统故障的及时诊断和恢复,以确保服务的7*24小时正常运行。
可选的,所述管理服务模块用于对接入推送服务的产品进行配置管理,如分配密钥对,设置产品接入终端类型,管理产品间消息互通权限,设置产品群组信息获取接口等。
为了更高的说明所述基于私有云的统一推送平台,提供以下实施例:
实施例:一种基于私有云的统一推送平台,如图2所示为所述基于私有云的统一推送平台的结构示意图。
所述平台包括:
推送服务模块,负责接收产品服务端发送的消息,并转发给高可用消息队列;
高可用消息处理中心,连接所述推送服务模块,用于根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择所述路由单元的路由路径中的一个对应不同类型的用户终端的消息队列子单元,来对所述推送信息进行路由,以获得高可用的路由推送信息;其中,所述路由单元的类型包括:私信路由、广播路由、群组路由以及附件路由中的一种或多种。所述消息队列子单元的类型包括:Android、IOS、PC以及Web队列的一种或多种。其中,每种所述消息队列子单元的类型对应一种用户终端的类型。
调度模块,连接所述高可用消息处理中心,用于负责从消息队列中获取所述路由推送信息进行解析,根据消息类型获取接收者信息,并投递给其所在的接入点;其中,所述调度器类型包括:对应于私信发送模式的私信调度器、对应于广播发送模式的广播适配器、对应于群组发送模式的群组适配器以及对应于附件发送模式的附件适配器中的一种或多种。
消息存储,用于基于Redis为终端连接、终端上报数据、消息内容、离线消息等提供存储访问服务。
接入点,连接所述调度模块,包括:一或多个对应不同发送模式的调度器,用于根据该发送模式下的所述路由推送消息获取接入点信息,并将所述路由推送消息投递到所述接入点信息对应的接入点。所述调度器类型包括:对应于私信发送模式的私信调度器、对应于广播发送模式的广播适配器、对应于群组发送模式的群组适配器以及对应于附件发送模式的附件适配器中的一种或多种。
过滤服务,用于负责存储用户终端上报的数据,并根据过滤条件筛选目标用户列表,优选的所述过滤条件支持逻辑组合和黑名单功能。
权限认证服务,用于基于OAuth签名认证机制对产品服务端发送消息和用户终端接收消息进行安全认证,避免消息被篡改及冒名发送/接收等。
统计服务,用于对所述推送消息对应的推送情况数据进行统计,以判断所述平台的运行状况。
监控报警服务,用于对所述平台的运行情况进行监控和报警。
管理服务,连接所述推送服务模块,用于对所述产品服务端对应的产品进行配置管理。
该消息推送平台为公司内部和第三方应用提供统一消息推送服务,支持广播、群组、私信、附件等多种消息推送方式,覆盖移动端、PC、Web等多种终端,并根据应用特定需求制定各种解决方案。平台支持水平扩展,支持高并发下的实时消息推送,通过动态负载均衡、隔离部署、Docker虚拟化和监控报警等多种机制确保系统的高可用,通过高可用消息队列、自动重连和ACK等机制实现消息可靠性,并提供SDK方便产品和应用接入。
与上述实施例原理相似的是,本发明提供一种基于私有云的统一推送方法。
以下结合附图提供具体实施例:
如图3展示本发明实施例中的一种基于私有云的统一推送方法的流程示意图。
所述方法包括:
步骤S31:接收来自产品服务端的推送消息。
可选的,接收来自SDK产品服务端的推送消息并转发。其中所述SDK产品可以为各类 SDK产品,在本申请中不作限定。
可选的,维持所述推送信息性能稳定的连接池单元、超时检测单元、自动重连单元以及单链接多频段单元中的一种或多种。
步骤S32:根据所述推送消息的发送模式以及需接收所述推送信息的用户终端的类型来选择路由路径,对所述推送信息进行路由,以获得高可用的路由推送信息。
根据一或多个路由单元的对应的路由路径来对所述推送信息进行路由;其中,每个路由单元包括:一或多个对应不同类型的用户终端的消息队列子单元。
可选的,所述路由单元的类型包括:私信路由、广播路由、群组路由以及附件路由中的一种或多种。
可选的,所述消息队列子单元的类型包括:Android、IOS、PC以及Web队列的一种或多种。其中,每种所述消息队列子单元的类型对应一种用户终端的类型。
可选的,所述用户终端的类型包括:Android、IOS、PC以及Web类型终端的一种或多种。
可选的,基于RabbitMQ实现高可用消息队列服务,负责根据消息接收终端和消息发送模式对消息进行路由,基于负载均衡支持水平扩展,基于持久化、confirm/ack、HA、流控等机制实现高可用,基于二级路由策略隔离不同类型消息避免阻塞。
步骤S33:根据所述路由推送消息对应的发送模式得到接收者信息,并按所述接收者信息投递所述路由推送消息。
可选的,通过一或多个对应不同发送模式的调度器根据该发送模式下的所述路由推送消息获取接入点信息,并将所述路由推送消息投递到所述接入点信息对应的接入点。
可选的,所述调度器类型包括:对应于私信发送模式的私信调度器、对应于广播发送模式的广播适配器、对应于群组发送模式的群组适配器以及对应于附件发送模式的附件适配器中的一种或多种。
步骤S34:将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。
可选的,通过一或多个对应不同需接收所述推送信息的用户终端的类型的接入点将接收到的所述路由推送消息投递给所述用户终端,以令所述用户终端处理所述经过路由的推送消息。
可选的,所述接入点的类型包括:Android、IOS、PC以及Web类型接入点的一种或多种。
可选的,基于负载均衡支持水平扩展,采用Docker多结点部署、客户端重连、进程假死检测、重连退避等机制实现服务隔离和高可用。
可选的,所述用户终端提供API简化其接入流程和复杂度,负责接收接入点下推的路由推送信息,并通知对应的APP进行处理。
可选的,所述用户终端基于长连接、心跳退避、自动重连、ack、链路复用等机制确保消息的可靠接收,并减少了流量和电量等消耗。
可选的,所述用户终端包括:台式计算机、手机、笔记本、平板电脑、POS机以及车载电脑等终端,在本申请中不作限定。
可选的,所述方法还包括:储存所述基于私有云的统一推送平台上的所有数据;和/或根据过滤条件筛选所述用户终端。
可选的,所述方法还包括:对所述来自产品服务端的推送消息以及所述用户端接收的所述路由推送消息进行认证、对所述推送消息对应的推送情况数据进行统计,以判断所述平台的运行状况、对所述平台的运行情况进行监控和报警以及对所述产品服务端对应的产品进行配置管理步骤中的一个或多个。
如图4所示,展示本发明实施例中的基于私有云的统一推送终端40的结构示意图。
所述基于私有云的统一推送终端40包括:存储器41及处理器42所述存储器41用于存储计算机程序;所述处理器42运行计算机程序实现如图3所述的基于私有云的统一推送方法。
可选的,所述存储器41的数量均可以是一或多个,所述处理器42的数量均可以是一或多个,而图4中均以一个为例。
可选的,所述基于私有云的统一推送终端40中的处理器42会按照如图3所述的步骤,将一个或多个以应用程序的进程对应的指令加载到存储器41中,并由处理器42来运行存储在第一存储器41中的应用程序,从而实现如图3所述基于私有云的统一推送方法中的各种功能。
可选的,所述存储器41,可能包括但不限于高速随机存取存储器、非易失性存储器。例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备;所述处理器42,可能包括但不限于中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路 (Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选的,所述处理器42可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明还提供计算机可读存储介质,存储有计算机程序,所述计算机程序运行时实现如图3所示的基于私有云的统一推送方法。所述计算机可读存储介质可包括,但不限于,软盘、光盘、CD-ROM(只读光盘存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、 EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。所述计算机可读存储介质可以是未接入计算机设备的产品,也可以是已接入计算机设备使用的部件。
综上所述,本发明基于私有云的统一推送方法、系统以及终端,用于解决现有技术每个产品都要将手机短信、企业微信和邮件的功能集成到产品中,以备在需要时发送信息给用户,这种方式时常会出现推送消息丢失的情况,可靠性得不到保证以及应用了微服务的架构设计,由于前后端分离而且会同时部署多份,但很难做到将后端产生的结果实时推送给指定的前端用户的问题。将各产品要推送的消息发送到统一推送平台,在高并发和大数据量的消息发送中保证消息可靠推送到用户端,极大地提高产品研发周期中的生产效率。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。