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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • startActivityForResult被标记为弃用后,如何优雅的启动Activity?

    startActivityForResult被标记为弃用后,如何优雅的启动Activity?startActivityForResult标记为弃用后,如何优雅的启动Activity?ActivityResultAPI已经出来有一段时间了,但是还是有很多朋友对这个API感到使用不便或疑惑,今天尽量用一篇简短的文章简述下registerForActivityResult的使用方法。

    2022年7月11日
    13
  • 关于jmeter面试问题_前端面试一问三不知怎么办

    关于jmeter面试问题_前端面试一问三不知怎么办1.解释什么是jmeter?  jmeter是一款java开源工具,用于性能负载测试。它旨在分析和衡量web应用程序和各种服务的性能和负载功能行为。2.说明jmeter的工作原理?  jmeter就像一群将请求发送到目标服务器的用户一样。它收集来自目标服务器的响应以及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能。3.说明可以在哪里使用函数和变量?  变量和…

    2022年9月30日
    0
  • QT学习—使用多线程的两种方法(子类化QThread+子类化QObject)

    QT学习—使用多线程的两种方法(子类化QThread+子类化QObject)第一种方法:摘要Qt多线程方法1继承QThread1写一个继承于QThread的线程2QThread的几个函数quitexitterminate函数3正确的终止一个线程4如何正确启动一个线程41正确的启动一个全局线程和UI一直存在的线程42如何启动一个局部线程用完即释放的线程继承QThread的一些总结使用QObject实现多线的方法见:http://blog.csdn.net/czyt…

    2022年5月8日
    93
  • 数据结构与算法(十六):平衡二叉树

    数据结构与算法(十六):平衡二叉树一、什么是平衡二叉树1.概述平衡二叉树(AVL树)是一种带有平衡条件的二叉搜索树。它的特性如下:AVL树的左右两个子树的高度差的绝对值不超过1AVL树的左右两个子树都是一棵平衡二叉树举个例子

    2022年8月16日
    3
  • JAVA数组的定义及用法

    JAVA数组的定义及用法

    2021年12月1日
    42
  • Apple Silicon M1 Mac如何恢复出厂设置

    Apple Silicon M1 Mac如何恢复出厂设置今天小编就来和大家讲述一下AppleSiliconM1Mac如何恢复出厂设置并还原的?Apple完全改变的AppleSiliconMac的一个方面是访问恢复模式的方式,这是重新安装MacOS,解决问题或彻底擦除硬盘驱动器所必需的工具,以防万一您必须将其退回或决定删除硬盘。在下面,您将找到如何进入“恢复模式”,包括其中的工具,最后是如何完全重置M1Mac。新的恢复模式看起来很相似,但使用起来却有所不同。如何在AppleSiliconMac上访问MacOSRecovery

    2022年6月16日
    88

发表回复

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

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