首页 > 资讯 > > 正文

TiDB简述及TiKV的数据结构与存储

来源:博客园 2023-07-10 17:45:04
1 概述

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。


(资料图片仅供参考)

总结一下,Tidb是个高度兼容MySQL的分布式数据库,并拥有以下几个特性:

高度兼容 MySQL:掌握MySQL,就可以零基础使用TIDB水平弹性扩展:自适应扩展,基于Raft协议分布式事务:悲观锁、乐观锁、因果一致性真正金融级高可用:基于Raft协议一站式 HTAP 解决方案:单个数据库同时支持 OLTP 和 OLAP,进行实时智能处理的能力

其中TiDB的核心特性是:水平扩展、高可用。

本文主要从TiDB的各类组件为起点,了解它的基础架构,并重点分析它在存储架构方面的设计,探究其如何组织数据,Table中的每行记录是如何在内存和磁盘中进行存储的。

2 组件

先看一张Tidb的架构图,里面包含 TiDB、Storage(TiKV、TiFlash)、TiSpark、PD。其中的TiDB、TiKV、PD是核心组件;TIFlash、TiSpark是为了解决复杂OLAP的组件。TiDB是Mysql语法的交互入口,TiSpark是sparkSAL的交互入口。

2.1 TiDB Server

SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。

TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。

2.2 PD (Placement Driver) Server

整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。

PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。

2.3 存储节点2.3.1 TiKV Server

负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。

存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。

TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。

TiDB 的 SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。

2.3.2 TiFlash

TiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。假如使用场景为海量数据,且需要进行统计分析,可以在数据表基础上创建TiFlash存储结构的映射表,以提高查询速度。

以上组件互相配合,支撑着Tidb完成海量数据存储、同时兼顾高可用、事务、优秀的读写性能。

3 存储架构3.1 TiKV的模型

前文所描述的Tidb架构中,其作为存储节点的有两个服务,TiKV和TiFlash。其中TiFlash为列式存储的形式实现的,可以参考ClickHouse的架构思路,二者具有相似性。本章节主要讨论TiKV的实现。

在上图中,TiKV node所描述的就是OLTP场景下Tidb的存储组件,而TiFlash则是应对的LOAP场景。TiKV选择的是Key-Value模型,作为数据的存储模型,并提供有序遍历方法进行读取。

TiKV数据存储有两个关键点:

是一个巨大的Map(可以参考HashMap),也就是存储的是Key-Value Pairs(键值对)。这个Map中的Key-Value pair按照Key的二进制顺序有序,也就是可以Seek到某一个Key的位置,然后不断地调用Next方法,以递增的顺序获取比这个Key大的Key-Value。

需要注意的是,这里描述的TiKV的KV存储模型,与SQL中的Table无关,不要有任何代入。

在图中TiKV node内部,有store、Region的概念,这是高可用的解决方案,TiDB采用了Raft算法实现,这里细分析。

3.2 TiKV的行存储结构

在使用Tidb时,依然以传统“表”的概念进行读写,在关系型数据库中,一个表可能有很多列。而Tidb是以Key-Value形式构造数据的,因此需要考虑,将一行记录中,各列数据映射成一个key-value键值对。

首先,在OLTP场景,有大量针对单行或者多行的增、删、改、查操作,要求数据库具备快速读取一行数据的能力。因此,对应的 Key 最好有一个唯一 ID(显示或隐式的 ID),以方便快速定位。

其次,很多 OLAP 型查询需要进行全表扫描。如果能够将一个表中所有行的 Key 编码到一个区间内,就可以通过范围查询高效完成全表扫描的任务。

3.2.1 表数据的KV映射

Tidb中表数据与Key-Value的映射关系,设计如下:

为了保证同一个表的数据会放在一起,方便查找,TiDB会为每个表分配一个表ID,用TableID表示,整数、全局唯一。TiDB会为每行数据分配一个行ID,用RowID表示,整数、表内唯一。如果表有主键,则行ID等于主键。

基于以上规则,生成的Key-Value键值对为:

Key:  tablePrefix{TableID}_recordPrefixSep{RowID} Value: [col1,col2,col3,col4]

