【摘要】随着互联网金融场景的不断拓展,海量的数据访问和处理形成传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究和场景使用应运而生,而数据的安全和合规也随着企业对数据使用的要求愈来愈高更加剧视。所以在这种场景下,分布式数据库应具有高性能、可扩展、高可用和高容错等特性,而传统的集中式数据库难以同时知足,本文重点介绍分布式数据的特性及种类,根据相应的业务场景对分布式数据库选型进行分析,并对分布式数据库的细分领域的发展进行探讨。
【做者】顾黄亮,十年技术老兵,历经研发和运维,了解基础架构、安全、中间件、数据库,专一于智慧运维体系的打造。曾供职于航天晨光、上汽集团云计算中心,现任苏宁消费金融安全运维部总监。
1 引言sql
近年来,随着国际信息安全形式的日益严峻,国家信息安全策略逐步深刻。所以,一行两会连续针对金融业数据库技术受制于人的严峻形势出台了相关政策,以知足构建安全可靠可控的信息技术体系的要求。数据库
纵观近年来普惠金融的发展,多用户、低额的客单价带来的主要挑战是数据量、交易额的大幅提升,并伴随着数十倍的交易高峰压力以及交易复杂度的增长。而传统数据库在处理此类应用场景的时,在扩展性、性能、吞吐量和可靠性等方面遇到了明显的瓶颈,只能经过业务拆分、升级硬件的方式来提高性能,形成设备投入和人员成本的不断攀升。面对着互联网金融业态不断的发展,数据的交互和存储也呈现指数级增加,这样的方式也没法保证业务连续性。在此形式下,在分布式数据库的选型上,根据不一样的业务场景和关键系统中选择不一样的开源产品,经过对开源数据库的深刻研究和应用,知足了互联网金融业务场景的事务处理和数据处理的要求。安全
2 传统数据库的那些事服务器
我的认为,分布式数据库是起源于传统的关系型数据库,二者的设计场景不一样,前者面对企业级应用,运行在独立的服务器上,然后者的应用更多的是面对互联网用户。随着用户相应的数据量极具增长,传统的关系型数据库在可扩展性的弊端日益显现,通常有下面几个方面:网络
(1)单点处理的性能瓶颈,即单点的数据库系统没法处理大规模的并发请求和计算;架构
(2)单点运行风险高,容灾容错能力差;并发
(3)单点存储能力有限,只能纵向扩展,不能横向扩展;负载均衡
(4)应用扩容升级难度大,设备投入高。框架
对于数据库自己来讲,传统的分布式数据库都有各自的集群解决方案,不过这不是真正意义上的分布式,仅仅是为了解决高可用场景下数据库的负载均衡问题。这种特性是每一个数据库都是冗余的,所谓冗余,那就是每一个数据库的数据都是彻底同样的,因此数据量上升到必定的程度,对集群中的每一个数据库都会形成很大的压力。运维
然而,云计算的出现引爆了这一切。当资源再也不是瓶颈的时候,分布式数据库的春天来了。
3 说说分布式数据库
分布式数据库的概念再也不阐述,大致描述就是数据库技术和网络技术的亲生孩子。在此,咱们为何选择分布式数据库,理由有以下:
(1)具备灵活的体系结构;
(2)适应分布式的管理和控制机构;
(3)经济性能优越;
(4)系统的可靠性高、可用性好;
(5)局部的应用响应快;
(6)优越的可扩展性,易于集成现有的系统。
那分布式数据库应该怎么用?基于分布式数据库的选型该怎么作?
首先,基于特性,分布式数据库大体能够分为三类:
(1)支持持久化存储的分布式存储系统,如MySQL,OceanBase;
(2)偏向于计算的分布式计算框架,如Hadoop HDFS,Ceph,Swift,Blob,Cinder,Lustre;
(3)分布式消息队列,如Redis,RMQ,CMQ,Kafka。
其次,基于不一样的应用场景,根据特性继续细化,又能够分为如下:
(1)分布式协同数据库系统;
(2)分布式任务;
(3)流式计算;
(4)分布式文件系统;
(5)分布式nosql存储;
(6)分布式关系数据库;
(7)分布式消息队列。
回到最核心的问题,如何进行分布式数据库技术路线的选择?
分布式通常分为三条技术路线:分布式访问客户端、分布式中间件模式、分布式数据库模式。其中分布式访问客户端对应用侵入性大,改造难度很高;分布式中间件则相似MyCAT等产品,在数据库和应用间架一层Proxy,这种方案没法支持分布式事务、也没法支持跨库关联,分布式数据库方案则将分库分表等中间件实现的功能下推到数据库层面来作,对应用透明,应用就像使用单机数据库来使用分布式数据库,同时自然地支持分布式事务。
4 经常使用的分布式数据库和场景选型
针对以上概述,列举ElasticSearch、Redis、MySQL分布式集群、MongoDB四个分布式数据库进行举例,分别从简介、应用场景、优势、缺点、备份/持久化进行对比和分析。其中MySQL分布式集群包括如下几种集群方式:Proxy,Cluster,Mha,Mgr,基于MySQL协议的NewSQL,如MyCAT,OceanBase不在此范围以内。
(1)简介
(2)应用场景
(3)优势
(4)缺点
(5)备份/持久化方案
5 项目中的一些问题
在项目中,针对分布式数据库的设计,通常有几个难点。
(1)分布式事务的问题,在分布式数据库中,分布式事务的实时一致性是很难保证的,而容错性的设计必定要考虑全面,经过牺牲相应的可用性来保证一致性。
(2)性能方面,为了保证事务的全局一致性,分布式数据库须要一个全局的事务管理器,用于分配全局事务的工做,不一样的分布式数据库或许有不同的功能,若是数据量和请求达到一个量级的时候,事务管理器或许就成为一个新的瓶颈。
(3)高可用的问题,当分布式数据库集群中有节点宕机的时候,宕机数量和选举工做会影响整个集群提供服务的质量,这一点跟业务的容忍性密切相关。
在运维阶段,针对分布式数据库是从认识、熟悉到通过的过程,一个新的产品或者功能的运维是离不开不少准备工做。所以,进入运维阶段,通常要考虑下面几步。
(1)准备好经常使用的运维脚本、应急手册、运维手册;
(2)作好分布式数据库的监控,尤为是关键指标的监控;
(3)技术手册的培训,准入条件的限制;
(4)按期作好演练工做,及时发现问题。
6 分布式数据库发展的一些思考
在企业中,对于新技术新产品的选型不只仅为了知足当前业务场景的需求,还要考虑到这个产品将来三到五年的发展道路和方向,以及是否可以不断迭代以知足将来的需求。所以,用户仅了解每一种技术的现状是远远不够的,只有当认识到一种技术的发展策略以及其架构的局限性后,才可以预见和洞察将来。架构局限性并不等于功能的缺失。不少新型技术 在开始时都没法提供像Oracle同样完备的企业级功 能,但并不意味着用户必需要等到所有功能完备后才 开始考虑学习和使用。用户在评估一种新产品和技术时,产品的功能点须要知足几个必备的基础功能,而一些高级功能则不须要马上具有。
对于分布式数据库来讲,随着业务场景和数据的使用处理方面的需求趋于成熟和明朗,分布式数据库的以场景和功能的区分更为细化,主要发展发现基本能够分为分布式联机数据库和分布式计算数据库两种,而针对非结构化小文件需求也在考验分布式数据库是否在这个领域可以打出一片天地,能够展望,小型的分布式的针对非结构化的文件存储数据库也可能后期的战场之一。
原做者:顾黄亮
原文连接: 分布式数据库的场景选型及趋势分析解读 - 顾黄亮 - twt企业IT交流平台
原出处:twt企业IT交流平台