时间:2024-05-04
陈宇收
摘要
随着城市汽车保有量的累年增多,传统的使用关系型数据库存储交通生产数据的解决方案缺陷逐渐暴露,具体表现在存储容量达到上限、存取效率随着存储数据增多逐渐变慢等,不但给数据存储、维护带来了极大不便,而且还影响到正常交通业务的开展,因此,迫切需要改变通过Mycat技术体系的应用,不但解决了交通大数据的存储瓶颈,而且通过基于Mycat建立的高可用数据库存储方案的设计,还保障了数据存储能够持续、不间断的提供访问支持,保障了交通大数据存储能够高质量、高效率的进行。
【关键词】Mycat 交通大数据 分布式 数据存储
1 引言
随着人们生活质量的提高以及汽车行业的飞速发展,使得汽车购置出现了爆炸式的增长,直接导致了针对车辆的过车数据、违章数据等呈现直线上升,并逐渐积累成一定规模的海量数据,不但给传统的数据管理工作带来了极大负担,而且如何有效的完成这些新增数据的存储管理,并实现对这些数据的高效、准确、便捷分析,最终为构建安全便捷、畅通高效、绿色智能的交通管理体系提供数据依据已经成为当前交通大数据存储研究的重点。
在大数据存储领域,当前主流的解决方案为Hbase数据库、Hive数据仓库以及传统结构化的解决方案Oracle RAC等,其中Hbase虽然通过分布式存储方案能够有效完成交通大数据的存储,但由于其数据存储为非结构化,不支持使用SQL语句完成交通数据记录的高效存取,所以针对交通大数据频繁的记录筛选应用存在一定的不足;Hive数据仓库在应用时,虽然其凭借结构化的存储模式能够较好的支持SQL语言的统计、分析,但是由于其定位在数据仓库存储,对单个记录的输入、变更及删除支持不友好,而交通大数据是实时单个记录的生产方式,所以也不宜采用;Oracle RAC虽然兼顾了结构化存储以及海量数据存储等应用需求,然而由于Oralce为商业软件,成本昂贵,所以当建设Oracle RAC集群时,其成本势必高昂,不利于商业化推广。
为了支援湖南省吉首市智慧城市建设,同时也为了改善吉首市当前拥堵的交通状况,由深圳市赛为智能股份有限公司为其建设了智能交通综合管控大数据平台,实现对其城市交通大数据的采集、存储、分析及调度,不但提升了吉首市交通运转服务能力,而且通过交通网络的优化调配,更方便民众出行。另外,在平台建设时,数据存储采用了多个低成本的单机MySQL数据库进行分布式集群管理,不但实现了数据存储“云”端的平滑迁移,而且还解决了其交通大数据不断增长的数据存储容量瓶颈,而这一切归功于分布式数据存储管理中间件Mycat的应用。
2 Mycat概述
2.1 Mycat定义
Mycat是一款基于阿里开源项目Cobar的开源分布式数据库系统,虽然其是针对MySQL协议的Server实现,但是其却能够兼容Oralce、SQL Server以及PostgreSQL等数据库实现,并提供和原生数据库一致的命令访问支持,因此,对用户而言是Mycat是透明的,不会增加任何学习及使用负担。Mycat在设计时,虽然提供了故障切换、主从分离、多租户方案、分布式事务、WIB监控、IP黑白名单等功能,但是其核心功能却是对数据的水平切分存储,进而实现特定业务海量数据的高效存储及应用,这也是交通大数据存储方案设计的重点。
2.2 Mycat原理
Mycat在应用时,其原理是将用户所有请求SQL语句进行拦截,然后根据配置规则对拦截的SQL语句进行必要的语义分析,包括路由、分片以及读写分离等,然后根据语义分析结果,将SQL语句发送到后端真实数据库中执行,并对执行的数据结果再进行必要的处理,最后返回给用户。
在交通大数据存储方案设计时,主要应用了Mycat的分片存储功能,其原理是使用多个不同的服务器节点完成数据的水平拆分存储,拆分算法包括时间分片算法、取模分片算法以及Hash分片算法等,进而利用每个服务器节点的存储资源完成数据的存储及运算,最终提升完整数据的存储及运算性能,由于采用这种分片策略,对单个存储服务器节点硬件资源要求不高,且可以根据存储需要理论上无限扩容节点,所以该方案具备成本低、性能高且易扩展等特点,因此能够为交通大数据存储提供理论上的无限支持。
3 基于Mycat存储架构设计
在交通大数据存储方案设计时,为了给应用系统提供简单、稳定、可靠、不间断的数据存储、访问支持,就需要在其存储方案设计时,进行必要的优化设计。根据这一目标需求,结合当前交通大数据高可用存储解决方案综合考虑,设计了吉首市交通大数据存储架构方案,如图1所示。
由图1可知,在交通大数据高可用存储架构设计时,物理数据库使用了开源的MySQL数据库,并使用Mycat完成物理库的分布式管理,最后通过Haproxy负载均衡器提供访问支持。在具体设计时,针对每一个数据存储节点dataHost,均进行了主从复制、读写分离设计,其中主从复制使用MySQL的binlog日志实现,而读写分离则利用了Mycat提供的功能特性,当需要执行SQL写操作时,Mycat将SQL语句发送到WriteHost主机执行,当需要进行SQL读操作时,将SQL发送到ReadHost读主机进行,不但提高了数据库的读写操作效率,而且当其中一个数据库发生异常时,Mycat通过提供的心跳检测机制能够快速发现异常,并及时的完成可用数据库切换,进而保障了数据库能够不间断的提供数据存取支持。在Mycat部署时,为了提高Mycat的高可用性,部署了两套完全一样的Mycat服务,并由负载均衡器Haproxy进行访问,不但提高了Mycat的容错能力,提供更持续、稳定的服务支持,而且还可以对用户访问进行分流,提升系统的处理性能。另外,在负载均衡器Haproxy部署時,考虑到单个节点的负载均衡器还存在故障拒绝访问的可能,所以也部署了两套一样的负载均衡器提供高可用切换,并采用Keepalive死连接检测机制提供抢占IP的访问入口。
4 Mycat部署
根据Mycat高可用存储架构设计方案,对交通大数据存储系统进行了部署实现,其中核心应用部署包括MySQL,Mycat以及Haproxyo
4.1 MySQL
在交通大数据存储数据库部署时,考虑到存储数据包括两个不同类别,其中当数据总量不会超过单表存储容量时,比如用户信息,则使用传统数据表存储,而当存储数据不可预估容量时,比如过车数据,则使用Mycat进行必要的分库分表存储。根据吉首市当前的车辆保有量进行估算,在MySQL安装时,共创建了3组6个数据库实例,其中1组实例用于存储不需要分片的数据存储,而另外2组则实例则是分片存储实例,分配IP段为10.1.1.1 至10.1.1.6,其中10.1.1.4至10.1.1.6段的数据库实例为10.1.1.1至10.1.1.3段数据库实例的从库,在数据库安装后,配置主从关系即可,其中主库创建可用数据复制账号、密码命令:
grant replication slave on*.*toslave@'10.1.1.1'identified by'123456';
从库开启复制命令:
CHANGE MASTER TO MASTERHOST='10.1.1.1'MASTER_USER='slave'
MASTER_PASSWORD='123456'MASTER_PORT-3306 MASTER_AUTO_POSITION=1;
4.2 Mycat
在Mycat应用部署时,根据交通大数据业务需求,需要配置逻辑库、逻辑表以及分片规则等,进而通过Mycat与后端Mysql数据库建立一对多的分布式关系,而对用户操作而言,还是针对唯一的逻辑库、逻辑表进行,不但提高了数据库的数据存储能力,而且对用户完全透明,不会增加新的使用负担。
4.2.1 逻辑库
逻辑库是用户直接操作的数据库集群对象,它底层是将一个或多个不同的物理库进行集群管理,进而实现对存储大数据的分片管理,解决数据的存储瓶颈。在交通大数据存储方案设计时,为了不增加逻辑库操作的复杂性,配置了和底层物理库名称一致的逻辑库,并允许根据业务数据量的增长,自定义的拓展分片数量。部分核心配置如下:
database="its_passing_record$1-365">
select user()
配置和物理数据库一致的逻辑数据库访问账号及密码,如下:
123456
its
4.2.2 逻辑表
逻辑表即是用户进行数据存取实际操作的数据集对象,其根据是否分片存储数据分为分片表、非分片表、全局表三个不同类型。
(1)分片表。针对MySQL物理表单表存储容量超过800万会存在较为严重的存取性能问题,所以当预估存储数据量超过此数量时,就需要根据业务数据量的不同,进行必要的分片存储,进而降低单个数据表的存储容量,提高数据的存取效率。根据交通大数据的业务需求,对其中过车数据按日进行分片存储,设计如下:
1.1.3 :3306" password="123456" user=",,root,,">
<readhost host="it="" ostsl"url="10.
1.1 .6:3306"user="root"password,,123456"/>
(3)全局表。全局表在应用时,主要是针对需要进行关联查询的分片数据表而设计,其目的是在每个分片数据表所在的数据库中设计相同的全局表,进而提升数据的关联查询效率,其和普通的非分片数据表的区别是在相应节点上增加type "global"属性即可。
4.2.3 分片规则
在交通大数据存储时,为了完成这些大容量数据的有效组织、存储,进而提高数据的存取效率,就需要根据存储业务数据的不同,制订合适的分片规则。根据过车数据的存储需求,制订了按日分片的策略,如下:
cap date
pdate
yyyy-MM-dd
2017-10-09
2018-10-08
1
4.3 Haproxy
在Haproxy安装部署时,根据官方规范编译安装即可,并且在部署时,为了提高Haproxy的高可用性,也是部署了两套完全一样的实例提供访问支持,分别部署在10.1.1.31与10.1.1.32主机上。在Haproxy安装之后,即可对其进行Mycat的负载均衡配置,核心配置如下:
listen allmycat_service 10.1.1.31:8096
mode rep
option tcplog
option httpchk OPTIONS*HTTP/1.1\r\n]lost:\www
balance roundrobin
server mycat_01 10.1.1.21:8066 checkport 48700 inter 5s rise 2 fall 3
server mycat_02 10.1.1.22:8066 checkport 48700 inter 5s rise 2 fall 3
timeout server 20000
由此可知,在针对Haproxy配置时,需要指定当前实例主机IP以及负责调配的Mycat实例对象,并使用8096端口提供数据库访问支持。
5 总结
通过Mycat技术的应用,对多个不同的物理数据库进行分布式集群管理,进而将现有的单机业务数据库平滑迁移到云端,不但充分利用了各个数据库实例的单机数据存取能力,提高海量数据的存取效率,而且由于采用了分布式的集群管理模式,集群中的数据库在不影响现有业务开展前提下,能够任意的增加实例,所以有效解决了交通大数据存储的瓶颈问题。另外,通过Haproxy、Keepalive等工具的应用,实现了交通大数据存储的高可用,能够为交通大数据的存储提供持续、不间断的存取支持,进而为业务系统的稳定、可靠应用提供了保障。
参考文献
[1]周智.基于Mycat的分布式数据库在运营商IT系统转型中的实现与探索[J].电脑知识与技术,2018(15):25-27.
[2]王锦,梁正和,王法强.表广播机制在MyCat中的实现[J].计算机技术与发展,2017(03):42-46.
[3]黃达文.科学运用大数据推动城市交通智能化发展[J].数字通信世界,2018(01):127-127.
[4]陈晏.运用大数据缓解城市交通拥堵[J].中国人大,2018(09):45-46.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!