其中 tablePrefix 和 recordPrefixSep 都是特定的字符串常量,用于在 Key 空间内区分其他数据。

这个例子中,是完全基于RowID形成的Key,可以类比MySQL的聚集索引。

3.2.2 索引数据的KV映射

对于普通索引,在MySQL中是有非聚集索引概念的,尤其innodb中,通过B+Tree形式,子节点记录主键信息,再通过回表方式得到结果数据。

在Tidb中是支持创建索引的,那么索引信息如何存储? 它同时支持主键和二级索引(包括唯一索引和非唯一索引),且与表数据映射方式类似。

设计如下:

Tidb为表中每个索引,分配了一个索引ID,用IndexID表示。对于主键和唯一索引,需要根据键值快速定位到RowID,这个会存储到value中

因此生成的key-value键值对为:

Key:tablePrefix{TableID}_indexPrefixSep{IndexID}_indexedColumnsValueValue: RowID

由于设计的key中存在indexedColumnsValue,也就是查询的字段值,因此可以直接命中或模糊检索到。再通过value中的RowID,去表数据映射中,检索到RowID对应的行记录。

对于普通索引,一个键值可能对应多行,需要根据键值范围查询对应的RowID。

Key:   tablePrefix{TableID}_indexPrefixSep{IndexID}_indexedColumnsValue_{RowID}Value: null

根据字段值,可以检索到具有相关性的key的列表,在根据key中包含的RowID,再拿到行记录。

3.2.3 映射中的常量字符串

上述所有编码规则中的 tablePrefix、recordPrefixSep 和 indexPrefixSep 都是字符串常量,用于在 Key 空间内区分其他数据,定义如下:

tablePrefix     = []byte{"t"}recordPrefixSep = []byte{"r"}indexPrefixSep  = []byte{"i"}

在上述映射关系中,一个表内所有的行都有相同的 Key 前缀,一个索引的所有数据也都有相同的前缀。这样具有相同的前缀的数据,在 TiKV 的 Key 空间内,是排列在一起的。

因此,只需要设计出稳定的后缀,则可以保证表数据或索引数据,有序的存储在TiKV中。而有序带来的价值就是能够高效的读取。

3.2.4 举例

假设数据库的一张表,如下:

CREATE TABLE User (    ID int,    Name varchar(20),    Role varchar(20),    Age int,    PRIMARY KEY (ID),    KEY idxAge (Age));

表中有3行记录:

1, "TiDB", "SQL Layer", 102, "TiKV", "KV Engine", 203, "PD", "Manager", 304, "TiFlash", "OLAP", 30

这张表中有一个主键ID、一个普通索引idxAge,对应的是列Age.

假设该表的TableID=10,则其表数据的存储如下:

t10_r1 --> ["TiDB", "SQL Layer", 10]t10_r2 --> ["TiKV", "KV Engine", 20]t10_r3 --> ["PD", "Manager", 30]t10_r4 --> ["TiFlash", "OLAP", 30]

其普通索引idxAge的存储如下:

t10_i1_10_1 --> nullt10_i1_20_2 --> nullt10_i1_30_3 --> nullt10_i1_30_4 --> null
3.3 SQL与KV映射

TiDB 的 SQL 层,即 TiDB Server,负责将 SQL 翻译成 Key-Value 操作,将其转发给共用的分布式 Key-Value 存储层 TiKV,然后组装 TiKV 返回的结果,最终将查询结果返回给客户端。

举例,“select count(*) from user where name=’tidb’;”这样的SQL语句,在Tidb中进行检索,流程如下:

根据表名、所有的RowID,结合表数据的Key编码规则,构造出一个[StartKey,endKey)的左闭右开区间。根据[StartKey,endKey)这个区间内的值,到TiKV中读取数据得到每一行记录后,过滤出name=’tidb’的数据将结果进行统计,计算出count(*)的结果,进行返回。

在分布式环境下,为了提高检索效率,实际运行过程中,上述流程是会将name=’tidb’和count( *)下推到集群的每个节点中,减少无异议的网络传输,每个节点最终将count(*)的结果,再由SQL层将结果累加求和。

4 RockDB 持久化4.1 概述

