TiKV线程池_多线程池

TiKV线程池_多线程池TiDB学习之TikV

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

线程池介绍

前言

在 TiKV 中,线程池主要由 gRPC、Scheduler、UnifyReadPool、Raftstore、StoreWriter、Apply、RocksDB 以及其它一些占用 CPU 不多的定时任务与检测组件组成,这里主要介绍几个占用 CPU 比较多且会对用户读写请求的性能产生影响的线程池。

  1. gRPC 线程池:负责处理所有网络请求,它会把不同任务类型的请求转发给不同的线程池。
  2. Scheduler 线程池:负责检测写事务冲突,把事务的两阶段提交、悲观锁上锁、事务回滚等请求转化为 key-value 对数组,然后交给 Raftstore 线程进行 Raft 日志复制。
  3. Raftstore 线程池:
    1. 处理所有的 Raft 消息以及添加新日志的提议 (Propose)。
    2. 处理 Raft 日志。如果 store-io-pool-size 配置项的值为 0, Raftstore 线程将日志写入到磁盘;如果该值不为 0,Raftstore 线程将日志发送给 StoreWriter 线程处理。
    3. 当日志在多数副本中达成一致后,Raftstore 线程把该日志发送给 Apply 线程处理。
  4. StoreWriter 线程池:负责将所有 Raft 日志写入到磁盘,再把结果返回到 Raftstore 线程。
  5. Apply 线程池:当收到从 Raftstore 线程池发来的已提交日志后,负责将其解析为 key-value 请求,然后写入 RocksDB 并且调用回调函数通知 gRPC 线程池中的写请求完成,返回结果给客户端。
  6. RocksDB 线程池:RocksDB 进行 Compact 和 Flush 任务的线程池,关于 RocksDB 的架构与 Compact 操作请参考 RocksDB: A Persistent Key-Value Store for Flash and RAM Storage。
  7. UnifyReadPool 线程池:由 Coprocessor 线程池与 Storage Read Pool 合并而来,所有的读取请求包括 kv get、kv batch get、raw kv get、coprocessor 等都会在这个线程池中执行。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190306.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 将截断字符串或二进制数据解决办法_数据库从字符串转换日期失败

    将截断字符串或二进制数据解决办法_数据库从字符串转换日期失败在EF中,使用CodeFirst给实体添加约束的时候,使用NeGut控制台进行更新到数据库中,先使用add-migrationmigrationName命令进行创建(migrationName是进行更新的名字),然后使用Update-Database进行更新到数据库,此时报出问题:将截断字符串或二进制数据。语句已终止。错误原因为什么会报出这个问题,原因就是添加的限制和数据库中已…

    2022年10月7日
    4
  • C++如何做字符串分割(5种方法)

    C++如何做字符串分割(5种方法)1、用strtok函数进行字符串分割原型:char*strtok(char*str,constchar*delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include<string.h>#include<stdio.h&

    2022年4月29日
    643
  • Android–SQLite数据库实现增删改查

    Android–SQLite数据库实现增删改查SQLite–轻量级数据库一般常见于安卓客户端。用于存储一些重要数据,因其操作容易、使用简单的好处博得一大批迷妹。今天就来说一说sqlite一些简单的使用方法。一步一步开始做吧,我先创建个项目,主要是使用sqlite的代码。首先,我需要在项目初次运行时创建数据库并新建一张user表,用来存储username和password两个字段;…

    2022年6月26日
    27
  • 如果没人挖矿比特币会变成什么样[通俗易懂]

    如果没人挖矿比特币会变成什么样[通俗易懂]如果没人挖矿,比特币网络就无法出块,也无法转账,比特币网络将不复存在。当然这种情况并不会存在,因为出块意味着获得比特币奖励。只要比特币有价格就有人会投入成本来挖矿,并卖出挖到的比特币。有人使用比特币,从而进一步加强比特币的价值,且使用量越来越大。比特币网络就将一直存在。那么比特币网络有可能被摧毁吗。我们知道区块链是比特币的底层技术,而区块链具有不可篡改,数据可查的属性。那么摧毁比特币网络就只…

    2022年5月8日
    187
  • webstorm 永久激活方法【2021免费激活】

    (webstorm 永久激活方法)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~3S…

    2022年3月30日
    71
  • AsyncHandler

    AsyncHandler

    2022年1月10日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号