• TIDB介绍 新数据库趋势


     

    TIDB是什么? 
    TIDB 受谷歌Spanner和F1的论文启发的new sql数据库,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性,同类数据库还包括巨杉数据库。

    TiDB的原理与实现 
    TiDB 架构是 SQL 层和 KV 存储层分离,相当于 innodb 插件存储引擎与 MySQL 的关系。

    有了 TiKV,TiDB 层只需要实现 SQL 层,再加上 MySQL 协议的支持,应用程序就能像访问 MySQL 那样去访问 TiDB 了

    TiDB的成功案例 
    目前今日头条,摩拜单车、凤凰网、游族网络等公司采用了TIDB数据库。 
    这些企业采用TIDB的主要原因包括:

    1. 兼容mysql
    2. 分布式存储,扩展能力强。
    3. 支持OLTP
    4. 可以直接利用TiSpark做实时分析。
    5. 稳定的高可用性
    6. 无阻塞在线DDL
    

    采用TIDB的公司需求具有的共同点:

    1. 拥有数亿以上记录的数据,希望在保持海量数据存储能力的前提下保留良好的OLTP性能和QPS性能
    2. 希望数据库拥有实时计算的能力

    TIDB的架构 
    TiKV Server:负责数据存储,是一个提供事务的分布式 Key-Value 存储引擎; 
    PD Server:负责管理调度,如数据和 TiKV 位置的路由信息维护、TiKV 数据均衡等; 
    TiDB Server:负责 SQL 逻辑,通过 PD 寻址到实际数据的 TiKV 位置,进行 SQL 操作。

    TiDB的特性

    1. 水平扩展:包括计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。
    2. 高可用:TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性
    

    TIDB的部署

    1. 因 TiDB 和 PD 对磁盘 IO 要求不高,所以只需要普通磁盘即可。
    2. TiKV 对磁盘 IO 要求较高。TiKV 硬盘大小建议不超过 500G,以防止硬盘损害时,数据恢复耗时过长。整个 TiDB 架构是面向未来、面向海量数据高并发场景,底层存储技术(如数据定位 seek)都是针对当前主流的 SSD 进行设计和优化的,不会对传统的 SATA/SAS 机械硬盘再进行优化。(参考凤凰网的部署方案)
    3. 部署工具使用了 TiDB-Ansible。TiDB-Ansible 是 PingCap 基于 Ansible playbook 功能编写了一个集群部署工具叫 TiDB-Ansible。使用该工具可以快速部署一个完整的 TiDB 集群(包括 PD、TiDB、TiKV 和集群监控模块)
    

    TIDB的监控方案 
    Pincap 团队给 TiDB 提供了一整套监控的方案,他们使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示。(参考今日头条的方案) 
    监控的原理:

    1. 在 client 端程序中定制需要的 Metric
    2. Push GateWay 来接收 Client Push 上来的数据,统一供 Prometheus 主服务器抓取。
    3. AlertManager 用来实现报警机制,使用 Grafana 来进行展示
  • 相关阅读:
    PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
    PHP中CURL方法curl_setopt()函数的参数
    elasticsearch中如何高效的使用filter
    elasticsearch与mongodb分布式集群环境下数据同步
    最完整的Elasticsearch 基础教程
    PHP 解析 ElasticSearch 的 json 方法,有關遍歷所有 json 元素
    分布式搜索引擎Elasticsearch PHP类封装 使用原生api
    [转] Form 表单数据处理 简单教程 formidable 使用心得
    [转] node升级到8.0.0在vscode启动js执行文件报错
    [转] babel的使用
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/10220969.html
Copyright © 2020-2023  润新知