

数据分区:OceanBase数据架构的基本单元,是传统数据库的分区表在分布式系统上的实现。
高可用+强一致:多副本+Paxos协议,保证数据(日志)写(持久化)到三台机器中至少两台 (每个Zone中基线数据分布在ChunkSever上,有两个或三个副本,增量数据在UpdateSever上是一主一备)

ObProxy:百万级处理能力的代理,路由转发,轻量级SQLParser,无状态
金融级数据可靠性需求
金融环境下通常对数据可靠性有更高的要求,OceanBase每一次事务提交,对应日志总是会在多个数据中心实时同步,并持久化。即使是数据中心级别的灾难发生,总是可以在其他的数据中心恢复每一笔已经完成的交易,实现了真正金融级别的可靠性要求。

让数据库适应飞速增长的业务
业务的飞速成长,通常会给数据库带来成倍压力。OceanBase作为一款真正意义的分布式关系型数据库,由一个个独立的通用计算机作为系统各个节点,数据根据容量大小、可用性自动分布在各个节点,当数据量不断增长时,OceanBase可以自动扩展节点的数量,满足业务需求。

连续不间断的服务
企业连续不间断的服务,通常意味着给客户最流畅的产品体验。分布式的OceanBase集群,如果某个节点出现异常时,可以自动剔除此服务节点,该节点对应的数据有多个其他副本,对应的数据服务也由其他节点提供。甚至当某个数据中心出现异常,OceanBase可以在短时间内将服务节点切换到其他数据中心,可以保证业务持续可用。




TiDB Server 负责接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需数据的TiKV地址,与TiKV交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(LVS、HAProxy或F5)对外提供统一的接入地址。
Placement Driver(简称PD)是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个Key存储在那个TiKV节点);二是对TiKV集群进行调度和负载均衡(如数据的迁移、Raft group leader的迁移等);三是分配全局唯一且递增的事务ID。
PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署3个节点。PD在选举的过程中无法对外提供服务,这个时间大约是3秒。
TiKV Server 负责存储数据,从外部看TiKV是一个分布式的提供事务的Key-Value存储引擎。存储数据的基本单位是Region,每个Region负责存储一个Key Range(从StartKey到EndKey的左闭右开区间)的数据,每个TiKV节点会负责多个Region。TiKV使用Raft协议做复制,保持数据的一致性和容灾。副本以Region为单位进行管理,不同节点上的多个Region构成一个Raft Group,互为副本。数据在多个TiKV之间的负载均衡由PD调度,这里也就是以Region为单位进行调度
一键水平扩容或者缩容,得益于TiDB存储计算分离的架构设计,可按需对计算、存储分别进行在线扩容、缩容,调整过程中对应用运维人员透明。
金融级高可用数据采用多副本存储,数据副本通过Multi-Raft协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。
实时HTAP 提供行存储引擎TiKV、列存储引擎TiFlash两款存储引擎,TiFlash通过Multi-Raft Learner协议实时从TiKV复 制数据,确保行存储引擎TiKV和列存储引擎TiFlash之间的数据强一致。TiKV、TiFlash可按需部署在不同的机器,解决HTAP资源隔离的问题。
云原生的分布式数据库专为云而设计的分布式数据库,通过TiDBOperator可在公有云、私有云、混合云中实现部署工具化、自动化。
兼容MySQL5.7协议和MySQL生态兼容MySQL5.7协议、MySQL常用的功能、MySQL生态,应用无需或者修改少量代码即可从MySQL迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。
对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景。众所周知,金融行业对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高。传统的解决方案是同城两个机房提供服务、异地一个机房提供数据容灾能力但不提供服务,此解决方案存在以下缺点:资源利用率低、维护成本高、RTO(RecoveryTimeObjective)及RPO(RecoveryPointObjective)无法真实达到企业所期望的值。TiDB采用多副本+Multi-Raft协议的方式将数据调度到不同的机房、机架、机器,当部分机 器出现故障时系统可自动进行切换,确保系统的RTO<=30s及RPO=0。
对存储容量、可扩展性、并发要求较高的海量数据及高并发的OLTP场景。
随着业务的高速发展,数据呈现爆炸性的增长,传统的单机数据库无法满足因数据爆炸性的增长对数据库的容量要求,可行方案是采用分库分表的中间件产品或者NewSQL数据库替代、采用高端的存储设备等,其中性价比最大的是NewSQL数据库,例如:TiDB。
TiDB采用计算、存储分离的架构,可对计算、 存储分别进行扩容和缩容,计算最大支持512节点,每个节点最大支持1000并发,集群容量最大支持 PB级别。
Real-time HTAP场景。随着5G、物联网、人工智能的高速发展,企业所生产的数据会越来越多,其规模可能达到数百TB甚至PB级别,传统的解决方案是通过OLTP型数据库处理在线联机交易业务,通过ETL工具将数据同步到 OLAP型数据库进行数据分析,这种处理方案存在存储成本高、实时性差等多方面的问题。TiDB在4.0版 本中引入列存储引擎TiFlash结合行存储引擎TiKV构建真正的HTAP数据库,在增加少量存储成本的情况 下,可以同一个系统中做联机交易处理、实时数据分析,极大地节省企业的成本。
数据汇聚、二次加工处理的场景。 当前绝大部分企业的业务数据都分散在不同的系统中,没有一个统一的汇总,随着业务的发展,企业的决策层需要了解整个公司的业务状况以便及时做出决策,故需要将分散在各个系统的数据汇聚在同一个系统并进行二次加工处理生成T+0或T+1的报表。传统常见的解决方案是采用ETL + Hadoop来完成, 但Hadoop体系太复杂,运维、存储成本太高无法满足用户的需求。与Hadoop相比,TiDB就简单得多, 业务通过ETL工具或者TiDB的同步工具将数据同步到TiDB,在TiDB中可通过SQL直接生成报表。
TiDB v4.0在稳定性、易用性、性能、安全和功能方面进行了大量的改进
TiDB 凭借领先的技术能力及完善的商业服务支持体系,帮助金融、互联网、零售、物流、制造、公共服务等行业用户构建面向未来的数据服务平台。
目前,TiDB 已在全球超过 1500 家头部企业的生产环境中得到应用,包括 中国银行、光大银行、浦发银行、浙商银行、北京银行、微众银行、亿联银行、中国银联、中国人寿、平安人寿、陆金所、中国移动、中国联通、中国电信、中体骏彩、国家电网、理想汽车、小鹏汽车、VIVO、OPPO、百胜中国、中国邮政、顺丰速运、中通快递、腾讯、美团、京东、拼多多、小米、新浪微博、58同城、360、知乎、爱奇艺、哔哩哔哩、Square(美国)、Dailymotion(法国)、Shopee(新加坡)、ZaloPay(越南)、BookMyShow(印度) 等。

