本发明涉及地理围栏系统技术领域,具体涉及一种支持水平扩展的地理围栏系统及工作方法。
背景技术
地理围栏是lbs(locationbasedservice,基站定位)的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界。当物体进入或离开某个特定地理区域,或在该区域内活动时,可以判断该物体和地理区域的空间关系。
pip(pointinpolygon)是根据一批坐标点创建多边形(即围栏),并判断一点是否落入其中。地理围栏的应用,本质上归结于判断点是否在多边形内,基于此空间关系开发业务场景。
地理围栏系统是基于地理围栏搭建的应用系统。例如,在系统中以实际地理区域的边界坐标创建虚拟的栅栏,并且手机定期上报位置,则当手机进入指定地理区域时,手机可以接收自动通知或警告。
基于地理围栏搭建的应用系统,其吞吐量是衡量系统优劣的重要指标。例如,多部手机进入指定地理区域时,所有手机均可以接收自动通知或警告。如果由于服务器支撑的数量有限,导致部分手机接收时间较大甚至无法接收到,则会失去实时通知的意义。
该系统的核心,是对手机和指定地理区域进行pip判定,并将手机是否落入其中的判定结果及时返回。此结果是后续业务行为的基础,其返回的时间长短和正确性至关重要。
为了提高服务器的吞吐量,即同时处理的请求量,在现有技术中通常可以升级服务器的cpu硬件配置。但是,当并发的请求量超过一定的量级后,硬件配置无法再提升,该方案无法解决此问题。
现有技术中使用单台服务器来响应海量的pip判定请求,当并发的请求量超过服务器的cpu资源承载能力后,服务器无法对更多的请求做出及时有效的响应。
技术实现要素:
本发明提出了一种支持水平扩展的地理围栏系统及工作方法,解决了在地理围栏系统里,支撑海量pip判定请求的问题。详细说明如下:
当单个pip判定请求到达服务器时,会将请求中携带的坐标点,与服务器中预先加载好的虚拟围栏做pip判定,然后将结果返回请求方。该计算过程会消耗一定的cpu资源。
当多个pip判定请求同时到达服务器时,会并行的执行计算过程。消耗的cpu资源相应的增加。
当并发的请求非常多时,服务器消耗的cpu资源会达到上限。继续增加请求量时,服务器无法再做出响应。
本发明采用的技术方案如下:
一种支持水平扩展的地理围栏系统,所述地理围栏系统包括一台围栏管理服务器和一组围栏判定服务器组成的集群,所述一组围栏判定服务器至少包括一台围栏判定服务器,所有围栏判定服务器加载相同的一批虚拟围栏,并基于虚拟围栏提供一致的pip判定结果,围栏管理服务器将集群内的围栏判定服务器记录在判定服务器列表中,当物体上报实时位置时,围栏管理服务器从判定服务器列表中选择一个围栏判定服务器进行pip判定。
进一步地,围栏管理服务器根据路由算法从判定服务器列表中选择一个判定服务器进行pip判定。
进一步地,地理围栏系统启动后,围栏判定服务器通过向围栏管理服务器注册加入集群,围栏管理服务器将所述围栏判定服务器记录在判定服务器列表中。
进一步地,围栏管理服务器记录每个围栏判定服务器的实时请求量,并保存在判定服务器负载表中。
进一步地,在地理围栏系统运行过程中,当物体上报实时位置时,围栏管理服务器从物体寻址表中寻找物体对应的围栏判定服务器。
进一步地,在地理围栏系统运行过程中,如果所有围栏判定服务器的平均cpu使用率达到设定的阈值,则增加围栏判定服务器。
本发明还提供了一种支持水平扩展的地理围栏系统的工作方法,所述地理围栏系统包括一台围栏管理服务器和一组围栏判定服务器组成的集群,所述一组围栏判定服务器至少包括一台围栏判定服务器,所述工作方法包括:
围栏判定服务器向围栏管理服务器注册加入集群,围栏管理服务器将所述围栏判定服务器记录在判定服务器列表中;
物体上报实时位置至围栏管理服务器,围栏管理服务器从判定服务器列表中选择一个围栏判定服务器进行pip判定。
进一步地,围栏管理服务器记录每个围栏判定服务器的实时请求量,并保存在判定服务器负载表中。
进一步地,判定服务器负载表中包括count,所述count为围栏判定服务器在设定时间内向围栏管理服务器请求的总次数。
进一步地,当物体上报实时位置时,围栏管理服务器从物体寻址表中寻找物体对应的围栏判定服务器。
进一步地,如果围栏管理服务器没有找到对应的围栏判定服务器,则从判定服务器负载表取出count值最小的围栏判定服务器,并在所述围栏判定服务器上进行pip判定;同时更新物体寻址表,并将判定服务器负载表中的count加1。
进一步地,如果围栏管理服务器找到对应的围栏判定服务器,则根据判定服务器负载表来判断所述围栏判定服务器当前负载是否过高:
如果负载不高,则在所述围栏判定服务器上进行pip判定;同时,将判定服务器负载表中的count加1;
如果负载过高,则从判定服务器负载表中取出count值最小的围栏判定服务器,在所述围栏判定服务器上进行pip判定;同时更新物体寻址表,并将判定服务器负载表中的count加1。
进一步地,在地理围栏系统运行过程中,如果所有围栏判定服务器的平均cpu使用率达到设定的阈值,则增加围栏判定服务器。
本发明还提供了一种存储器,所述存储器存储有计算机程序,所述计算机程序执行如下步骤:
围栏判定服务器向围栏管理服务器注册加入集群,围栏管理服务器将所述围栏判定服务器记录在判定服务器列表中;
物体上报实时位置至围栏管理服务器,围栏管理服务器从判定服务器列表中选择一个判定服务器进行pip判定;
所述集群包括一台围栏管理服务器和至少一台围栏判定服务器。
本发明的有益效果在于采用水平扩展的方式,利用一组提供相同判定能力的服务器来分摊海量请求,并通过一台管理服务器来协调海量请求和这一组服务器。
附图说明
图1为支持水平扩展的地理围栏系统结构图;
图2为支持水平扩展的地理围栏系统运行流程图。
具体实施方式
本发明通过围栏管理服务器和围栏判定服务器的分布式集群设计,将海量的判定请求均匀分散在各个围栏判定服务器。基于上述设计,当判定请求量增加时,可以通过增加围栏判定服务器,进行水平扩展,从而提高系统能够服务的总请求数量。
所述水平扩展解释如下:假设有一台服务器,它可以承担1百万/秒的请求,这个请求可以是对一个位置点进行pip判定。现在我们的请求量是2百万/秒,很显然服务器撑不住了,会发生拒绝访问,程序崩溃,以及宕机等情况。一台机器解决不了的问题,我们通过增加一台机器分担负载,从而使每台服务器承担1百万/秒的请求。如果请求量继续增加,就继续增加机器。这种方式称之为水平扩展。
下文中,结合附图和实施例对本发明作进一步阐述。
实施例一:
图1是本发明支持水平扩展的地理围栏系统结构图,图中每个服务器都是一台独立的机器,系统共有一台围栏管理服务器和n台围栏判定服务器,组成一个集群,n至少为1。
其中,围栏判定服务器功能如下:
1)每台围栏判定服务器,将加载一批虚拟围栏,基于这些围栏提供pip判定结果。
2)所有的围栏判定服务器,都加载相同的一批虚拟围栏,以便提供一致的判定结果。
围栏管理服务器功能如下:
1)将集群内的围栏判定服务器记录在判定服务器列表中。
2)当物体上报了实时位置时,从判定服务器列表中,根据路由算法,选择一个判定服务器,最终在该服务器上进行pip判定。
该路由算法要求:
i.同一物体在一段时间内的多次连续请求,尽量落在同一围栏判定服务器上。
ii.各个围栏判定服务器接收的请求量基本均匀。
实施例二:
本发明还提供了支持水平扩展的地理围栏系统的工作方法,具体步骤如下:
1、地理围栏系统启动后,围栏判定服务器向围栏管理服务器注册加入集群,围栏管理服务器将该围栏判定服务器记录在判定服务器列表中。
2、在围栏管理服务器中,以时间滑动窗口的方式,记录每个围栏判定服务器的实时请求量,并保存在判定服务器负载表中。
a)时间滑动窗口的窗口大小为5分钟,滑动间隔为1分钟。即每分钟统计并记录一次过去5分钟内的请求总次数。
b)围栏管理服务器保存每个判定服务器在过去5分钟内的请求总次数,每隔1分钟重新统计并更新该值。
c)围栏判定服务器负载表的结构如下:
3、系统运行过程中(如图2所示),当物体上报实时位置时:
a)围栏管理服务器从物体寻址表中,寻找该物体对应的围栏判定服务器。该物体寻址表的结构如下:
b)如果没有找到对应的围栏判定服务器,则从判定服务器负载表取出count值最小的判定服务器,最终在该服务器上进行pip判定。同时,在物体寻址表中新增该关系,并将判定服务器负载表中的count加1。
c)如果找到对应的围栏判定服务器,则根据判定服务器负载表来判断选择的围栏判定服务器当前负载是否过高。
i.同时满足如下条件,则认定选择的围栏判定服务器负载过高:
1.当其count值大于其余所有判定服务器的count值时。
2.且所有判定服务器的count值,其标准差大于期望值的20%
ii.如果负载不高,则在该围栏判定服务器上进行pip判定。同时,将判定服务器负载表中的count加1。
iii.如果负载过高,则从判定服务器负载表取出count值最小的判定服务器,在该服务器上进行pip判定。同时,在物体寻址表中更新该关系,并将判定服务器负载表中的count加1。
4、地理围栏系统运行过程中,随着请求数量的增加,各个围栏判定服务器的cpu资源消耗也会增长。当达到一定的阈值时,在地理围栏系统中增加新的围栏判定服务器,用以均衡负载。
1)设定阈值为,所有围栏判定服务器的平均cpu使用率达到70%;
2)增加围栏判定服务器的数目为,现存围栏判定服务器数目的1/3。
实施例三:
本发明还提供了一种存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行如下步骤:
围栏判定服务器向围栏管理服务器注册加入集群,围栏管理服务器将所述围栏判定服务器记录在判定服务器列表中;
物体上报实时位置至围栏管理服务器,围栏管理服务器从判定服务器列表中选择一个判定服务器进行pip判定;
所述集群包括一台围栏管理服务器和至少一台围栏判定服务器。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。