NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

在分布式数据库技术选型前,我们都考虑些什么?

  • 2020-04-15
  • 本文字数:1945 字

    阅读完需:约 6 分钟

在分布式数据库技术选型前,我们都考虑些什么?

对于许多金融企业(含互金)来说,在系统初始阶段,使用 ‘IOE’ 技术选型进行核心系统的搭建,似乎是种标配,但随着系统拆分的演进,从年初起,我们开始讨论数据库中长期规划的相关话题。


跟大多数金融行业的数据库选型一样,我们的核心系统运行在商业关系型数据库之上,而将大部分 QPS 交给分布式缓存来进行处理。

01. 为什么选择 MySQL 作为选型

在这一点上,通过大量的调研与大咖交流后,我们最初除 MySQL 外,还尝试了解过例如 PostgreSQL,TiDB 等其他不同种类的 DB,但最终选择了 MySQL,不是说 MySQL 最优秀,也不是其它 DB 不优秀,更重要的原因是 MySQL 可以对他们的业务模型在支撑上更方便一点,更重要的原因是其他数据库的人才难招、难管、难养活。


除此之外,其他数据库在国内社区没发展起来,用户及业务场景覆盖度不够广等原因,也是产生顾虑的主要来源,而反观 MySQL,无论社区还是产品成熟度,相对更加稳定、更加活跃。


大胆设想下,除非业务规模已处于 “扛不住了,不干就死了” 的地步,又有哪家强业务驱动型的金融企业,愿意建立 “一个看似华丽,投入又大的数据库团队” 呢?疯了吧?


以上这些原因,促使我们选择了 MySQL。

02. 为什么要开搞分布式数据库

简明扼要,列出思考的起始点(如与 Oracle 数据库相比):


  • 钱往哪花?购买商业数据库授权?还是用开源数据库+自主研发?

  • 服务越来越多怎么办?搞过 Oracle 的人都知道,面对越来越多的服务数量,及越来越小的服务颗粒,光存储设备的投入,就可以让你眼睛一辣。

  • 怎么上云?虽说现在 Oracle 12C 号称能够上云,但并不是所有的云厂商都能支持,就算能支持,也会开出个天价。

  • 数据越来越大怎么办?这点上,Oracle 有着完美的解决方案,但又不能光看这一项而忽略以上几项,可 MySQL(单/群)又无法满足,只能通过对数据的水平拆分,或者垂直拆分来进行加持。

  • 数据库管理的成本怎么投?这点上,Oracle 也属于完胜,但是该把这部分钱投在买商业管理软件上呢?还是投在自主研发上呢?如果选择商业路线,后期的维护可以跟上吗?


其实,以上五点未必都是“不用分布式数据库就会死”的核心理由,有些也只不过是借助这件事的推动,而期望获得的辅助收益罢了。


不管怎么说,数据库,一个系统(或者一家企业)的命脉,在业务发展进入稳定期之后,结合自身特点、技术价值观及中长期技术投入考虑,选定一个关系型数据持久化的技术选型进行长久的规划与孵化,是非常有必要的。

03. 分布式数据库有哪几种玩法

根据思考的起始点,我们整理出两种玩法,下面我以笔记的形式进行下罗列:


第一种:重量级中间层


大体上可以分为两类形态:


  • 商业形态:如腾讯云 DCDB、阿里云 DRDS。

  • 开源形态:如 MyCat、Cobar。


商业形态


把大部分关于数据库的操作通过数据库的中间价层来去实现,例如支持各种规则的分库和分表,支持分布式事物,支持各种分片节点的聚合等操作。


优点


  • 使用中间价来分担后端的数据库的压力。

  • 使用中间价来完成数据聚合,减少开发的代码逻辑。


缺点


  • 会产生一定购买中间价的费用。

  • 对于中间价和中间件厂商的依赖过大。如果中间件厂商不靠谱,毕竟代码不开源,那时候我们该应对?


开源形态


目前主流的开源 MyCAT 和 dble 等产品。dble 主要是针对 MyCAT 进行 bug 的修复和一些新功能的完善。目前社需活跃,修复 bug 还算及时。



图 1. MyCat 的系统拓扑图


优点


  • 相对商业化的产品,可能不需要依赖云平台,可以节约一定成本。

  • 代码开源,可以根据实际情况进行修改。


缺点


  • 部分功能的不支持,不如商业产品的完善 可靠。

  • 虽然代码开源,如要针对进行功能的添加和二次的修改,要么依赖社区或者厂商,要么自己招聘相关的工程师。


第二种:轻量级中间层


轻量级的中间价的开源产品主要有 proxysql,由国外工程师开发,目前社区活跃,修复 bug 和更新代码能力的频率还是挺好的。


中间价主要的工作就是,按照规则连接的转发。把前端的 SQL 解析,按照一定的路由规则,发配到后端数据库,然后数据库返回结果,并吐给前端应用。可以做到读写分离 或者分库等。