前文所描述的Key-Value Pairs只是存储模型,是存在于内存中的,任何持久化的存储引擎,数据终归要保存在磁盘上。TiKV 没有选择直接向磁盘上写数据,而是把数据保存在 RocksDB 中,具体的数据落地由 RocksDB 负责。

这个选择的原因是开发一个单机存储引擎工作量很大,特别是要做一个高性能的单机引擎,需要做各种细致的优化,而 RocksDB 是由 Facebook 开源的一个非常优秀的单机 KV 存储引擎,可以满足 TiKV 对单机引擎的各种要求。这里可以简单的认为 RocksDB 是一个单机的持久化 Key-Value Map。

4.2 RocksDB

TiKV Node的内部被划分成多个Region,这些Region作为数据切片,是数据一致性的基础,而TiKV的持久化单元则是Region,也就是每个Region都会被存储在RocksDB实例中。

以Region为单元,是基于顺序I/O的性能考虑的。而TiKV是如何有效的组织Region内的数据,保证分片均匀、有序,这里面用到了LSM-Tree,如果有HBase经验一定不模式。

4.2.1 LSM-Tree结构

LSM-Tree(log structured merge-tree)字面意思是“日志结构的合并树”,LSM-Tree的结构是横跨磁盘和内存的。它将存储介质根据功能,划分磁盘的WAL(write ahead log)、内存的MemTable、磁盘的SST文件;其中SST文件又分为多层,每一层数据达到阈值后,会挑选一部分SST合并到下一层,每一层的数据是上一层的10倍,因此90%的数据会存储在最后一层。

WAL:是预写Log的实现,当进行写操作时,会将数据通过WAL方式备份到磁盘中,防止内存断电而丢失。

Memory-Table:是在内存中的数据结构,用以保存最近的一些更新操作;memory-table可以使用跳跃表或者搜索树等数据结构来组织数据,以保持数据的有序性。当memory-table达到一定的数据量后,memory-table会转化成为immutable memory-table,同时会创建一个新的memory-table来处理新的数据。

Immutable Memory-Table:immutable memory-table在内存中是不可修改的数据结构,它是将memory-table转变为SSTable的一种中间状态。目的是为了在转存过程中不阻塞写操作。写操作可以由新的memory-table处理,而不用因为锁住memory-table而等待。

SST或SSTable:有序键值对集合,是LSM树组在磁盘中的数据的结构。如果SSTable比较大的时候,还可以根据键的值建立一个索引来加速SSTable的查询。SSTable会存在多个,并且按Level设计,每一层级会存在多个SSTable文件。

4.2.2 LSM-Tree执行过程

写入过程

首先会检查每个区域的存储是否达到阈值,未达到会直接写入;如果Immutable Memory-Table存在,会等待其压缩过程。如果Memory-Table已经写满,Immutable Memory-Table 不存在,则将当前Memory-Table设置为Immutable Memory-Table,生成新的Memory-Table,再触发压缩,随后进行写入。写的过程会先写入WAL,成功后才会写Memory-Table,此刻写入才完成。

数据存在的位置,按顺序会依次经历WAL、Memory-Table、Immutable Memory-Table、SSTable。其中SSTable是数据最终持久化的位置。而事务性写入只需要经历WAL和Memory-Table即可完成。

查找过程

1.根据目标key,逐级依次在Memory-Table、Immutable Memory-Table、SSTable中查找2.其中SSTable会分为几个级别,也是按Level中进行查找。

Level-0级别,RocksDB会采用遍历的方式,所有为了查找效率,会控制Level-0的文件个数。而Level-1及以上层级的SSTable,数据不会存在交叠,且由于存储有序,会采用二分查找提高效率。

RocksDB为了提高查找效率,每个Memory-Table和SSTable都会有相应的Bloom Filter来加快判断Key是否可能在其中,以减少查找次数。

删除和更新过程

当有删除操作时,并不需要像B+树一样,在磁盘中的找到相应的数据后再删除。

首先会在通过查找流程,在Memory-Table、Immuatble Memory-Table中进行查找。如果找到则对结果标记为“删除”。否则会在结尾追加一个节点,并标记为“删除”在真正删除前,未来的查询操作,都会先找到这个被标记为“删除”的记录。之后会在某一时刻,通过压缩过程真正删除它。

