高可用高并发高性能分布式远程抄表采集服务器解决方法技术

技术编号:21167174 阅读:48 留言:0更新日期:2019-05-22 09:40
本发明专利技术公开了高可用高并发高性能分布式远程抄表采集服务器解决方法,多个采集服务器使用orleans组成一个集群;同一时刻所有在运行的采集服务器进程中只有一个任务分发者:Master服务器Master服务器定期生成抄表记录到t_running表,定期到t_running表根据优先级高低顺和已经到时间需要执行的任务序获取到内存中,每次只获取部分任务;从数据库获取到的任务存在内存一个队列中;本发明专利技术还公开了其他的一些技术特征。本发明专利技术增加整个采集系统的稳定性、高可用性,在集群中某台或者某几台机器宕机后不影响整个系统的运行;均衡的分布式处理方式使得集群中每台机器都处理相对均匀的任务,使整体资源得到更合理的利用,避免某些服务器任务过载某些服务器无任务处理。

Solution of Distributed Remote Meter Reading Server with High Availability, High Concurrency and High Performance

The invention discloses a solution of high availability, high concurrency and high performance distributed remote meter reading acquisition server, in which multiple acquisition servers use Orleans to form a cluster; at the same time, there is only one task distributor in the process of running the acquisition server: Master server Master server generates meter reading records regularly to t_running table, and regularly to t_running table according to priority level. The sequential tasks that need to be executed when the time is up are acquired into memory, only part of the tasks are acquired at a time; the tasks acquired from the database exist in a memory queue; the invention also discloses some other technical features. The invention increases the stability and high availability of the whole acquisition system, does not affect the operation of the whole system when one or several machines in the cluster go down; the balanced distributed processing mode enables each machine in the cluster to handle relatively uniform tasks, makes the overall resources more reasonable utilization, and avoids some server tasks overloading and some servers processing without tasks.