Cassandra是一个开源的、分布式、无中心节点、弹性可扩展、高可用、容错、一致性协调、面向列的NoSQL数据库

客户端连接到某一节点发起读写请求时,该节点充当客户端应用与集群中拥有相应数据节点间的桥梁,称为协调者,以根据集群配置确定环(ring)中的哪个节点应当获取这个请求。
使用CQL连接指定的-h节点就是协调节点

分区器决定了数据如何在集群内被分发。在Cassandra中,table的每行由唯一的primarykey标识,partitioner实际上为一hash函数用,以计算primary key的token。Cassandra依据这个token值在集群中放置对应的行。
Cassandra提供了三种不同的分区器
每个虚拟节点对应一个token值,每个token决定了节点在环中的位置以及节点应当承担的一段连续的数据hash值的范围,因此每个节点都拥有一段连续的token,这一段连续的token,组成了一个封闭的圆环。
没有使用虚拟节点, Ring环的tokens数量=集群的机器数量. 比如一共有6个节点,所以token数=6.因为副本因子=3,一条记录要在集群中的三个节点存在. 简单地方式是计算rowkey的hash值,落在环中的哪个token上,第一份数据就在那个节点上,剩余两个副本落在这个节点在token环上的后两个节点.
图中的A,B,C,D,E,F是key的范围,真实的值是hash环空间,比如0~2^32区间分成10份.每一段是2^32的1/10.节点1包含A,F,E表示key范围在A,F,E的数据会存储到节点1上.以此类推.
若不使用虚拟节点则需手工为集群中每个节点计算和分配一个token。每个token决定了节点在环中的位置以及节点应当承担的一段连续的数据hash值的范围。如图上半部分,每个节点分配了一个单独的token代表环中的一个位置,每个节点存储将row key映射为hash值之后落在该节点应当承担的唯一的一段连续的hash值范围内的数据。每个节点也包含来自其他节点的row的副本。

而使用虚拟节点允许每个节点拥有多个较小的不连续的hash值范围。如图中下半部分,集群中的节点使用了虚拟节点,虚拟节点随机选择且不连续。数据的存放位置也由row key映射而得的hash值确定,但是是落在更小的分区范围内。
使用virtual nodes的好处
当前有两种可用的复制策略:


