什么是TiDB?
TiDB平台是一组组件 , 当它们一起使用时 , 它们将成为具有HTAP功能的NewSQL数据库 。

文章插图
图1 TiDB平台架构
在TiDB平台内部 , 主要组件如下:
- TiDB服务器是一个无状态的SQL层 , 它处理用户的SQL查询 , 访问存储层中的数据 , 并将相应的结果返回给应用程序 。它与MySQL兼容并且位于TiKV之上 。
- TiKV服务器是数据持久存在的分布式事务键值存储层 。它使用 Raft共识协议进行复制 , 以确保强大的数据一致性和高可用性 。
- TiSpark集群也位于TiKV之上 。它是一个Apache Spark插件 , 可与TiDB平台配合使用 , 支持商业智能(BI)分析师和数据科学家的复杂在线分析处理(OLAP)查询 。
- 放置驱动程序(PD)服务器是由 etcd支持的元数据集群 , 用于管理和调度TiKV 。
TiDB的主要功能
TiDB的主要功能包括:
- 水平可扩展性 。
- MySQL兼容之语法 。
- 具有强一致性的分布式事务
- 云原生架构 。
- 使用HTAP进行最小提取 , 转换 , 加载( ETL) 。
- 容错和Raft恢复 。
- 在线架构更改 。
在本节中 , 我将向您展示如何在Moneta的架构中运行TiDB以及Moneta应用程序的性能指标 。
我们架构中的TiDB
我们在系统中部署了TiDB , Moneta应用程序的整体架构变为:
- 顶层:无状态和可伸缩的客户端API和代理 。这些组件易于扩展 。
- 中间层:软状态组件和分层redis缓存作为主要部分 。当服务中断时 , 这些组件可以通过恢复保存在TiDB群集中的数据来自我恢复服务 。
- 底层:TiDB集群存储所有有状态数据 。它的组件高度可用 , 如果节点崩溃 , 它可以自我恢复其服务 。

文章插图
知乎的Moneta应用程序中的TiDB架构
在该系统中 , 所有组件都是可自我恢复的 , 整个系统具有全局故障监视机制 。然后 , 我们使用 Kubernetes来协调整个系统 , 以确保整个服务的高可用性 。
TiDB的性能指标
由于我们在生产环境中应用了TiDB , 因此我们的系统具有高可用性和易于扩展性 , 并且系统性能得到显着改善 。
例如 , 在2019年6月为Moneta应用程序采用一组性能指标:
在高峰时间每秒写入40,000行数据 。

文章插图
每秒写入的数据行(数千)
在高峰时段每秒检查30,000个查询和1200万个帖子 。

文章插图
每秒写入的数据行(数千)
第99百分位响应时间约为25毫秒 , 第999百分位响应时间约为50毫秒 。实际上 , 平均响应时间远远小于这些数字 , 即使对于需要稳定响应时间的长尾查询也是如此 。

文章插图
第99百分位响应时间

文章插图
第999百分位响应时间
我们学到了什么?
我们迁移到TiDB并非顺利 。在这里 , 我们想分享一些经验教训 。
更快地导入数据
我们使用TiDB数据迁移(DM)来收集MySQL增量binlog文件 , 然后使用 TiDB Lightning将数据快速导入TiDB集群 。
令我们惊讶的是 , 将这1.1万亿条记录导入TiDB只用了四天时间 。如果我们逻辑地将数据写入系统 , 可能需要一个月或更长时间 。如果我们有更多的硬件资源 , 我们可以更快地导入数据 。
推荐阅读
- 适合夏季自驾的4条路线,沿途风景美上天,6-8月出发刚刚好
- 民间借贷中借条上的这几个陷阱你知道吗?文中附解决办法
- 霍山黄芽如何保存,霍山黄芽保存条件
- 店铺转让注意哪些事项 淘宝店铺转让条件
- 职场故事|要不要先考个事业编,再备考来年的公考?要注意这个限制条件!
- 国内最美的10条公路,哪个你最喜欢?有车的朋友必须要来打卡哦
- 黄茶的储存方法及条件,霍山黄芽储存方法
- 黄茶保存时间,霍山黄芽保存条件
- 芝加哥|人在职场,工作压抑很正常,不用怕,四条法则帮你忙
- 原来“包菜炒粉条”要这样做,难怪以前炒粉条老粘锅,技巧全在这