【技术实现步骤摘要】
高可用高并发高性能分布式远程抄表采集服务器解决方法
本专利技术涉及计算机软件系统中与智能电表、集中器或者网关的数据采集、数据交互的服务器端系统架构、系统设计的解决方案。尤其涉及大批量、实时性要求较高的智能电表的数据采集和数据交互系统,特别涉及一种高可用高并发高性能分布式远程抄表采集服务器解决方法。
技术介绍
随着电子技术的发展出现越来越多的用到小型智能终端设备如各类传感器、智能手机、智能电表、网络摄像机等等,这是一个物联网的时代;光有智能设备不足以满足人类的要求,智能设备被安装后人们要求对每个角落的每块设备进行远程访问控制,尤其是需要实时的采集到这些智能设备的各种数据并对这些数据进行加工处理。本专利技术不涉及对大数据的加工处理和分析,本专利技术只针对如何远程实时高效的与智能电表交互数据。其中终端智能电表可通过GPRS、以太网接入到主站服务器,也可以通过plc或者RF连接到集中器或者网关,再由集中器或者网关连接到主站。比如现在需要采集一个超大城市的所有智能电表数据(如实时采集每15分钟的电能负荷曲线),有如下一系列需求或前提条件:·这个城市可能安装了超过500万只智能电表·要求30分钟内采集完所有500万只电表数据·有的电表是通过网关或者集中器连接到主站服务器,一个网关下可能连接几百块plc电表,并且同一时间网关只能与下面一个电表进行通讯·并且期间可能有相当部分电表还存在其它任务要处理如远程拉合闸充费等等。·同一个集中器下的所有电表任务只能同时在一个地方被处理,一次只能处理一块电表的众多任务之一否则会冲突导致任务处理失败·同一个GPRS电表的所有任务也只能同时在一个地方被处理,一次只能处理该块表众多任务之一否则会冲突·所有任务,包括抄读电表数据、远程拉合闸等所有任务需要分优先级,优先级高的任务优先处理,同一个电表同时有很多任务需要处理时优先处理,对于给定的某个电表同一时刻只处理一个任务·如果是抄读冻结数据优先级相同的情况下需要先执行距离当前时间最近的任务,其余任务按时间先后执行·对于需要远程充值的预付费电表系统,要求实时完成一半用户的同时远程充费操作·采集服务器不能超过15台(包括虚拟机和防挂备用机)对于类似这种大批量相对实时的数据采集系统目前一般的解决办法为选定其中一台服务器作为任务分发处理中心,通过rpc(远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议)将排序后的任务分发到其它采集服务器,其它服务器接收到任务后访问终端智能设备最后将结果(成功或者失败的结果)返回到任务分发者。这些解决方案都存在或多或少的缺陷,有的缺陷甚至是致命的。·指定的任务分发者服务器挂掉后整个系统的任务处理都停滞了·其它任务接收服务器短时间内如果接收到大量任务比如20万个任务难以做到如此高的并发处理,传统的做法是对每个任务分配一个线程去处理但分配的线程数达到一定数量后整个系统将会变得非常卡顿甚至进程挂掉。比较好的处理方式是使用异步处理方式访问终端设备使用异步等待等技术,但存在如何有效的管理如此大量的异步IO请求也是非常困难的稍有不慎也会是整个系统崩溃·任务分发者需要和其它服务器保持心跳以便检测其它服务器是否存活,如果该服务器存活则分派任务否则不分派任务到该服务器·任务处理服务器需要和任务分发者服务器保持心跳,以便在任务处理结束后通知任务处理结果·任务分发者如何做到均衡不冲突的分发任务到其它服务器也是一大难题,传统解决方法需要任务分发者记录当前哪些设备已经有任务正在被处理,哪些任务被分派到了哪台服务器,每台服务器当前被分派了多少个任务;收到其它服务器返回的任务处理结果时要同步更新分派的任务数,并且需要设定超时检测功能以便检测分派到其它服务器的任务如果没有反馈将任务重新分派等等·如果任务分发者服务器挂机如何让其它存活的服务器接管任务分配,如何将挂机时刻任务分发者的各种任务分配信息移交到新的任务分发者等等以上只是列举了一些传统解决方案的不足或者缺陷,不难看出使用传统解决方案系统复杂性非常高、易出错,出了问题难以查找问题原因难以做到高可用、高并发、高性能等。
技术实现思路
针对传统大量智能电表设备数据采集方案存在的技术不足,本专利技术主要解决的技术问题是提供一种数据采集方案,其特征是高可用、高并发、高性能、分布式、实时性,该方案能够解决以上传统做法的各种缺陷和不足。本专利技术的目的是通过以下技术方案来实现的:高可用高并发高性能分布式远程抄表采集服务器解决方法,多个采集服务器使用orleans组成一个集群;同一时刻所有在运行的采集服务器进程中只有一个任务分发者:Master服务器;Master服务器定期生成抄表记录到t_running表,定期到t_running表根据优先级高低顺和已经到时间需要执行的任务序获取到内存中,每次只获取部分任务;从数据库获取到的任务存在内存一个队列中;另外单独有一个线程每隔若干毫秒检测这个队列,如果发现队列有数据则对队列中的任务再次根据时间优先级排序和设备id进行分组,对当前空闲的设备挑选出其设备下的任务,并通过orleans客户端发送任务到集群中;发送任务时以设备id作为grain的identity,以任务的具体信息作为请求内容发送,orleans集群自动实例化和管理每个grain的生命周期。作为优选方式,Master服务器由以下方式产生:a.首先设计数据表t_Master和t_running,分别用于记录当前Master服务器的信息和任务信息,其中t_Master表字段Mastermark需要设定唯一约束;b.每个采集服务器(Master服务器也属于采集服务器)进程启动后开启一个后台线程,该线程每隔0-180秒内的随机时间检测数据库表t_Master里面的记录,如果该表没记录则把自己作为Master服务器添加进去,如果添加成功则该进程成为Master服务器并开始履行Master服务器的职责;每个采集器服务器需要更新t_Master表记录时使用相同的Mastermark值,这样通过数据库的唯一约束防止多个采集服务器同时更新该表,起到加锁的功能,保证只有一个采集服务器能更新成功,更新成功的采集器成为Master角色;c.一旦一个采集服务器成为Master服务器后除非进程崩溃、掉电、机器重启、强行关闭、连接不上数据库,否则该角色会一直扮演下去;d.Master服务器定期(默认间隔20秒)更新t_Master的在线时间;e.其它非Master采集服务器(采集服务器包括Master服务器和非Master采集服务器)定期检测t_Master运行情况,如果发现Master记录的在线时间超过120秒则认为系统当前没有健康的Master服务器存在,然后把t_Master中旧的记录删除,如果删除成功则把自己作为Master添加进去,如果添加成功则开始履行Master服务器的职责;新的Master服务器会重新到t_running表加载任务,由于切换Master服务器的时间间隔比访问一次前端设备的时间要长,所以新的Master服务器接管任务分派职责后在t_running表中的任务全都是未做或者做失败的任务。作为优选方式,Master服务器定期从redis中获取分出去的任务执行结果并根据结果清理自己在本文档来自技高网
...

