- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
云计算架构下CloudTiDB的技术奥秘
?
?
近日,国内云计算服务商UCloud与国内开源分布式NewSOL数据库TiDB团队PingCAP正式达成合作,双方联手在UCloud全球数据中心推出了新一代TiDB的云端版本-CloudTiDB。
作为一款定位于Cloud-native的数据库,目前TiDB在云整合上已取得了阶段性进展。CloudTiDB产品在UCloud平台正式开启公测,TiDB弹性伸缩特性在Cloud提供的基础设施支持下得到了淋漓尽致地体现。在感受云数据库魅力的同时,让我们来探索—下TiDB与Cloud背后的技术秘密。
一、TiDB与传统单机关系型数据库的区别
首先,从TiDB的架构说起。TiDB作为一款开源的分布式数据库产品,具有多副本,能够根据业务需求非常方便地进行弹性伸缩,并且扩缩容期间对上层业务无影响。
TiDB的主体架构包含三个模块,对应Githuh上PingCAP组织下的三个开源项目(TiDB/TiKV/PD):
1)TiDB主要是负责SQL的解析器和优化器,它相当于计算执行层,同时也负责客户端接人和交互;
2)TiKV是一套分布式的Kev-Value存储引擎,它承担整个数据库的存储层,数据水平扩展和多副本高可用特性都在这一层实现;
3)PD相当于分布式数据库的大脑,一方面负责收集和维护数据在各个TiKV节点的分布情况,另一方面PD承担调度器的角色,根据数据分布状况以及各个存储节点的负载来采取合适的调度策略,维持整个系统的平衡与稳定。
上述三个模块中的每个角色都是一个多节点组成的集群,所以最终TiDB的架构如图1所示。
由此可见,分布式系统本身的复杂性不仅导致人工部署和运维成本较高,而且容易出错。传统的自动化部署运维T具(如Puppet/Chef/SaltStack/Ansihle等),由于缺乏状态管理,在节点出现问题时不能及时自动完成故障转移,需要人工干预,有些则需要写大量DSL甚至与Shell脚本一起混合使用,可移植性较差,维护成本比较高。
在云时代,容器成为应用分发部署的基本单位,谷歌基于内部使用数十年的容器编排系统Borg经验,推出的开源容器编排系统Kuhernetes就成为当前容器编排技术的主流。
二、TiDB与Kubernetes的深度整合
作为CloudNativeDatahase,TiDB选择拥抱容器技术,并与Kuhernetes进行深度整合,使其可以非常方便地基于Kuhernetes完成數据库白动化管理。甚至可以说Kuhernetes项目是为Cloud而生,利用云平台IaaS层提供的API可以很方便地与云进行整合。这样只要让TiDB与Kuhernetes结合得更好,进而就能实现其与各个云平台的整合,使TiDB在云上的快速部署和高效运维成为现实。
1.Kubernetes简介
Kuhernetes最早是作为一个纯粹的容器编排系统而诞生,用户部署好Kuhernetes集群之后,直接使用其内置的各种功能部署应用服务。由于这个PaaS平台使用起来非常便利,吸引了很多用户,不同用户也提出了各种不同需求,有些特性需求Kuhernetes可直接在其核心代码里实现,但有些特性并不适合合并到主程序中。
为了满足这类需求,Kubernetes开放出一些API供用户自己扩展,实现自身需求。当前Kuhernetes已经升级到1.8版本,内部API变得越来越开放,使其更像是一个跑在云上的操作系统。用户可以把它当作一套云的SDK或Framework来使用,而且可以很方便地开发组件来扩展满足自身业务需求,对有状态服务的支持就是一个代表性实例。
在最早期,Kuhernetes项目只支持无状态服务(StatelessService)来管理,无状态服务通过ReplicationController定义多个副本,由Kuhernetes调度器来决定在不同节点上启动多个Pod,实现负载均衡和故障转移。对于无状态服务,多个副本对应的Pod是等价的,所以当节点出现故障时,在新节点上启动一个Pod与失效的Pod是等价的,不会涉及状态迁移问题,因而管理非常简单。
2.有状态服务StatefulService
不过,对于有状态服务(StatefulService),由于需要将数据持久化到磁盘,使得不同Pod之间不能再认为成等价,也就不能再像无状态服务那样随意地进行调度迁移。Kuhernetesl.3版本提出PetSet的概念,用来管理有状态服务并在1.5版本中将其更名为StatefulSet。
StatefuISet明确定义了一组Pod中的每个身份,启动和升级都按特定顺序来操作。另外,使用持久化卷存储(PersistentVolume)来作为存储数据的载体,当节点失效Pod需要迁移时,对应的
您可能关注的文档
- 中学物理教学应关注天文和空间技术的发展.docx
- 信息技术下问题解决导向式教学模式浅谈.docx
- 制造业企业预算管理的困境及对策探索.docx
- 信息技术融入小学美术教学的方式和策略.docx
- 中国疫苗发展史.docx
- 信息技术下小学语文教学中学生阅读能力的培养.docx
- 一种水泵叶片自动化上料系统设计.docx
- 中学计算机与信息技术教学的主要问题及对策.docx
- 中国应对新贸易保护主义挑战的对策-金融危机.docx
- 中国石化高清视频会议系统的功能特点及应用分析.docx
- 大学生职业规划大赛《新闻学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《应用统计学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《中医学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《信息管理与信息系统专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《水产养殖学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《市场营销专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐表演专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
文档评论(0)