混凝土行业中基于JCS的海量数据协同模块的研究

来源:南粤论文中心 作者:温创新 谭鹏 卢帆 孙 发表于:2014-11-12 14:03  点击:
【关健词】混凝土搅拌站;海量数据协同;JCS
 【 摘 要 】 随着国内预拌混凝土行业的发展,混凝土企业高层越来越意识到搅拌站信息化管理的必要性,各种混凝土搅拌站ERP软件在国内得到了迅速的发展,通过这种软件的信息化管理,后台数据库每天都会产生大量的生产数据。为了避免搅拌站之间的恶性竞争,混凝土行业协会和政府部门需要对某个区域乃至整个行业的搅拌站的生产运营情况有实时的了解,以便对其进行监管,最终促进行业的公平竞争。

     本文结合国内混凝土行业自身的特点,阐述了混凝土行业海量数据协同的总体构想和数学模型,之后从多维度论述了基于JCS多级缓存的海量数据协同模块的设计,最后,采用Socket的方式最终实现了Server端与Client端的一对多的数据通信。
  【 关键词 】 混凝土搅拌站;海量数据协同;JCS
  1 引言
  随着预拌混凝土产业在国内的迅速发展,混凝土搅拌站呈现由单站向多站经营的发展趋势,即形成混凝土集团公司。此类公司的规模一般比较大,在物理分布上形成了以某城市为中心,其他搅拌分站多点布局的态势。在这种情况下,集团总部迫切需要某种控制手段,通过它来监管其下属分站的经营情况,以方便高层的决策。
  伴随着该行业的激烈竞争,在某些地区出现由某个大型混凝土公司来定价的局面,为了预防这种局面的出现,抑制行业的恶性竞争,混凝土行业协会和混凝土散拌协会需要知晓某个地区的总体生产经营情况,以便出台相应的政策来干预这种不良竞争,促进行业健康持续的发展,他们也迫切需要有一种能将所辖区域的搅拌站生产数据及时获取并进行汇总的信息化管理工具,以便做出合理分析。如何准确高效地获取这些海量数据,是摆在混凝土集团公司,行业协会面前的难题。
  2 混凝土行业海量数据协同的构想
  通过对大量混凝土搅拌站、混凝土集团公司、混凝土协会的调研,目前国内混凝土行业的逻辑架构可以分为四层,如图1所示清晰地描述了这种层次架构。
  最底层是混凝土搅拌站,即混凝土的生产工厂。随着企业规模的扩大,混凝土集团公司随即出现,这类集团公司由多个混凝土搅拌站组成,相对于集团总部,此类混凝土搅拌站称之为搅拌分站。集团公司总部可通过数据协同程序获取下属搅拌分站的相关生产数据;同理混凝土集团公司的上级管理单位即省(市)级混凝土协会,同样可通过数据协同程序来获取其下属混凝土集团的所有生产数据;最上一层为国家级混凝土协会,它也通过同样的方式获取其下属协会的混凝土生产数据。从图1 可以看出,不管是哪一层,数据协同程序(模块)始终是其核心,因此,如何对它进行高效设计成为该行业海量数据协同构想实现的关键。
  3 混凝土行业海量数据协同的数学模型
  为了能够描述该海量数据协同程序的量级,或者称之为时间复杂度O,以便对各级单位需要进行同步的数据总量有一个清晰的了解,同时也为程序设计人员提供相关参考信息,需要有一个数学模型能对其进行说明。结合之前描述的海量数据协同总体架构和对实际业务的分析,得出表达式(1)所描述的数学模型,其中s表示协同的数据范围。
  当s=1时,表示同步的数据范围为混凝土集团公司,即需要将集团公司所有下属搅拌分站的相关业务生产数据同步到总部,这个时候需要同步的数据总量可用表达式(2)表示。
  (2)
  某搅拌分站需要传输的数据总量可以用表达式(3)表示,其中q表示集团公司下属的第q个搅拌分站。n表示这个分站需要同步的数据的种类数,表达式(3)右边的分量表示该搅拌分站下某类数据要传输的总量。
  考虑到搅拌分站的实际情况,每个搅拌分站传输的数据种类数可能不一样,我们用n1表示某集团下属第一个分站需传输数据的种类数,n2表示该集团下属第二个分站需传输数据的种类数,以此类推。当s=1时,实际应用中需要传输的数据总量可以由表达式(4)精确的表示。
  取n=max(n1,n2,n3...,nn)即可得到表达式(2),实际上它是表达式(4)的一种特殊情形。在程序设计和实现中,我们可以通过配置文件的灵活设置,来达到这一转换的目的。通过逻辑推理和分析我们可以得到表达式(5),它表示某集团公司下属的d个搅拌分站需要传输的数据总量。
  当s=2,即当同步的数据范围为省市级混凝土协会,采用相同的推理可以得到表达式(6), institute D表示某省市级混凝土协会需要传输的数据总量。
  同理,当s=3时,可以得到表达式(7),countryD表示国家级混凝土协会需要传输的数据总量。
  4 海量数据协同模块的高效设计
  4.1 JCS多级缓存设计
  JCS是复合式缓存工具,具有配置灵活的特点。JCS缓存对于高并发异步数据的入库程序性能的提升有非常显著的效果。一个JCS可以根据实际情况,定义多个region,而每个region可以定义自己的存储类型和存储对象的数量。在JCS中一般通过map,即键值对(Key、Object)来存储和操作缓存对象。
  在该海量数据协同模块中,JCS缓存的主要目的是先将从客户端获取的业务数据缓存起来 ,然后通过一个后台异步程序将相应数据进行入库处理,这样可以显著提升程序的效率。在该海量数据协同模型中,key可定义为一个字符串,而object则是一个复杂的对象,它包含多个属性。
  4.2 自定义数据解析器的设计
  由表达式(4)可知,集团下属分站需要同步的数据类型数量极有可能不一样,为了解决这类难题,提升程序的可扩展性,需要设计自定义数据解析器。如图2所示是该解析器模型的说明。将clientKey和clientValue放入properties配置文件中,code为要同步的数据类型编码,isSync表示是否要同步,isResend表示是发送正常数据还是异常数据,sqlId表示数据库配置文件中的key,通过它可以找到相应sql语句,captionInfo为日志提示信息。

     4.3 两级map实现Server端与Client端的1对多通信
  在基于socket的TCP通信程序中,客户端和服务端通过connction建立连接,而客户端的session和服务端的session并非同一个。本文论述的数据协同程序中,1个服务端要对应多个客户端,如何准确的建立两端session的联系,实现两端在各种异常情况下的准确通信,需要在服务端建立一个两级map。以s=1为例进行说明,第一级map的key由常量字符串和搅拌分站id构成,value为服务端新分配的session,第二级map的key的服务端新分配的sessionId,value为常量字符串和搅拌分站id的组合字符串。如图3所示清晰地描述了这种设计思想。
  5 海量数据协同模块的高效实现
  5.1 客户端实现
  客户端的实现主要包括两部分:一部分为基于异步事件的通信模块,主要用途为与服务端建立连接,接收服务端推送过来的数据,其核心方msgReceived,getCurrentConnect;另一部分为异步后台线程,其核心方法为数据同步方法syncErpClientData和网络异常诊断方法dealwithReconnectException。 (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)

顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.