当前位置:   article > 正文

用开源系统来组件数据中心_开源 数据中心门户

开源 数据中心门户

一.引言

1 .行业问题与需求

IT行业从业10年经历过各种的企业开发过各种的系统,所有的中小型IT企业都面临一个巨大的问题就是由于成本问题,企业开的系统只是停留在简单的服务器+数据库的架构上,也就是最简单的SSH框架,有些混迹于这些企业的号称架构师的大牛也就是知道如何的去构建一套SSH框架还号称什么自动化也就是从一个公司偷到另一个公司而已,也许成本很低但是对于企业的规范化发展没有任何的帮组和益处,那么中小企业如何规范化的同时又不需要投入大量的成本了,就是本文来说明的如何通过一些列的开源系统为中小企业搭建一套廉价的数据中心,实现大数据与快数据。

2.快数据的解决

快数据这是每个企业在构建系统时最关注的事情,怎么样让用户可以最快的访问我们的系统,数据库查询怎么样才能更快,数据库写入更新的瓶劲怎么样才能解决,这样的方案非常的多也非常的丰富,异步写入、查询缓存等都是为了解决快数据的方案,今天我要说的快数据解决就是如何使用内存数据库来提高系统的访问速度,大家都知道一般的数据库都是写道磁盘上,什么建立索引写文件这样一系列的工作都在磁盘上操作。效率肯定会受到影响频繁的IO读写对磁盘也是一种损害,那我们把本来构建在磁盘上的数据库表构建在内存上怎么样了?现在内存数据库技术已经相对成熟而且也支持事务唯一性SQL99等一般数据库的特性,所有的操作都是在内存中进行访问速度非常的快,一下是我做的测试.

H2内存模式与MySQL对比
H2_Mem(无索引)H2_Mem(有索引)MySQL_InnoDB(无索引)MySQL_InnoDB(有索引)
插入操作9106095155113050129374
更新操作392744011705721676
查询操作2045113464045408
注:对1000000数据操作
这个测试是在很老的PC上做的WINXP系统4G内存CPU是AMD的,如果在服务器LINUX操作系统应该结果差距会比这个大很多。我选用的内存数据库是免费开源的H2当然还有很多商业版更优秀的内存数据库可以选择而且买一套内存数据库的价格比起数据大牛orcale和他的内存数据库解决方案要便宜10倍以上。

二.架构介绍

1.整体架构说明

我们来看一下我做的一个架构图,在我构建的数据中心当中不但是包括了快数据的处理,还包括了快数据到大数据的同步,即时数据的访问离线数据的处理,处理后离线数据的


访问,以上全部采用开源框架的基础上来进行二次开发,这样保证了系统的稳定性与可扩展性。

2.模块说明

  整个数据中心有三大模块组成访问API层、即时数据处理层、离线数据处理层组成

2.1 API接口

2.1.1 客户接口

客户端接口包含两种接口访问方式,一种是提供给应用程序进行访问的API接口其中包括了数据库访问的所有接口,该层采用的是SPRING框架的DAO实现来实现对内存数据、mysql数据、数据缓存、HBASE数据库的访问,客户端程序可以通过API接口对数据进行增删改查(注:HBASE数据库只提供访问操作,里面存储的是离线数据处理后的数据结果)。客户端接口被分为两种数据的访问模式,一种是对内存数据库的访问接口,一种是对MYSQL数据的访问接口(这里不光是指H2或者MYSQL数据库,本例子中使用的是这两种数据库),选择哪种数据库接口也就是选择了哪种数据库方式来存储数据,这个要根据系统应用业务的不同来选择相应的数据库。这里既然使用了内存数据库为什么还要用分布式缓存了,在很多业务中特别是集群环境下分布式缓存来实现应用数据的同步是非常廉价方便的解决方案,同样也可以使用分布式缓存来提高某些特定数据的访问速度。

2.1.2 管理接口

管理接口主要是用于数据备份,数据中心集群监控,数据中心设备管理提供API接口,在该API接口的基础上可以开发出图形化的基于WEB或者客户端程序的管理平台,来对数据中心进行统一管理。

2.2 即时数据处理

