一种基于连接池的服务器连接方法和装置制造方法

文档序号:7795989阅读:171来源:国知局
一种基于连接池的服务器连接方法和装置制造方法
【专利摘要】本发明提供了一种基于连接池的服务器连接方法和装置,其中连接方法包括:实时监控服务器集群中的各台服务器,获取在线服务器信息;接收业务系统发送的与服务器建立连接的请求;依据所述请求,选择一个选择服务器的策略;依据策略与在线服务器信息选择一台在线服务器;判断是否保存了所选择的服务器的未被占用的连接实例;若保存了,则直接选择连接实例;若未保存,则获取一个新的连接实例,建立与所选择的在线服务器的连接,添加连接对应的套接字句柄至新的连接实例并选择该连接实例;针对建立连接的请求将套接字句柄通过相应的接口返回给业务系统,建立业务系统与所选择的服务器的连接。通过本发明,能够合理的利用服务器资源,建立可靠的连接。
【专利说明】一种基于连接池的服务器连接方法和装置
【技术领域】
[0001]本发明涉及网络通信【技术领域】,特别是涉及一种基于连接池的服务器连接方法和装置。
【背景技术】
[0002]互联网行业数据流量在不断的激增,广告投放系统在收到大批量的用户页面请求后,需要对每个用户都执行不同的广告投放策略。对于如此大的请求流量,广告投放系统需要达到快速、可靠的在各模块间进行数据交互,就必须实现基于TCP (TransmissionControl Protocol,传输控制协议)的高并发、低延迟的网络通信。而这种网络通信可以通过在广告投放系统中的各个模块中集成连接池来实现,即通过连接池为数据交互快速的提供连接,实现高并发、低延迟的网络通信。
[0003]连接池基本的思想是在业务系统初始化的时候,将服务器连接作为对象存储在连接池中,当业务系统需要与服务器建立连接时,业务系统并不需要与服务器集群中的某一服务器建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,业务系统也并非撤销连接,而是将连接放回连接池中,以供下一个请求访问使用。
[0004]而现有的连接池在设计时,只是将指定的服务器信息配置到连接池中,并且仅考虑了连接资源的分配问题。也就说是,在业务系统的连接池中存储有与所配置的服务器的连接,当业务系统请求连接时,从连接池中随机取出一个服务器的连接,将此连接提供给业务系统。
[0005]可见,采用现有基于连接池的服务器连接方法在建立业务系统与服务器间的连接时,只是简单的进行连接资源的分配提供给业务系统连接,而当配置到连接池中的服务器出现问题时,依然会将出现问题的服务器的连接提供给业务系统,无法保证连接的可靠性。同时,现有的这种建立连接的方法也不能结合各个服务器的现状来分配连接,只是随机的从连接池中取出连接,选择提取的连接对应的服务器提供给业务系统,不能合理的利用服务器资源。

【发明内容】

