您当前的位置:首页>>新闻中心>>行业动态

基于 DUBBO + ZOOKEEPER地磅 计量服务平台研究

时间:2017-03-25 02:52:37   点击数:

基于 DUBBO + ZOOKEEPE地磅 计量服务平台研究

基于 DUBBO + ZOOKEEPE 地磅计量服务平台是互联网与传统计量检测服务业相结合的产物,平台系统设计充分考虑了计量行业特点,在此基础上确定系统的建设目标,重点解决分布式系统集群中数据共享数据一致性与服务水平扩展等问题系统遵循 JF1069  2012JJF1033  2014GB /T19022. 1 ISO10012  1ISO9000  ISO /IEC17025 等规范,使用 JAVA 语言和众多开源框架,融入先进的管理理念,对涉及涵盖政府计量技术机构企事业单位高校各个部门计量行业的工作程序进行全面的规范和整合,实现以服务为中心,对计量资源人( 标准规范检测业务器具证书) 等方面的科学管理,同时辅以决策支持和实时的智能化预警机制构建计量管理知识资源化数字化具有十分重要的现实意义和应用价值

1.研究意义

 

基于 DUBBO + ZOOKEEPE 地磅计量服务平台是一个规模庞大结构复杂信息量大的综合在线计量支撑系统,系统涵盖计量监管子系统计量业务子系统计量在线服务子系统计量数据共享子系统随着业务的发展,应用需求的不断扩充,如何有效的解决各子系统间共享数据一致性问题各应用服务间复杂度问题各异构子系统间数据共享问题以及分布式集群服务问题是本项目研究的重点和难点

 

( 1) 共享数据的一致性各子系统间存在许多高度共享的数据,包括用户信息企业信息仪器信息,同时这些数据不可避免的在各系统间存在业务处理的出入口,从而导致各系统间的用户数据业务局部数据产生不一致性 ( 2) 应用服务复杂度计量服务平台是一个涵盖多个子系统的大型服务平台,随着今后系统服务的增多,服务间的联系会变得异常复杂,复杂度为: N 平方

 

( 3) 异构系统数据共享计量检测公共服务平台汇聚政府企业技术机构和高校等众多数据资源,如何实现异构系统间的数据共享问题

 

2.研究内容

针对上诉问题,系统在设计之初采用 DUBBO + ZO-OKEEPE 面向服务的分布式体系架构Dubbo 是一项被国内外高度认可,同时被众多国内互联网公司广泛使用的开源分布式 SOA 服务框架,致力于提供高性能和透明化得PC 远程服务调用方案以及 SOA 服务治理方案其核心内容包含远程通讯机制集群容错机制自动发现机制SPING 配置机制基于 DUBBO 的应用服务实现了一系列的具体的业务功能封装,研发基于计量业务的各种服务,包括证书防伪验证计量器具状态追踪计量收费标准查询等,服务对象不需要关心底层业务处理细节,只需要通过 EST 接口使用相应的服务即可软件架构如图 1 所示:

 软件1.jpg

 

Zookeeper 运用高可用的分布式管理与协调服务框架,具有顺序一致性原子性单一视图可靠性实时性等特点其采用 ZAB 算法( 原子消息广播协议) 提供如命名配置管理同步控制群组服务等一些公用服务通过 Zookeeper 来实现数据共享集群管理与 Leader 选举等应用,保证分布式系统环境中数据共享的一致性

 

Dubbo + Zookeeper 是实现异构系统间服务智能化集成和管理技术,并解决如下问题

 

( 1) zookeeper 实现了各系统间的数据同步,共享数据事务一致性问题

 

( 2) zookeeper 能够集成众多异构系统的应用和数据,实现多方资源的数据共享和智能对接

 

( 3) Dubbo 可以使服务复杂度由 N 平方降低为 N,减少集成复杂性,增加业务灵活性,实现业务服务的水平扩展

 

( 4) Dubbo 能够实现服务注册访问机制,达到对服务的透明访问,访问者无需关心服务的提供者

 

Dubbo + Zookeeper 应用架构如图 2 所示:

软件2.jpg

Dubbo  zookeeper 应用系统集成,其中服务提供者示例代码如下:

 

 ? xml version = ″1. 0″ encoding = ″UTF  8″?

 

beans

 

!    引入配置文件  

 

context: property  placeholder location = ″classpath:

 

config. properties″ /

 

 !  - -

提供方应用信息 - - 

 dubbo:

application name = ″provider″ owner = ″ pro-

grammer″ organization = ″dubbox″ /

 !  - -

zookeeper 注册中心服务地址 - - 

 dubbo:

registry address = ″ zookeeper: / /192. 168. 1. 1:

2181? backup =192. 168. 1. 2: 2181192. 168. 1. 3: 2181″/

 !  - -

kryo 实现序列化 - - 

 dubbo:

protocol name = ″dubbo″ serialization = ″kryo″

optimizer = ″tjjl. sys. serial. SerializationOptimizerImpl″ /

 

 ! 扫描 dubbox 注解位置 

 

dubbo: annotation package = ″tjjl. service″ /

 

!     dubbo 协议在 8888 端口提供服务

 

 

 dubbo: protocol name = ″rest″ server = ″tomcat″

 

port = ″8888″ contextpath = ″provider″ accepts = ″500″ /

 

 ! 具体的实现 bean 

 

bean id = ″ userService″ class = ″

 

tjjl. service. impl. UserServiceImpl″ /

 

 ! 声明需要暴露的服务接口,同时提供本地

 

dubbo 方法调用和 rest 方法调用   

 

dubbo: service interface = ″ tjjl. service. UserService″ ref = ″userService″ protocol = ″restdubbo″ /

 

/beans

 

Dubbo  zookeeper 应用系统集成,其中服务消费者示例代码如下:

 

 ? xml version = ″1. 0″ encoding = ″UTF  8″?

 

beans

 

!    引入配置文件  

 

context: property  placeholder location = ″classpath:

 

config. properties″ /

 


 !  - -

消费方服务名称 - - 



 dubbo: application name = ″consumer″ owner = ″

programmer″ organization = ″dubbox″ /


 !  - -

zookeeper 注册中心服务地址 - - 




dubbo:

registry

address  = ″ zookeeper: / /

192.

168.

1.

1

:

2181?

backup

=  192. 168. 1. 2:  2181

192.

168.

1.

3

: 2181″ / 




 !  - -

生成远程服务接口配置 - - 


 dubbo:

reference

interface

= ″ tjjl. service. UserService″

 

id = ″userService″ /

 

 /beans