作者 | 沈剑
成都创新互联专注于中大型企业的网站制作、网站建设和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上千余家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站设计和互联网程序开发,在前进的路上,与客户一起成长!
在做业务架构的过程中,你是否遇到过类似的痛点?
(1)数据量太大,容量复杂性上移到业务层;
(2)并发量太大,性能复杂性上移到业务层;
(3)前台与后台存储异构,满足不同查询需求;
(4)线上与线下存储异构,满足大数据需求;
(5)存储系统迁移成本高,不敢轻易做重构;
(6)...
职业生涯十五年,基本都在使用MySQL做线上业务的存储。最近这几年,遇到的问题慢慢多起来,严重影响了研发效率。TiDB近年甚火,于是最近做了一些调研,与大家分享。
如一贯风格,更多的聊:TiDB究竟解决什么问题,以及为什么这么设计,体现什么架构思想。
上面这幅MySQL体系结构图,相信很多人都见过:
画外音:太复杂了,字都看不清了。
对MySQL体系结构做了一个简化:
如上图所示:
画外音:对不起,忍一下我画的丑图。
核心的服务端,又主要分为两层:
计算层和存储层,既然都在一个MySQL进程里,所有的CPU资源,内存资源都是共享的,势必存在资源争抢的耦合。
除了天生的不足,在数据量大,并发量大的典型互联网业务场景里,对于MySQL的使用,还有哪些痛点呢?
我们都知道,当读写量增加的时候,通常会对MySQL做主从分组集群:
如上图所示:主从同步,读写分离,通过线性增加从库来线性扩展系统的读性能。
画外音:大部分业务,读容易成为主要矛盾。
我们也知道,当存储容量增加的时候,通常会对MySQL做水平切分集群:
如上图所示:用一个键值进行数据分片,以实现更大的存储容量。
所以,实际上线上的MySQL集群是这样的:
而分片和分组,都是调用方微服务需要关注的,这就引出了下一个痛点:
另外,除了在线应用,绝大部分互联网公司都有各类大数据处理的需求:
为了满足这类需求,又需要将MySQL中的数据同步到各类大数据体系的集群中:
用一系列大数据的技术体系,去解决各类大数据处理的需求。
这就引出了另一个痛点:
当然,很多技术管理者也会调研各类替代产品,以解决上述1-3的问题,例如NoSQL的代表之一MongoDB,无奈【4】升级迁移需要大量的系统改造,综合评估之后,往往不得不放弃迁移方案,继续忍受MySQL带来的各种问题。
历史的痛点,往往是创新的机会。
TiDB,它来了!
TiDB是如何设计,以解决:
(1) 计算与存储耦合;
(2) 存储底层的复杂性转移;
(3) 大数据体系复杂性转移;
(4) 系统迁移成本高;
等问题的呢?
首先,TiDB在诞生之初,就确定了:
的设计大方向。
如上图所示:
如此一来,难题 (1) 和 (4) 就得到了解决。
对于计算层,实现连接池,语法分析,语义分析,查询优化等模块,做到无状态,并通过集群的方式扩展,这就是TiDB体系结构中的“计算引擎tidb-server”集群。对于调用方,接入层TiDB集群就是入口,其背后的复杂性对上游不可见。上图中,简记为【接入层(计算层)】。
画外音:微服务架构中,站点应用和微服务层也必须无状态化,以实现轻易的集群扩展,也是一个道理。
对于存储层,实现一致性算法,分布式事务,MVCC并发控制,算子下推等模块,实现原子KV存储,也能通过集群的方式自动扩展,这就是TiDB体系结构中的“存储引擎TiKV-server” 集群。上图中,简记为【存储层】。
画外音:这与GFS中的chunk-server很像,有了它,不再需要手动水平切分扩容了。
除此之外,需要一个拥有全局视野,实现元数据存储,ID分配(key-id,事务ID),时间戳生成,心跳检测,集群信息收集等模块的master,这就是TiDB体系结构中的“PD-server”集群。上图中,简记为【管理层】。
画外音:这与GFS中的master-server很像。
如此一来,难题 (2) 存储底层读写容量与存储容量的复杂性转移问题,也得到了解决。
大数据体系的复杂性,TiDB也将其屏蔽在了内部:
画外音:TiKV和TiFlash分别独立存储,且进行异步数据同步,彼此解耦。
如此一来,难题 (3) 大数据数据同步,数据一致性,大数据集群的复杂性的问题,也得到了解决。
TiDB的架构,无处不体现着这样的设计原则:使用者简单易用,复杂麻烦的地方,都屏蔽到TiDB的内部。
回到开篇,如果你也正经历着类似的痛点?
不妨,试一试TiDB。
从MySQL到TiDB的迁移过程也非常平滑:
(1) 第一步,保持服务读写原有MySQL集群;
(2) 第二步,将原有MySQL集群中的数据,同步到TiDB;
画外音:TiDB的工具集很全,本文没有扩展介绍。
(3) 第三步,服务流量切换至TiDB;
画外音:由于保持MySQL协议,业务代码几乎不用修改,这是TiDB能够成功很重要的一个原因。
今天聊了聊TiDB体系结构的宏观设计原则,希望大家有收获。如果对TiDB的内核感兴趣,未来可以和大家聊聊它的实现细节。
画外音:大家感兴趣吗?
源码:https://github.com/pingcap/tidb
网页题目:秒换存储引擎,又多了一种架构方案?
地址分享:http://www.mswzjz.com/qtweb/news14/202064.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联