图 2. 自研 ProxySet 模式的系统拓扑图


优点


  • 相对商业化的产品,可能不需要依赖云平台,可以节约一定成本。

  • 代码开源,可以根据实际情况进行修改。


缺点


  • 不一定能满足我们的业务的场景,可能需要开发同学大力的配合。

  • 虽然不在过渡依赖中间价产品,但对后端的数据压力确增大了,这就意外后端的数据库需要更好的机器 更好的配置。


此外,也可以直接裸用 MySQL,简单粗暴的雇佣 20 个 DBA,1 人只管理一个 MySQL 实例,并配置最牛逼的机器,来解决目前的现状,想想也挺好的。


根据上述方案我们看到,对于体量较小的业务层,理论上采用第二种方案更经济实惠,而对于体量较大,并发性、稳定行要求较高的,理论上采用第一种方案更为稳妥。


本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/UsUOwbEWOmulGsmeY8lSFg


2020-04-15 16:46716

评论

发布
暂无评论
发现更多内容

龙智集团赢得2022年Atlassian与AWS云销售竞赛

龙智—DevSecOps解决方案

云原生

快速实现 CDN 直播

ZEGO即构

CDN 直播 音视频开发

MySQL 原理与优化:原数据锁的应用

老崔说架构

Neo4j导入思知OwnThink开源的知识图谱

Joshua

nlp neo4j 知识图谱

历时4个月,4大板块,328页52188字,SpringMVC源码解析文档

冉然学Java

Java spring Spring MVC 构架 Spring Web MVC、

如何开启企业数字化转型?

博文视点Broadview

5K字详解Java 注解及其底层原理

了不起的程序猿

Java 编程语言 后端 java程序员 java编程

一文了解如何托管SVN储存库,以及版本控制的更佳选择

龙智—DevSecOps解决方案

svn 版本控制 版本管理 版本控制系统

【8.5-8.12】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

RT-Thread记录(四、RT-Thread 时钟节拍和软件定时器)

矜辰所致

RT-Thread 8月月更

开源一夏 | Spring MVC深度学习

叶秋学长

开源 Spring MVC 8月月更

【LeetCode】用户分组Java题解

Albert

LeetCode 8月月更

一文读懂工业设备预测性维护的概念与实现

PreMaint

企业设备管理 预测性维护 设备健康管理 状态检测 振动监测

2022不容错过的50个“低代码”发展现状、趋势与数据统计

优秀

低代码 无代码

如何在 Anolis 8上部署 Nydus 镜像加速方案?

OpenAnolis小助手

Linux 开源 内核 龙蜥操作系统 容器镜像加速

ITSM入门指南 | IT团队如何向客户提供端到端的IT服务?

龙智—DevSecOps解决方案

ITSM ITSM软件 ITSM解决方案

一块GPU训练TB级推荐模型不是梦,OneEmbedding性能一骑绝尘

OneFlow

深度学习 gpu 模型

你要的 Helm Chart 应用金丝雀发布终于来了!

阿里巴巴云原生

阿里云 开源 云原生 KubeVela

CI与开源代码安全篇 | 龙智邀您共赴GOPS全球运维大会,探索大规模、敏捷、安全、开放式的软件研发与运营之路

龙智—DevSecOps解决方案

GOPS大会 运维‘

【分布式集群】微服务电商应用系统的集群构建

嚯嚯嚯www

Linux

机器学习/评分卡常用指标及计算

Joshua

机器学习 AI 信息熵 评分卡

Java面向对象之继承

楠羽

兆骑科创双创服务平台,招商引资、招企引税、招才引智

兆骑科创凤阁

开源一夏|eTS UI的Text组件怎么设置文本垂直排列

坚果

开源 OpenHarmony 8月月更

熬夜肝了这一份C++开发详细学习路线

C++后台开发

后台开发 C/C++ 后端开发 C++后台开发 C++开发

CI/CD | 使用静态代码分析工具,有效补充持续集成

龙智—DevSecOps解决方案

cicd 持续集成 CI/CD

什么是网络即服务 (NaaS)?

wljslmz

网络技术 8月月更 NaaS 网络即服务

兆骑科创创新人才引进,高端人才引进,项目落地引进

兆骑科创凤阁

Canvas 低代码拖拽建模,支持离线任务|ModelWhale 版本更新

ModelWhale

数据分析 Jupyter Notebook 课程 离线部署 低代码报告

融云 | 云办公时代,企业通讯录的技术选型

融云 RongCloud

企业 云办公

京东承办“创客北京2022” 京东科技参与并推出三大服务举措

京东科技开发者

数字化转型 供应链 企业服务 中小企业

在分布式数据库技术选型前,我们都考虑些什么?_数据库_头哥侃码_InfoQ精选文章