[0006]本发明提供了一种基于连接池的服务器连接方法和装置,以解决现有的连接方法无法合理的利用服务器资源以及所建立的连接可靠性差的问题。
[0007]为了解决上述问题,本发明公开了一种基于连接池的服务器连接方法,包括:实时监控服务器集群中的各台服务器,获取在线服务器信息;接收业务系统发送的与服务器建立连接的请求;依据所述建立连接的请求,选择一个选择服务器的策略;依据所述策略与所述在线服务器信息选择一台在线服务器;判断是否保存了所选择的在线服务器的未被占用的连接实例;若保存了所述连接实例,则直接选择所述连接实例,其中,保存了的每个所述连接实例对应有套接字句柄;若未保存所述连接实例,则获取一个新的连接实例,通过所述新的连接实例建立与所选择的在线服务器的连接,添加所述连接对应的套接字句柄至所述新的连接实例;选择添加了所述套接字句柄的新的连接实例;针对所述建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给所述业务系统,依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接。
[0008]优选地,在所述实时监控服务器集群中的各台服务器,获取在线服务器信息步骤之后,还包括:按照设定规则检测各台在线服务器是否可用,删除不可用的在线服务器对应的服务器信息。
[0009]优选地,所述服务器信息包括:中央处理器负载、剩余内存;所述依据所述建立连接的请求,选择一个选择服务器的策略步骤包括:依据所述建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略;所述依据所述策略与所述在线服务器信息选择一台在线服务器的步骤包括:依据所述策略与所述在线服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
[0010]优选地,所述判断是否保存了所选择的在线服务器的未被占用的连接实例步骤包括:判断是否保存了所选择的在线服务器的连接实例;若保存了所述连接实例,则进一步判断所述连接实例是否已被与所述业务系统建立的其他连接占用;若所述连接实例未被占用,则判断结果为保存了所选择的在线服务器的未被占用的连接实例。
[0011]优选地,在所述实时监控服务器集群中的各台服务器,获取在线服务器信息步骤之前,还包括:接收所述业务系统输入的长连接或短连接的连接指令,依据所述连接指令建立相应类型的连接。
[0012]优选地,在所述依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接步骤之后,还包括:当断开与所选择的在线服务器的连接时,删除所述所选择的连接实例中的套接字句柄,获得一个新的连接实例。
[0013]为了解决上述问题,本发明还公开了一种基于连接池的服务器连接装置,包括:集群监控模块,用于实时监控服务器集群中的各台服务器,获取在线服务器信息;连接管理模块,用于接收业务系统发送的与服务器建立连接的请求;策略管理模块,用于依据所述建立连接的请求,选择一个选择服务器的策略;集群管理模块,用于依据所述策略与所述在线服务器信息选择一台在线服务器;所述集群管理模块,还用于判断是否保存了所选择的在线服务器的未被占用的连接实例;若保存了所述连接实例,则直接选择所述连接实例,其中,保存了的每个所述连接实例对应有套接字句柄;若未保存所述连接实例,则获取一个新的连接实例,通过所述新的连接实例建立与所选择的在线服务器的连接,添加所述连接对应的套接字句柄至所述新的连接实例;选择添加了所述套接字句柄的新的连接实例;所述连接管理模块,还用于针对所述建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给所述业务系统,依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接。
[0014]优选地,基于连接池的服务器连接装置还包括:健康检测模块,用于在所述集群监控模块获取在线服务器信息之后,按照设定规则检测各台在线的服务器是否可用,删除不可用的在线服务器对应的服务器信息。
[0015]优选地,所述服务器信息包括:中央处理器负载、剩余内存;所述策略管理模块依据所述建立连接的请求,选择一个选择服务器的策略时:依据所述建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略;所述集群管理模块依据所述策略与所述在线服务器信息选择一台在线服务器时:依据所述策略与所述在线的服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
[0016]优选地,所述集群管理模块,还用于在所述集群监控模块实时监控服务器中的各台服务器,获取在线服务器信息之前,接收所述业务系统输入的长连接或短连接的连接指令,依据所述连接指令建立相应类型的连接;所述集群管理模块,还用于在所述连接管理模块建立所述业务系统与所述在线服务器的连接之后,当断开与所述在线的服务器的连接时,删除所述所选择的连接实例中的套接字句柄获得一个新的连接实例,并将获得的所述新的连接实例归还给所述连接管理模块;所述连接管理模块,还用于接收所述集群管理模块归还的所述新的连接实例。
[0017]与现有技术相比,本发明具有以下优点:
[0018]本发明提供的基于连接池的服务器连接方案,实时监控服务器集群,并获取在线服务器的信息,然后从在线的服务器中选择一个服务器与业务系统建立连接,保证了提供给业务系统的服务器都是在线的,避免了现有的连接方案中将出现问题的服务器提供给业务系统的问题,进而保证了连接的可靠性。本发明提供的建立连接的方案,依据选择策略以及在线服务器信息选择与业务系统建立连接的服务器,能够根据各在线的服务器的现状合理分配连接任务,避免了现有的连接方式中存在的将多个连接任务分配给同一台服务器,而其他服务器空闲的问题。通过本发明提供的连接方案不仅能够保证连接的可靠性,还能够合理的利用各台服务器的资源。
【专利附图】