2.2.1 内存数据库

内存数据库是主要用来存放更新频率高访问要求快的数据库表,这些表是磁盘数据库中数据表的一个映射,在数据中心启动时要将磁盘数据库中的表同步映射到内存数据库中,所有的数据库实时操作都是在内存数据库当中进行,操作完成后会通过JMS异步的将操作的数据更改映射到磁盘数据库中,并保持磁盘数据库与内存数据库中的数据相同,如果在同步时出现了失败该条记录将被记录到日志并进行重新同步。


2.2.2 磁盘数据库

磁盘数据库在数据中心当中是最重要的角色,因为他还是存储数据的关键,所有的数据都还是要同步到磁盘数据库中,因为内存数据库在系统断电时里面的数据就会消失,如果数据中心出现故障停机或者数据库挂掉了那么在内存中的数据就很容易丢失,那么我们在操作内存数据库的同时就必须将内存数据库的数据同步到磁盘数据库中,这个同步过程是通过JMS的方式来异步实现,必须保证每个同步消息的稳定不被丢失,所以每次同步成功后要发确认消息来保证数据已经成功同步。

2.3 离线数据处理

系统运维到一定时间后会产生大量的历史数据,对这些历史数据进行分析是非常重要的,我在这里采用了非常流行的HADOOP来做大数据的存储与分析。并建立一套数据传输的规则来实现即时数据到离线数据的传送以及结果的返回保存与访问。

2.3.1 即时数据与离线数据同步

在HADOOP中数据的存储格式是多样的如文本方式、顺序文件、MAP文件的方式来存储数据,对于要进行分析的数据要根据业务的不同来存储到HADOOP中,比如日志文件的分析最好是采用顺序文件的方式,而对于一般的数据我们可以采用简单的文本方式进行存储(实际上顺序文件一般用于排序使用,用来做数据分析最多的还是以文本方式存储),当然如何将数据导入到HADOOP中还有很多其它的方式,比如将数据存储到HBASE里面。而在这里最有效最简单的方式就是使用Sqoop将数据导入到HDFS中以文本的形式保存,在对数据进行加工处理,Sqoop非常的简便也非常轻巧很好使用直接各种数据。


2.3.2 数据分析

进行数据分析在HADOOP中有两种方式采用pig 脚本的方式或者是自编写MapReduce程序,这个要看Pig能否完成满足你的要求,如果pig无法满足需求就要自己编写MapReduce来处理数据。数据处理完成后可以使用HIVE来整理数据,并将整理后的数据存放到HBASE里面,在通过HBASE接口访问这些处理后的数据,对于一般的行业应用来说,离线数据分析主要还是用户行业内数据的分析处理。

2.4 数据备份数据安全

2.4.1 数据备份

数据库备份是一件非常重要但是往往被忽略的工作,特别是在一些小企业里面,数据库中甚至还保存着3年前的数据,对于数据备份可以通过管理API来指定计划实现热备份,将数据库中的历史数据移到历史库中,如果业务要求要对历史数据能够查询统计那么最好是根据你的业务做一个历史数据库将历史数据里面可以运算并集的数据放到该库的统计表里面,在使用时查询出来。而对于HADOOP当中的数据实际上集群已经做了数据容错也就是每个集群中数据最少都是有3个备份,当然为了安全还是需要做一些冷备的处理,比如将节点的硬盘进行复制,HADOOP的节点管理非常的方便可以在开机情况下扩展收缩节点。

2.4.2 数据安全

数据库安全从数据中心的角度考虑就不是数据库注入这样的程度了,比如云计算或者是金融产品当中使用数据中心就必须保证数据的可见权限是有限的,一般的程序员是没有权限去访问关键表的,每个表的字段只能通过程序才能访问到里面真实的内容。

三.结语

数据是企业的核心,稳定的数据保存快速的数据访问是IT企业必须要保证的,不要在重构系统了,那是因为一开始就没有规划好,停下脚步花花时间构建一个稳定的平台,这样才能决战未来,IT行业技术永远都是核心也是永远的竞争力。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/204453
推荐阅读
相关标签
  

闽ICP备14008679号