【技术保护点】
1.高可用高并发高性能分布式远程抄表采集服务器解决方法,其特征在于:多个采集服务器使用orleans组成一个集群;同一时刻所有在运行的采集服务器进程中只有一个任务分发者:Master服务器Master服务器定期生成抄表记录到t_running表,定期到t_running表根据优先级高低顺和已经到时间需要执行的任务序获取到内存中,每次只获取部分任务;从数据库获取到的任务存在内存一个队列中;另外单独有一个线程每隔若干毫秒检测这个队列,如果发现队列有数据则对队列中的任务再次根据时间优先级排序和设备id进行分组,对当前空闲的设备挑选出其设备下的任务,并通过orleans客户端发送任务到集群中;发送任务时以设备id作为grain的identity,以任务的具体信息作为请求内容发送,orleans集群自动实例化和管理每个grain的生命周期。

【技术特征摘要】
1.高可用高并发高性能分布式远程抄表采集服务器解决方法,其特征在于:多个采集服务器使用orleans组成一个集群;同一时刻所有在运行的采集服务器进程中只有一个任务分发者:Master服务器Master服务器定期生成抄表记录到t_running表,定期到t_running表根据优先级高低顺和已经到时间需要执行的任务序获取到内存中,每次只获取部分任务;从数据库获取到的任务存在内存一个队列中;另外单独有一个线程每隔若干毫秒检测这个队列,如果发现队列有数据则对队列中的任务再次根据时间优先级排序和设备id进行分组,对当前空闲的设备挑选出其设备下的任务,并通过orleans客户端发送任务到集群中;发送任务时以设备id作为grain的identity,以任务的具体信息作为请求内容发送,orleans集群自动实例化和管理每个grain的生命周期。2.根据权利要求1所述的高可用高并发高性能分布式远程抄表采集服务器解决方法,其特征在于,Master服务器由以下方式产生:a.首先设计数据表t_Master和t_running,分别用于记录当前Master服务器的信息和任务信息,其中t_Master表字段Mastermark需要设定唯一约束;b.每个采集服务器进程启动后开启一个后台线程,该线程每隔0-180秒内的随机时间检测数据库表t_Master里面的记录,如果该表没记录则把自己作为Master服务器添加进去,如果添加成功则该进程成为Master服务器并开始履行Master服务器的职责;每个采集器服务器需要更新t_Master表记录时使用相同的Mastermark值,这样通过数据库的唯一约束防止多个采集服务器同时更新该表,起到加锁的功能,保证只有一个采集服务器能更新成功,更新成功的采集器成为Master角色;c.一旦一个采集服务器成为Master服务器后除非进程崩溃、掉电、机器重启、强行关闭、连接不上数据库,否则该角色会一直扮演下去;d.Master服务器定期更新t_Master的在线时间;e.其它非Master采集服务器定期检测t_Master运行情况,如果发现Master记录的在线时间超过120秒则认为系统当前没有健康的Master服务器存在,然后把t_Master中旧的记录删除,如果删除成功则把自己作为Master添加进去,如果添加成功则开始履行Master服务器的职责;新的Master服务器会重新到t_running表加载任务,由于切换Master服务器的时间间隔比访问一次前端设备的时间要长,所以新的Master服务器接管任务分派职责后在t_running表中的任务全都是未做或者做失败的任务。3.根...

【专利技术属性】
技术研发人员:刘杰梅林
申请(专利权)人:成都长城开发科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1