更新操作和删除操作类似,都是只操作内存区域的结构,写入一个标志,随后真正的更新操作被延迟在合并时一并完成。由于操作是发生在内存中,其读写性能也能保障。

4.3 RockDB 的优缺点

优点

将数据拆分为几百M大小的块,然后顺序写入首次写入的目的地是内存,采用WAL设计思路,加上顺序写,提高写入的能力,时间复杂度近似常数支持事务,但L0层的数据,key的区间有重叠,支持较差

缺点

读写放大严重应对突发流量的时候,削峰能力不足压缩率有限索引效率较低压缩过程比较消耗系统资源,同时对读写影响较大5 总结

以上针对TiDB的整体架构进行建单介绍,并着重描述了TiKV是如何组织数据、如何存储数据。将其Key-Value的设计思路,与MySQL的索引结构进行对比,识别相似与差异。TiDB依赖RockDB实现了持久化,其中的Lsm-Tree,作为B+Tree的改进结构,其关注中心是“如何在频繁的数据改动下保持系统读取速度的稳定性”,以顺序写磁盘作为目标,假设频繁地对数据进行整理,力求数据的顺序性,带来读性能的稳定,同时也带来了一定程度的读写放大问题。

作者:京东物流 耿宏宇

来源:京东云开发者社区 自猿其说Tech

x
推荐阅读

TiDB简述及TiKV的数据结构与存储

2023-07-10 17:45:04

心渊梦境魔物猎人武器怎么样

2023-07-10 16:34:46

手机相关知识:西瓜视频注销账号审核要多久

2023-07-10 16:06:35

记者手记:未来已来,人类如何应对人工智能挑战

2023-07-10 15:15:47

通讯:中国手工业培训助力布隆迪民众创业和经济发展

2023-07-10 14:33:03

最新CPI、PPI数据!国家统计局发布

2023-07-10 13:57:42

广东廉江25岁男子幼儿园行凶,死者或为一老师、两家长、三学生,当地回应:身份仍在核实

2023-07-10 13:07:40

丹麦是战败国吗

2023-07-10 12:23:10

国家电投本溪热电荣获三项实用新型专利

2023-07-10 12:02:22

限血型、看手相?不能纵容另类就业歧视

2023-07-10 11:14:33
相关新闻

TiDB简述及TiKV的数据结构与存储

2023-07-10 17:45:04

心渊梦境魔物猎人武器怎么样

2023-07-10 16:34:46

手机相关知识:西瓜视频注销账号审核要多久

2023-07-10 16:06:35

记者手记:未来已来,人类如何应对人工智能挑战

2023-07-10 15:15:47

通讯:中国手工业培训助力布隆迪民众创业和经济发展

2023-07-10 14:33:03

最新CPI、PPI数据!国家统计局发布

2023-07-10 13:57:42

广东廉江25岁男子幼儿园行凶,死者或为一老师、两家长、三学生,当地回应:身份仍在核实

2023-07-10 13:07:40

丹麦是战败国吗

2023-07-10 12:23:10

国家电投本溪热电荣获三项实用新型专利

2023-07-10 12:02:22

限血型、看手相?不能纵容另类就业歧视

2023-07-10 11:14:33

垃圾场宝石:1990 克莱斯勒 LeBaron GT 敞篷车

2023-07-10 10:56:22

红领巾进高校感受科技魅力

2023-07-10 10:21:44

创业板指涨幅扩大至1% 锂矿板块大涨

2023-07-10 09:52:33

四川有几个市有地铁 四川有几个市

2023-07-10 09:24:18

北方降雨增多 南方高温“超长待机” 近期全国天气速览

2023-07-10 09:01:24

“党员市集”吸引居民来“赶集” 坂田街道不断探索“党建+助企”新路径

2023-07-10 08:09:59

土俄外长通电话 讨论黑海港口农产品外运协议等问题

2023-07-10 07:07:46

while和when的区别举例 while和when的区别

2023-07-10 05:17:50

世体:切尔西寻求激活违约金签下迪巴拉,巴黎已询问相关信息

2023-07-10 01:17:16

2023年甘肃省普通高校招生录取批次及时间安排

2023-07-09 21:21:46