【附图说明】
[0019]图1是根据本发明实施例一的一种基于连接池的服务器连接方法的步骤流程图;
[0020]图2是根据本发明实施例二的一种基于连接池的服务器连接方法的步骤流程图;
[0021]图3是根据本发明实施例三的一种基于连接池的服务器连接装置的结构框图;
[0022]图4是一种安装有基于连接池的服务器连接装置的系统的结构框图。
【具体实施方式】
[0023]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0024]实施例一
[0025]参照图1,示出了根据本发明实施例一的一种基于连接池的服务器连接方法的步骤流程图。
[0026]本实施例的服务器连接方法的步骤包括:
[0027]步骤S102:连接池实时监控服务器集群中的各台服务器,获取在线服务器信息。
[0028]本实施例中的连接池是一个通过封装而成的静态库,是基于TCP协议的高并发低延迟的网络通信模块,可以应用于业务系统中的各模块,例如:广告投放系统中的各模块。连接池通过对服务器集群中的各台服务器进行监控,获得在线的服务器信息,从在线的服务器中选择一台服务器与业务系统建立连接。
[0029]其中,服务器信息可以包括:服务器标号、中央处理器负载、剩余内存等一种或多种信息。本领域技术人员可以根据实际需求设置需要获取的服务器信息所包含的具体内容,例如:可以通过设置只获取服务器的标号;或者只获取服务器的标号和剩余内存信息。在获取了在线服务器信息后连接池能够自动的对信息进行更新。
[0030]步骤S104:连接池接收业务系统发送的与服务器建立连接的请求。
[0031]业务系统需要与某一台服务器建立连接时,向连接池发送建立连接的请求,连接池依据业务系统发送的建立连接请求提供给业务系统一个相应的连接。
[0032]步骤S106:连接池依据业务系统发送的与服务器建立连接的请求,选择一个选择服务器的策略。
[0033]封装成静态库的连接池中包含多种选择服务器的策略,例如:随机选取一台服务的策略;选择剩余内存最大的服务器的策略;或是按照服务器标号大小选择服务器标号最大的服务器的策略等多种选择策略。当连接池应用到具体的业务系统中时,需要选择一种选择策略,并且该连接池在后序选择服务器时都要依据该策略对服务器进行选择。
[0034]步骤S108:连接池依据选择策略与在线服务器信息选择一台在线服务器。
[0035]连接池在应用到业务系统中时,已经对应了一种选择服务器的策略,连接池获取该选择策略,同时依据获得的在线的服务器信息选择一台与业务系统建立连接的服务器。例如:如果连接池在应用到业务系统中时,对应的选择服务器的策略为:按照服务器标号大小选择服务器标号最大的服务器的策略,那么连接池在选择服务器时,从在线服务器信息中查找服务器标号最大的服务器作为与业务系统建立连接的服务器。
[0036]步骤SllO:连接池判断是否保存了所选择的在线服务器的未被占用的连接实例;若保存了,则执行步骤S112 ;若未保存,则执行步骤S114。
[0037]连接池中保存了的每个连接实例对应有套接字句柄,一个套接字句柄对应一个与服务器间的连接。当连接池为业务系统提供了连接,业务系统使用完连接后会将该连接返回给连接池,连接池会继续保存该连接对应的套接字句柄,也就是说会继续保存套接字句柄对应的连接实例,会继续维护与服务器间的这个连接。
[0038]连接池在选择了 一个与业务系统建立连接的服务器之后,会进一步的判断是否保存了该服务器对应的连接实例,如果连接池中保存了一个或多个该服务器对应的连接实例,那么进一步的判断各个连接实例是否被业务系统的其他连接所占用,如果存在未被其他连接占用的连接实例,则判断连接池中存在未被占用的连接实例,如果连接池中保存的所有的与该服务器间的连接实例均被业务系统的其他连接所占用,则判断连接池中不存在未被占用的连接实例。
[0039]步骤S112:若保存了未被占用的连接实例,连接池则直接选择未被占用的连接实例。
[0040]步骤S114:若未保存未被占用的连接实例,连接池则获取一个新的连接实例,通过新的连接实例建立与所选择的在线服务器的连接,添加该连接对应的套接字句柄至新的连接实例;选择添加了套接字句柄的新的连接实例。
[0041]连接池会一直保存新建的这个连接实例,直至连接池与在线的服务器间的这个连接断开。
[0042]步骤S116:连接池针对业务系统发送的与服务器建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给业务系统,依据该套接字句柄建立业务系统与所选择的在线服务器的连接。[0043]通过本实施例提供的基于连接池的服务器连接方法,实时监控服务器集群,并获取在线服务器的信息,然后从在线的服务器中选择一个服务器与业务系统建立连接,保证了提供给业务系统的服务器都是在线的,避免了现有的连接方案中将出现问题的服务器提供给业务系统的问题,进而保证了连接的可靠性。本实施例提供的建立连接的方法,依据选择策略以及在线服务器信息选择与业务系统建立连接的服务器,能够根据各在线的服务器的现状合理分配连接任务,避免了现有的连接方式中存在的将多个连接任务分配给同一台服务器,而其他服务器空闲的问题。通过本实施例提供的连接方法不仅能够保证连接的可靠性,还能够合理的利用各台服务器的资源。
[0044]实施例二
[0045]参照图2,示出了根据本发明实施例二的一种基于连接池的服务器连接方法的步骤流程图。
[0046]本实施例的服务器连接方法的具体步骤包括:
[0047]步骤S202:连接池接收业务系统输入的长连接或短连接的连接指令,依据连接指令建立相应类型的连接。
[0048]连接池在封装成静态库时被封装了两种建立连接的类型,一种为长连接另一种为短连接。连接池在应用到业务系统中时,本领域技术人员可以根据业务场景选择连接池在后序建立连接的类型,即是长连接还是短连接。但是,需要说明的是,在选择完一种类型后连接池在后序建立连接时都只能遵循一种类型。
[0049]其中,长连接为:业务系统使用完连接池提供的一个连接后会返还该连接给连接池,连接池会继续保持与服务器间的连接;业务系统再次请求连接时,当连接池选择的服务器还是同一台服务器时,会直接将业务系统上次返还的连接提供给业务系统。短连接为:业务系统使用完连接池提供的一个连接后会返还该连接给连接池,连接池断开与服务器间的这个连接;业务系统再次请求连接时,当连接池选择的服务器还是同一台服务器时,连接池还要重新与服务器间建立连接,然后才能将连接提供给业务系统。
[0050]本实施例中以连接池建立长连接为例对后序的步骤进行说明。
[0051]步骤S204:连接池实时监控服务器集群中的各台服务器,获取在线服务器信息。
[0052]本实施例中连接池是通过对服务器集群中的各台服务器进行实时监控来获取在线服务器的。本领域技术人员应该明了,连接池中的服务器可以通过固定IP (InternetProtocol,互联网协议)地址配置到连接池中,还可以一部分通过固定IP地址配置到连接池中,另一部分通过对服务器集群进行监控获得。
[0053]本实施例中,连接池在实时监控服务器集群中的各台服务器,获取在线服务器信息的同时还会对各服务器信息进行更新,本实施例中获取的在线服务器信息包括:中央处理器负载、剩余内存。
[0054]步骤S206:连接池按照设定规则检测各台在线服务器是否可用,删除不可用的在线服务器对应的服务器信息。
[0055]连接池在获取了在线服务器信息后,会实时或者每隔设定时间间隔的对个台在线的服务器进行检测。检测时可以通过事先与各在线的服务器建立连接的方式来判断各台在线的服务器是否可用,如果能够成功建立连接则判定服务器可用,如果不能成功的建立连接,则判定服务器不可用,连接池会删除不能够成功建立连接的服务器对应的服务器信息。[0056]本领域技术人员可以根据实际需求设定对在线的服务器进行检测的时间间隔,可以设置成每隔10分钟进行一次检测,也可以设置成每隔5分钟进行一次检测,还可以设置成其他的时间间隔,在此不做具体限制。
[0057]步骤S208:连接池依据业务系统发送的与服务器建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略。
[0058]连接池中包含有多种选择服务器的策略,在应用到业务系统中时需要选择一种策略。本实施例中的连接池在应用到业务系统中时选择了选择中央处理器负载最小、剩余内存最大的处理器的策略。因此,在接收到业务系统发送的与服务器建立连接的请求后,连接池提供一个选择中央处理器负载最小、剩余内存最大的服务器的策略。
[0059]步骤S210:连接池依据选择的策略与在线服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
[0060]由于连接池在应用到业务系统中后所对应的选择服务器的策略为选择一台在线的且中央处理器负载最小、剩余内存最大的服务器,因此,在选择服务器时,就要依据该策略从在线服务器信息中选择一个台符合条件的服务器。
[0061]步骤S212:连接池判断是否保存了所选择的在线服务器的连接实例;若未保存,则直接执行步骤S218 ;若保存了,则执行步骤S214。
[0062]连接池在选择了服务器之后,会进一步的判断在连接池中是否保存了该服务器的连接实例,其中连接实例可以是一个也可以是多个。每台服务器可以同时建立多个连接,但是每一个连接都只对应一个连接实例。
[0063]步骤S214:当连接池中保存了所选择的在线服务器的连接实例时,连接池则进一步判断保存的所选择的在线服务器的连接实例是否已被与业务系统建立的其他连接占用;若未被占用,则执行步骤S216 ;若已被占用,则执行步骤S218。
[0064]连接池中保存了的每个连接实例对应有连接信息,其中,连接信息包括:套接字句柄、连接状态、连接的服务器标号。连接池中保存的连接实例也相当于连接池中保存了该连接实例对应的与服务器间的连接。连接池中可能保存有所选择的在线服务器的一个连接实例,也可能保存有多个连接实例,那么在进行判断时,要判断每个连接实例是否都被与业务系统间的其他连接所占用,如果保存的所选择的那台服务器对应的所有连接实例均被占用,则要执行步骤S218,如果保存的所选择的那台服务器对应的连接实例均存在未被占用的,则执行步骤S216。
[0065]步骤S216:当连接池中保存的所选择的在线服务器的连接实例未被占用时,则直接选择所述连接实例,执行步骤S220。
[0066]步骤S218:若未保存所选择的在线的服务器的连接实例,或保存的连接实例已被占用时,连接池则获取一个新的连接实例,通过新的连接实例建立与所选择的在线服务器的连接,添加该连接对应的套接字句柄至新的连接实例;选择添加了该套接字句柄的新的连接实例,执行步骤S220。
[0067]连接池通过新的连接实例建立与所选择的在线服务器的连接时,采用半异步方式,即先非阻塞连接,若失败,则变为阻塞式连接。其中,非阻塞的与选择的在线服务器间建立连接是指,连接池在与所选择的在线服务器建立连接时,无论连接是否建立完成,连接池还可以进行其他操作,例如:与其他服务器建立其他连接。阻塞式的与在线服务器间建立连接是指,连接池在与所选择的在线服务器建立连接时,只有在连接建立完成后连接池才可以进行其他操作。
[0068]连接池与所选择的在线服务器的连接建立完成后,连接池能够获取该连接对应的套接字句柄,并将该套接字句柄保存到对应的连接实例中,将该套接字句柄返回给业务系统建立业务系统与所选择的服务器间的连接。
[0069]步骤S220:连接池针对业务系统发送的与服务器建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给业务系统,依据该套接字句柄建立业务系统与所选择的在线服务器的连接。
[0070]在建立了业务系统与所选择的在线服务器的连接后,连接池还会提供相应的接收、发送接口供业务系统与所选择的在线服务器间进行消息交互。业务系统通过套接字句柄调用连接池中提供的接收、发送接口。连接池提供的供业务系统与所选择的在线服务器间进行消息交互接口采用半异步发送、接收机制,即先非阻塞发送或接收,若未完成,则改为阻塞式发送或接收。
[0071]业务系统在使用完该连接后会将连接返回给连接池,连接池会维护该连接并不会断开与所选择的在线服务器信息间的连接,以供业务系统再次发起请求时使用。但是,如果服务器出现问题或者是连接池不再需要与服务器间的这个连接时,连接池断开与所选择的在线服务器的连接,连接池会删除所选择的连接实例中的套接字句柄,获得一个新的连接实例。
[0072]通过本实施例提供的基于连接池的服务器连接方法,首先,可以实现对长短连接的控制,其次,可以实时监控服务器集群,获取在线服务器的信息并对信息进行更新,与此同时实时或者按照设定时间间隔对各在线的服务器进行检测,将不能满足连接标准的服务器所对应的服务器信息删除,保证了提供给业务系统的服务器都是在线的且可用的,避免了现有的连接方案中将出现问题的服务器提供给业务系统的问题,进而保证了连接的可靠性。本实施例提供的连接方法,依据选择策略以及在线服务器信息选择与业务系统建立连接的服务器,能够根据各在线的服务器的现状合理分配连接任务,避免了现有的连接方式中存在的将多个连接任务分配给同一台服务器,而其他服务器空闲的问题,通过本实施例提供的连接方法不仅能够保证连接的可靠性,还能够合理的利用各台服务器的资源。同时,在通过本实施例中提供的连接方法在与所选择的服务器建立连接时,采用半异步方式先阻塞连接,若失败则变为阻塞式连接,提高了连接效率;采用半异步发送、接收机制提高了发送、接收消息的效率。
[0073]实施例三
[0074]参照图3,示出了本发明实施例三中的一种基于连接池的服务器连接装置的结构框图。
[0075]本实施例的基于连接池的服务器连接装置包括:集群监控模块302,用于实时监控服务器集群中的各台服务器,获取在线服务器信息;连接管理模块304,用于接收业务系统发送的与服务器建立连接的请求;还用于为集群管理模块308提供新的连接实例;策略管理模块306,用于依据业务系统发送的与服务器建立连接的请求,选择一个选择服务器的策略;集群管理模块308,用于依据选择的策略与在线服务器信息选择一台在线服务器;集群管理模块308,还用于判断是否保存了所选择的在线服务器的未被占用的连接实例;若保存了所选择的在线服务器的未被占用的连接实例,则直接选择该连接实例,其中,保存了的每个连接实例对应有套接字句柄;若未保存所选择的在线服务器的未被占用的连接实例,则获取一个新的连接实例,通过新的连接实例建立与所选择的在线服务器的连接,添加该连接对应的套接字句柄至新的连接实例;选择添加了该套接字句柄的新的连接实例;连接管理模块304,还用于针对业务系统发送的与服务器建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给业务系统,依据该套接字句柄建立业务系统与所选择的在线服务器的连接。
[0076]优选地,基于连接池的服务器连接装置还包括:健康检测模块310,用于在集群监控模块302获取在线服务器信息之后,按照设定规则检测各台在线的服务器是否可用,删除不可用的在线服务器对应的服务器信息。
[0077]优选地,服务器信息包括:中央处理器负载、剩余内存;策略管理模块306依据业务系统发送的与服务器建立连接的请求,选择一个选择服务器的策略时:依据业务系统发送的与服务器建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略;集群管理模块308依据选择策略与所选择的在线服务器信息选择一台在线服务器时:依据选择的策略与所选择的在线的服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
[0078]优选地,集群管理模块308还用于在集群监控模块302实时监控服务器中的各台服务器,获取在线服务器信息之前,接收业务系统输入的长连接或短连接的连接指令,依据连接指令建立相应类型的连接;集群管理模块308,还用于在连接管理模块建立业务系统与所选择的在线服务器的连接之后,当断开与所选择的在线的服务器的连接时,删除所选择的连接实例中的套接字句柄获得一个新的连接实例,并将获得的新的连接实例归还给连接管理模块304 ;连接管理模块304,还用于接收集群管理模块归还的新的连接实例。
[0079]本实施例的基于连接池的服务器连接装置用于实现前述多个方法实施例中相应的服务器连接方法,并且具有相应的方法实施的有益效果,在此不再赘述。
[0080]下面结合具体的应用场景以一具体的实例对本申请中的基于连接池的服务器连接装置以及该装置应用到业务系统中后为业务系统建立与服务器间的连接的具体过程进行一下介绍。
[0081]如图4所示,基于连接池的服务器连接装置为一个连接池402其应用到了业务系统404中,连接池402分为5个模块:连接管理模块4022、集群管理模块4024、健康检测模块4026、策略管理模块4028、集群监控模块40210。业务系统所对应的服务器集群406由集群监控模块40210监控,业务系统通过连接管理模块4022所提供的相应的接口与服务器进行消息的交互。
[0082]本实例中的连接池既可支持长连接,也可支持短连接,并且所提供的线程是安全的。本实例中的连接池是通过封装形成的静态库,可供广告投放系统各模块使用具有通用性。在对连接池提供服务器连接的具体过程进行介绍之前,先对连接池中的各个模块的作用进行以下简单的说明。
[0083]策略管理模块4028:在策略管理模块中设置有多种选择服务器的策略,其主要实现Server (服务器)集群中Server的选择策略。业务系统向Server集群中的Serve发送请求时,策略管理模块408提供一个选择服务器的策略以供连接池选择某一个合适的Server。
[0084]健康检测模块4026:主要实现对Server集群中各Server的健康状态进行检查,以判断某一 Server是否可用,并修改集群管理模块404中管理的该Server的状态,将不可用的Server对应的服务器信息从集群管理模块404中删除。
[0085]集群管理模块4024:主要实现Server集群中对各Server的状态管理。连接某Server时,增加该Server的该连接对应的连接信息到相应的连接实例中,并将该连接实例增加到集群管理模块4024中;断开与某Server的连接时,删除该连接对应的连接实例中的连接信息,并归还删除连接信息后的连接实例即新的连接实例到连接管理模块4022。其中,连接信息保存在连接实例中,连接信息包括:socket句柄、连接状态、连接的server信息,连接的server信息包括:服务器的标号。
[0086]连接管理模块4022:主要实现集群管理模块4024中新的连接实例的获取与归还以及消息发送接收接口的封装。集群管理模块4024需要获取与服务器间的连接时,则从连接管理器4022中获取一个新的连接实例,用以保存与服务器间的连接对应的连接信息,如socket (套接字)句柄、连接状态、连接的server信息等;集群管理模块4024释放与某一服务器间的连接时,则将该连接对应的连接实例重置后,归还到连接管理模块4022。其中,重置连接实例也就是说将连接实例中的连接信息删除,生成一个新的连接实例。
[0087]集群监控模块40210:监控Server集群中各台在线的Server,并负责更新集群管理模块4024中获取的在线Server的服务器信息。
[0088]在介绍完连接池中包含的各个模块的具体功能后,下面介绍一下应用了该连接池的业务系统在与服务器建立连接时的整体思想:当业务系统要给Server集群发送请求时,先向连接池请求一个连接,连接池返回给业务系统一个可用连接对应的套接字句柄,由业务系统通过套接字句柄调用连接池的发送、接收接口进行消息交互。下面介绍一下与服务器建立连接的具体的过程:
[0089]S1:集群管理模块4024可以配置指定的Server信息,或通过集群监控模块获取在线Server的服务器信息,并更新在线Server的服务器信息。
[0090]S2:健康检测模块4026每隔设定时间间隔,对集群管理模块4024中的各台Server进行状态检查,enable (启用)新上线的可用Server, disable (删除)下线或异常的 Server。
[0091]S3:业务系统通过连接管理模块4022提供的接口向连接池发送与服务器建立连接的请求。
[0092]S4:连接管理模块4022将业务系统发送的建立连接的请求发送至集群管理模块4024向集群管理模块4024请求一个可用Server的可用连接。
[0093]S5:集群管理模块4024通过策略管理模块408提供的选择服务器的策略选择一个合适的Server。
[0094]S6:判断集群管理模块4024中是否维护了该Server的连接信息,也就是判断是否保存了该Server对应的连接实例,在连接实例中存储有该Server的连接信息。
[0095]S7:如果没有可用的连接实例,集群管理模块4024则从连接管理模块402中获取一个新的连接实例,通过获取的新的连接实例建立与该Server间的连接,并交给集群管理模块4024管理该连接实例;如果有空闲可用的连接实例,则使用现成的连接实例。[0096]其中,空闲可用的连接实例相当于在连接管理模块中存储的该Server的未被占用的连接实例。集群管理模块4024通过获取的新的连接实例建立与该Server间的连接时采用半异步方式,先非阻塞连接,若失败,则变为阻塞式连接。
[0097]S8:连接管理模块4022将连接实例对应的套接字句柄通过相应的接口返回给业务系统。
[0098]S9:业务系统通过连接管理模块4022提供的套接字句柄调用连接管理模块4022中的发送、接收接口进行消息的发送、接收。
[0099]连接管理模块4022中的发送、接收接口采用半异步发送、接收机制,即先非阻塞发送或接收,若未完成,则改为阻塞式发送或接收。
[0100]当业务系统使用完与服务器的连接后,业务系统归还连接给连接池;集群管理模块4024将用完的连接对应的连接实例重置后生成的新的连接实例,并将用完重置后生成的新的连接实例归还连接管理模块4022 ;连接管理模块4022维护集群管理模块4024用完重置后生成的新的连接实例,以便集群管理模块4024再次向连接管理模块获取新的连接,节省输入输出开支。
[0101]本实例中将整个连接池封装成静态库,采用连接池的思想,节省套接字资源;设计出区分长、短连接,实现对Server集群监控及自定义选择服务器决策的连接池,并且在连接池中封装了发送、接收接口。本实例中的连接池采用半异步方式,先非阻塞连接,若失败,则变为阻塞式连接,提高了连接效率;采用半异步发送、接收机制,即先非阻塞发送或接收,若未完成,则改为阻塞式发送或接收,提高了发送、接收消息的效率。通过本实例中连接池能够高并发、高性能的前提下,实现长短连接控制、集群监控,使用更加方便、快捷,功能更强大。
[0102]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0103]以上对本发明所提供的基于连接池的服务器连接方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种基于连接池的服务器连接方法,其特征在于,包括: 实时监控服务器集群中的各台服务器,获取在线服务器信息; 接收业务系统发送的与服务器建立连接的请求; 依据所述建立连接的请求,选择一个选择服务器的策略; 依据所述策略与所述在线服务器信息选择一台在线服务器; 判断是否保存了所选择的在线服务器的未被占用的连接实例; 若保存了所述连接实例,则直接选择所述连接实例,其中,保存了的每个所述连接实例对应有套接字句柄; 若未保存所述连接实例,则获取一个新的连接实例,通过所述新的连接实例建立与所选择的在线服务器的连接,添加所述连接对应的套接字句柄至所述新的连接实例;选择添加了所述套接字句柄的新的连接实例; 针对所述建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给所述业务系统,依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接。
2.根据权利要求1所述的方法,其特征在于,在所述实时监控服务器集群中的各台服务器,获取在线服务器信息步骤之后,还包括: 按照设定规则检测各台在线服务器是否可用,删除不可用的在线服务器对应的服务器信息。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述服务器信息包括:中央处理器负载、剩余内存;所述依据所述建立连接的请求,选择一个选择服务器的策略步骤包括: 依据所述建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略; 所述依据所述策略与所述在线服务器信息选择一台在线服务器的步骤包括: 依据所述策略与所述在线服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
4.根据权利要求3所述的方法,其特征在于,所述判断是否保存了所选择的在线服务器的未被占用的连接实例步骤包括: 判断是否保存了所选择的在线服务器的连接实例;若保存了所述连接实例,则进一步判断所述连接实例是否已被与所述业务系统建立的其他连接占用;若所述连接实例未被占用,则判断结果为保存了所选择的在线服务器的未被占用的连接实例。
5.根据权利要求4所述的方法,其特征在于,在所述实时监控服务器集群中的各台服务器,获取在线服务器信息步骤之前,还包括: 接收所述业务系统输入的长连接或短连接的连接指令,依据所述连接指令建立相应类型的连接。
6.根据权利要求5所述的方法,其特征在于,在所述依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接步骤之后,还包括: 当断开与所选择的在线服务器的连接时,删除所述所选择的连接实例中的套接字句柄,获得一个新的连接实例。
7.一种基于连接池的服务器连接装置,其特征在于,包括: 集群监控模块,用于实时监控服务器集群中的各台服务器,获取在线服务器信息; 连接管理模块,用于接收业务系统发送的与服务器建立连接的请求;策略管理模块,用于依据所述建立连接的请求,选择一个选择服务器的策略; 集群管理模块,用于依据所述策略与所述在线服务器信息选择一台在线服务器;所述集群管理模块,还用于判断是否保存了所选择的在线服务器的未被占用的连接实例;若保存了所述连接实例,则直接选择所述连接实例,其中,保存了的每个所述连接实例对应有套接字句柄;若未保存所述连接实例,则获取一个新的连接实例,通过所述新的连接实例建立与所选择的在线服务器的连接,添加所述连接对应的套接字句柄至所述新的连接实例;选择添加了所述套接字句柄的新的连接实例; 所述连接管理模块,还用于针对所述建立连接的请求将所选择的连接实例对应的套接字句柄通过相应的接口返回给所述业务系统,依据所述套接字句柄建立所述业务系统与所选择的在线服务器的连接。
8.根据权利要求 7所述的装置,其特征在于,所述装置还包括: 健康检测模块,用于在所述集群监控模块获取在线服务器信息之后,按照设定规则检测各台在线的服务器是否可用,删除不可用的在线服务器对应的服务器信息。
9.根据权利要求7或8任一项所述的装置,其特征在于,所述服务器信息包括:中央处理器负载、剩余内存; 所述策略管理模块依据所述建立连接的请求,选择一个选择服务器的策略时:依据所述建立连接的请求,选择一个选择中央处理器负载最小、剩余内存最大的服务器的策略; 所述集群管理模块依据所述策略与所述在线服务器信息选择一台在线服务器时:依据所述策略与所述在线的服务器信息选择一台在线的且中央处理器负载最小、剩余内存最大的服务器。
10.根据权利要求9所述的装置,其特征在于, 所述集群管理模块,还用于在所述集群监控模块实时监控服务器中的各台服务器,获取在线服务器信息之前,接收所述业务系统输入的长连接或短连接的连接指令,依据所述连接指令建立相应类型的连接; 所述集群管理模块,还用于在所述连接管理模块建立所述业务系统与所述在线服务器的连接之后,当断开与所述在线的服务器的连接时,删除所述所选择的连接实例中的套接字句柄获得一个新的连接实例,并将获得的所述新的连接实例归还给所述连接管理模块; 所述连接管理模块,还用于接收所述集群管理模块归还的所述新的连接实例。
【文档编号】H04L12/24GK103795569SQ201410030973
【公开日】2014年5月14日 申请日期:2014年1月22日 优先权日:2014年1月22日
【发明者】罗峰, 黄苏支, 李娜 申请人:亿赞普(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1