复制策略在创建keyspace时指定,如
CREATE KEYSPACE Excelsior WITH REPLICATION = { 'class' : 'SimpleStrategy','replication_factor' : 3 };
CREATE KEYSPACE Excalibur WITH REPLICATION = {'class' :'NetworkTopologyStrategy', 'dc1' : 3, 'dc2' : 2};其中dc1、dc2这些数据中心名称要与snitch中配置的名称一致.上面的拓扑策略表示在dc1配置3个副本,在dc2配置2个副本
Gossip协议是群集中节点相互通信的内部通信技术。 Gossip是一种高效,轻量,可靠的节点间用于交换数据的广播协议,。 它是分散式的、容错和点对点的通信协议。 Cassandra使用gossipibing来进行对等发现和元数据传播。
gossip协议的具体表现形式就是配置文件中的seeds种子节点. 一个注意点是同一个集群的所有节点的种子节点应该一致.否则如果种子节点不一致, 有时候会出现集群分裂, 即会出现两个集群. 一般先启动种子节点,尽早发现集群中的其他节点.每个节点都和其他节点交换信息, 由于随机和概率,一定会穷举出集群的所有节点.同时每个节点都会保存集群中的所有其他节点.这样随便连到哪一个节点,都能知道集群中的所有其他节点. 比如cql随便连接集群的一个节点,都能获取集群所有节点的状态.也就是说任何一个节点关于集群中的节点信息的状态都应该是一致的!

gossip进程每秒运行一次,与至多3个其他节点交换信息,这样所有节点可很快了解集群中的其他节点信息。由于整个过程是分散的,并没有一个节点去协调每个节点的gossip信息,每个节点都会独立地选择一个到三个节点进行gossip通信,它始终选择集群中活动着的对等节点,概率性的选择seed节点和不可达的节点。

gossip协议和tcp三次握手比较相似,使用常规的广播协议,每轮只能有一条消息,并且允许消息在集群内部逐渐传播,但随着gossip协议,每条gossip消息都只会包含三条消息,增加了一定程度的逆熵。这个过程允许相互进行数据交换的节点之间快速的收敛。
首先系统需要配置几个种子节点,比如说A、B, 每个参与的节点都会维护所有节点的状态,node->(Key,Value,Version),版本号较大的说明其数据较新,节点P只能直接更新它自己的状态,节点P只能间接的通过gossip协议来更新本机维护的其他节点的数据。
大致的过程如下:
一致性指一行数据的所有副本集是否最新和同步。Cassandra扩展了最终一致性的概念,对一个读或者写操作,所谓可调节的一致性的概念,指发起请求的客户端,可以通过consistency level参数,指定本次请求,需要的一致性。
写操作的一致性

注意:
即使指定了consistency level ON或LOCAL_QUORUM,写操作还是会被发送给所有的replica节点,包括其他数据中心的里replica节点。consistency level只是决定了,通知客户端请求成功之前,需要确保写操作成功的replica节点的数量。
读一致性

理想的Cassandra应用程序具有以下特征:
推荐使用Cassandra的一些好场景是:




高性能存储引擎RocksDB模块详解
RocksDB概念及简单应用
RocksDB是用C++编写的嵌入式KV存储引擎,由Facebook基于levelDB开发,它支持多种存储硬件,使用日志结构的数据库引擎(基于LSM-Tree)来存储数据。
Rocksdb基础架构

RocksDB读写流程

RocksDB相对传统的关系数据库的一大改进是采用LSM树存储引擎。
LSM-tree

LSM树而且通过批量存储技术规避磁盘随机写入问题。 LSM树的设计思想非常朴素, 它的原理是把一颗大树拆分成N棵小树, 它首先写入到内存中(内存没有寻道速度的问题,随机写的性能得到大幅提升),在内存中构建一颗有序小树,随着小树越来越大,内存的小树会flush到磁盘上。磁盘中的树定期可以做merge操作,合并成一棵大树,以优化读性能。
LevelDB

优势:
劣势:
高性能存储引擎RocksDB模块详解
RocksDB概念及简单应用
内存数据库memdb是一个灵活的内存数据库,提供事务支持,具有SQL读写能力,支持多中心广域网集群部署,用于构建和加速需要超高速数据交互并具有高可扩展性的应用系统。在云的另一端云洞察带你去玩大数据不能做成花瓶的新鲜肉云洞察的三项高超技能富含身体系统。

属于云计算洞察包括三类产品之一,其他两类产品为大数据处理平台Hadoop、分布式并行数据库MPP