古罗马古希腊建筑特点(古希腊建筑特点)

2023-07-09 20:22:19

岗位津贴是什么(岗位津贴)

2023-07-09 19:01:40

济南华视眼科医院是正规医院吗 医院真实实力公布

2023-07-09 17:41:45

广东·贵州东西部协作项目:贵州薏粮醇酱酒酒厂建设稳步推进

2023-07-09 16:27:54

狗仔放出爆料蔡徐坤的W女士撒谎的录音,3大细节证明她演技赢了

2023-07-09 15:14:37

2006年,张凤君被押赴刑场前的照片,带着微笑表情非常耐人寻味

2023-07-09 14:15:39

深圳市人人乐商业有限公司(关于深圳市人人乐商业有限公司介绍)

2023-07-09 13:00:03

美国加州一小型飞机坠毁致6人死亡

2023-07-09 12:00:08

“推动地区和平、安全与发展”

2023-07-09 11:01:52

特斯拉与新势力销量跟踪报告:行业有望平稳修复 看好智能化主题+特斯拉产业链

2023-07-09 10:13:00

运输行业5只优质龙头股(7/7)

2023-07-09 09:14:16

10人大连人逼平上海海港,大连籍裁判掌控VAR,足协给自己挖坑

2023-07-09 07:51:19

涵艺回顾带V5十六连败!BLG提前锁定季后赛复活甲

2023-07-09 07:45:19

库兹马谈续约:能得到组织信任&带领球队走向未来 我真的很荣幸

2023-07-09 06:02:17

RNG击败WE,基本锁定季后赛!TT横扫OMG,这气势不会要干JDG吧?

2023-07-09 00:08:19

阿尔茨海默病新药疗效如何 礼来、恒瑞先声谁能再突围

2023-07-08 22:10:40

如何判断孩子是否有网瘾倾向?如何预防网瘾?专家来支招

2023-07-08 20:16:33

公募基金费率改革启动,多家基金公司宣布下调费率

2023-07-08 16:59:52

检察机关首创“诉救协同”机制 让斑海豹平安“回家”

2023-07-08 15:55:57

瓦格纳事件期间,这国政府紧急采取行动

2023-07-08 14:57:28

滚滚鸡官网在哪下载 最新官方下载安装地址

2023-07-08 13:32:28

独家 | 快手搜索正在内测短视频直播行业首个智能问答产品

2023-07-08 12:23:37

遭重罚后,蚂蚁集团启动回购!估值较2018年已降四成

2023-07-08 11:55:02

无视民意、制造假象,日本企图抹杀核事故痕迹

2023-07-08 09:21:36

高尔夫7 1.6 空调滤芯更换视频教程(高尔夫7多久换空调滤芯?)

2023-07-08 08:19:47

世界银行前行长:美国无法遏制中国发展

2023-07-08 07:17:24

河南持续高温,还要热多久?

2023-07-08 05:43:01

TV动画《进击的巨人 完结篇》后篇PV第1弹公开

2023-07-08 00:19:28

满足哪些条件可以线上办理公积金提取?速速了解!

2023-07-07 22:24:42

玉塘“红色小分格”为来深“小候鸟”撑起防护伞

2023-07-07 21:30:54

蓝港互动(08267)进一步购买19.3808单位的比特币

2023-07-07 21:04:17

疯狂的本田CRV拥有哥斯拉的面孔和500马力来支持它

2023-07-07 20:04:04

雅阁混动哪个版本划算(雅阁混动能上绿牌吗)

2023-07-07 19:15:54

多方反对日本强推核污染水排海 美国专家:东电报告有漏洞 结论不可靠

2023-07-07 18:36:18

保定银行开展金融知识普及宣传活动

2023-07-07 18:06:09

大同市阳高县杏果产业为农民铺就幸福路

2023-07-07 17:28:10

树立旱涝并重思想 安庆提前做好防旱抗旱准备工作

2023-07-07 16:39:58

涵品教育:即使步入职场,也应该继续学习!

2023-07-07 16:15:31

王者荣耀甄姬s32怎么玩上分快 s32甄姬出装及打法教学

2023-07-07 15:38:16

教授称有人花百万留学回来月薪5000 网友:出国留学不香了?

