APP下载

JAVA在分布式机群计算中数据共享应用

2020-03-07

网络安全技术与应用 2020年2期
关键词:机群队列服务器

(厦门安胜网络科技有限公司 福建 361008)

随着分布式系统及各种云系统,大数据应用的出现,人们对数据的计算需求越来越高,尤其对目前机器计算能力不能满足人们对海量数据的分析和统计,机群计算的架构便时兴起来,如分布式集群计算,云计算,边缘计算等。在这些分散的机器间的计算数据,各计算机器分任务跑批数据,对数据进行清洗、集成、变换、归约等处理[1],急切需要协同作业任务来协调各机器间的任务管理和数据汇聚。如果机器间有了一份共享同步数据区块的话,那么不同机器间的协同作业问题便能很好的得到解决,包括分布式系统间的SESSION 同步问题。本文以JAVA语言为基础编程语言说明分布式机群的数据共享及同步。

1 机群计算中数据块共享研究

图1为机群服务网络图。S1到S10为各计算服务,这里我们以一台机器作为一个单实例进程来说明多台机器或多个JVM 实例间的数据共享。机群间的数据共享多以星状架构方案为主。其中中心服务也可以是机群服务,向外暴露统一的服务接口,当然也遵循CAP 定理:保证一致性Consistency,可用性[2]Availability,分区容错Partition tolerance。其中共享数据块可以通过值键对的形式进行传输存储,也可进行系列化等形式进行传输存储。下面介绍几种共享数据的实现模式。

图1 机群服务网络图

1.1 协同服务模式

创建一个(也可以是一组)专门的服务,让其他任务都能访问。如SOCKET、WEBSERVICE、RPC 等服务,通过双方约定服务标准进行协同作业。把要同步共享的数据都传到这个协同服务上[3],由协同服务统一处理,响应给各任务请求,从而实现数据同步及数据一致性。

图2 机群服务星状图—协同服务

(1)SOCKET服务方式:服务端通过套接字服务对端口进行监听,与客户端通过字节流传输数据,从而实现数据的共享。

(2)WEBSERVICE服务方式:可以通过APACHE的Axis2进行搭建,也可以通过SPRINGBOOT微服务进行REST服务的构建,传输协议可以为XML或JSON等进行字符串系列化[4],再用标准工具对其进行解构生成OO对象或是MAP值键,从而实现数据的共享。

1.2 数据中心模式

各服务端把数据汇聚存到数据集中(结构化数据库MYSQL、ORACLE 等,非结构化数据库MONGO 等,缓存服务(REDIS,MENCACHE 等或消息队列(如KALFKA 等)。各服务机器访问统一的数据库或订阅主题服务从而获取共享数据。

(1)数据库中心方式:各服务器通过JDBC 或ODBC 等方式把数据系列化后存入结构化数据库表,各服务器通过和中心数据库进行交互通信实现对数据的删除更新获取操用,从而共享及同步数据。

(2)缓存服务中心方式:各服务器通过值键对数据构造MAP数据存储到缓存,各服务再通过访问统一缓存服务删除更新获取共享数据。

(3)消息队列方式:各服务器通过消息队列服务把数据以值键对的形式存入消息队列中,再通过消息队列获取共享数据,以实现数据共享。

以KALFKA为例:

通过值键对,进行主题消息推送代码如下:

对主题进行接收:

各服务器通过对KAFKA服务中的主题信息进行消息处理,从而实现数据共享。

1.3 通过广播等方式

对各实例进程进行通知,如Hazelcast 等。以下以Hazelcast为例:

Hazelcast是一个内存分布式计算平台,用于管理数据并并行执行应用程序。它用JAVA 编写,与其他一些内存数据库(如redis)不同,Hazelcast是多线程的,这意味着可从所有可用的CPU内核中受益。与其他内存数据网格不同,它设计用于分布式环境。它支持每个群集无限数量的map和缓存。根据基准测试,Hazelcast在获取数据方面比Redis 快56%,在设置数据方面比Redis 快44%。项目中加入只需引入JAR 包.Hazelcast是集群的,数据可以在许多应用程序实例之间共享。

以下为Hazelcast存取数据块的代码:

存入:

2 机群计算中数据共享作用

有了共享数据,在机群中就可以方便我们在机群中进行分布式计算。把一个大的需要高性能要求的任务进行分解为多个的低性能要求的子任务进程或线程进行计算,通过共享数据块中的置标识值位来跟进任务的执行状态,当所有的数据都计算完成后再把共享数据块中的标识置完结状态,各子任务把结果进行汇聚,从而得到并行计算后的结果,大大减少计算时间,让响应更实时。

有了共享数据块,SESSION的共享就方便了。把SESSION对象直接通过键值对存入共享数据块,通过MapReduce模式进行对SESSION 进行增删改查,从而实现SESSION 共享。

有了共享数据块,各服务就不再独立,他们互相联系、相互协用、互补资源,让服务资源得到合理应用,也方便各服务状态的指标的汇聚和管理,方便各服务器间的负载分配。

3 小结

分布式计算中,数据共享占据了至关重要的地位,只有通过数据共享,才能达到各机器间通信,各机器群间的协调处理,共同计算,为计算缩减时间,为计算赢取时间。

猜你喜欢

机群队列服务器
队列队形体育教案
理解Horizon 连接服务器、安全服务器的配置
队列里的小秘密
基于多队列切换的SDN拥塞控制*
PowerTCP Server Tool
BlackJumboDog
在队列里
施工机群配置优化研究综述
施工机群配置优化研究综述
高速铁路施工装备智能化研究