2023-07-07 14:50:21

二乙胺商品报价动态(2023-07-07)

2023-07-07 14:11:53

蹲点影记①|土豆育种攻关:“天选之子”落地成熟啦

2023-07-07 12:44:41

注意!预计有5-6个台风登陆或严重影响广东!

2023-07-07 12:05:52

江西萍乡市局(公司)推进终端建设提质升级

2023-07-07 11:34:39

国际原子能机构发布日本福岛核污染水处置综合评估报告,海关总署回应

2023-07-07 11:08:17

光庭信息:股东接连减持,热门概念股为何被资本“甩卖”?

2023-07-07 10:38:49

广宇发展:获新疆区域1300万千瓦新能源项目建设指标

2023-07-07 10:22:18

东旭B7月7日盘中跌幅达5%

2023-07-07 10:02:36

比亚迪上半年销售125万辆 稳坐全球新能源汽车销冠

2023-07-07 09:23:27

梅奇卡普拉(卡普拉F.)

2023-07-07 09:02:42

检察院保安小哥法考上岸

2023-07-07 08:19:57

培育战略性新兴产业国企“A拆A”持续升温

2023-07-07 06:27:39

紧追比亚迪!吉利汽车6月销量超过13万台

2023-07-07 04:58:56

国海富兰克林基金:科技或仍是美股下半年主线

2023-07-07 01:22:37

黄埔区:省级新型研发机构39家占全市一半,设天使基金助成果转化

2023-07-06 22:33:05

顶级自办赛事落户杭州,首届国际皮划艇超级杯明年举办

2023-07-06 21:39:50

厦航开通厦门⇋巴黎直飞航线

2023-07-06 21:06:18

国家卫生健康委成立国家级医疗应急工作专家组

2023-07-06 19:40:18

上汽集团谋划欧洲建厂,艾睿铂预测2030年中国品牌将在欧洲获得巨大成功

2023-07-06 19:05:55

重庆铜梁:打造中国西部新型储能产业新高地 --> 重庆铜梁:打造中国西部新型储能产业新高地

2023-07-06 18:17:25

Mysteel日报:南京冷轧及镀锌板卷价格稳中有涨

2023-07-06 17:41:39

唐三看似温顺,但因魂殿伤害了她,也使得他做出这样的行为

2023-07-06 17:18:22

TCL创始人、董事长李东生:TCL今年预计整体新增投资约580亿元

2023-07-06 16:39:17

环球关注:路由器怎么安装

2023-07-06 16:05:46

天天百事通!剑河:观么小学开展“法治宣传进校园”活动

2023-07-06 15:43:49

退赛+出局!2023温网中国队遭重创,已有6人出局,你怎么看?_世界时快讯

2023-07-06 15:11:07

法国以教育改革推动国家振兴

2023-07-06 14:23:02

077期凤九大乐透预测奖号:前区和值分析

2023-07-06 13:16:04

全球今热点:万能顶岗实习周记借鉴参考

2023-07-06 13:05:45

世界今亮点!美陆军“中程导弹武器”形成战力,未来将部署在中国周边?

2023-07-06 12:38:26

当前快看:《汽车行业维护公平市场秩序承诺书》正式签署

2023-07-06 11:42:13

焦点简讯:95120全国疾控电话流调专用号码启用

2023-07-06 11:29:43

江苏南通市总工会启动2023年金秋助学活动-世界动态

2023-07-06 11:12:47

6月全球制造业采购经理指数继续下行 全球经济复苏面临较大挑战 全球观焦点

2023-07-06 11:02:44

逆水寒手游血河偷师哪个门派好 血河偷师门派选择推荐[多图]

2023-07-06 10:46:53

世界即时:有未成年人参与、涉灰色地带,谁把游戏陪玩“玩坏了”?

2023-07-06 09:03:34

今年A股市场IPO过会率近86% 天天讯息

2023-07-06 08:16:41

新时代 新征程 新伟业 | 四川:“百千万”活动激发群众文化活力

2023-07-06 07:28:02

天天新动态:社评:耶伦访华应放弃高高在上的伪善说教

2023-07-06 06:18:03

广州足球俱乐部2.2亿股权被冻结

2023-07-06 03:19:37