TiDB中文技术文档
生成自签名证书 监控集群 整体监控框架概述 重要监控指标详解 组件状态 API & 监控 扩容缩容 集群扩容缩容方案 使用 Ansible 扩容缩容 升级 升级组件版本 TiDB 2.0 升级操作指南 性能调优 备份与迁移 备份与恢复 数据迁移 数据迁移概述 数据迁移 故障诊断 TiDB 周边工具 Syncer Loader TiDB-Binlog PD Control TiKV Control TiDB 0 RC1 1.1 Beta 1.1 Alpha 1.0 Pre-GA RC4 RC3 RC2 RC1 TiDB 路线图 性能测试 TiDB Sysbench 性能测试报告 - v1.0.0 TiDB TPC-H 50G 性能测试报告 - v2.0 TiDB Sysbench 性能对比测试报告 - v2.0.0 对比 v1.0.0 - 5 - 本文档使用 书栈(BookStack.CN) 构建 致谢 生成自签名证书 监控集群 整体监控框架概述 重要监控指标详解 组件状态 API & 监控 扩容缩容 集群扩容缩容方案 使用 Ansible 扩容缩容 升级 升级组件版本 TiDB 2.0 升级操作指南 性能调优 备份与迁移 备份与恢复 数据迁移 数据迁移概述 全量导入 增量导入 故障诊断 TiDB 周边工具 Syncer Loader TiDB-Binlog PD Control TiKV Control0 码力 | 444 页 | 4.89 MB | 6 月前3Rust 程序设计语言 简体中文版 1.85.0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 13.4. 性能比较:循环对迭代器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 如何帮助你无畏地进行多线程编 程。第十七章将在此基础上进一步探索 Rust 的 async 和 await 语法,以及它们所支持的轻量 级并发模型。 第十八章着眼于 Rust 风格与你可能比较熟悉的 OOP(面向对象编程)原则之间的比较。第十 九章是一个模式和模式匹配的参考,它们是在 Rust 程序中表达思想的有效方式。第二十章是 一个高级主题大杂烩,包括不安全 Rust(unsafe Rust)、宏(macro)和更多关于生命周期、 Hello, world!。首次运行 cargo build 时,也会使 Cargo 在项目根目录创建一个新文件:Cargo.lock。这个文件记录项目依赖的实际版本。这个 项目并没有依赖,所以其内容比较少。你永远也不需要手动编辑该文件;Cargo 会为你管理 它。 我们刚刚使用 cargo build 构建了项目,并使用 ./target/debug/hello_cargo 运行了程序,也 可以使用0 码力 | 562 页 | 3.23 MB | 10 天前3CurveFS方案设计
补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 背景 为更好的支持云原生的场景,Curve需要支持高性能通用文件系统,其中高性能主要是适配云原生数据库的场景。当前Curve com/team/km_curve/article/27909 性能对比 并对以上文件系统在相同环境进行了元数据节点性能测试: 。测试结果c开发的moosefs和fastcfs元数据性能远优于go开发的chubaofs和c开发的cephfs,理论上分析这个结果是合理的,分布式的元数据设 调研测试 计会涉及到多次rpc的交互。这里需要确认的一点是:我们需要怎样的元数据节点的性能? 可行性分析 方案对比 根据上述调 软/硬链接:目前是都不支持的。软链接可以通过标识文件类型解决;由于 prefix + parentid + filename 作为 key , filename 直接和 fileInfo 关联,硬链接无法支持 b. 性能 list:list在通用文件系统中是很常见的操作,目前 curve 的元数据缓存使用的 lru cache,因此 list 只能依赖 etcd 的 range 获取方式。如果需要对 list0 码力 | 14 页 | 619.32 KB | 5 月前324-云原生中间件之道-高磊
式,IAST可以像SAST一样精准的发现问题点 SCA(软件成分分析) 有大量的重复组件或者三方库的依赖,导致安全漏洞被传递或者扩散, SCA就是解决此类问题的办法,通过自动化分析组件版本并与漏洞库相 比较,快速发现问题组件,借助积累的供应链资产,可以在快速定位的 同时,推动业务快速修复。 安全左移的一种,在上线前发现依赖组件的安全 问题,快速借助供应链资产库,帮助业务修复问 题。 需要进行大量的安全特征以及资产库的建设或者 来阻止攻击,属于一种主动的态势感知和风险隔离技术手段 可以自动化的对非预计风险进行识别和风险隔离 对系统性能有一定影响 可信计算 核心目标是保证系统和应用的完整性,从而保证系统按照设计预期所规 定的安全状态。尤其是像边缘计算BOX这种安全防护,根据唯一Hash值验 证,可以实现极为简单的边云接入操作,运行态并不会影响性能。 可信根一般是一个硬件,比如CPU或者TPM,将从 它开始构建系统所有组件启动的可信启动链,比 Check&Report机制影响通信性能,并只涉及到服务 通信级别的安全,对node没有防护 Calico零信任 主要针对Node层的访问控制,可以让攻击者难以横向移动,隔离了风险 应用透明,全局管理视角,细粒度安全策略,针 对Node层面构建安全 采用IpTables,有一定的性能消耗 Cilium零信任 采用eBPF,为Mesh打造具备API感知和安全高效的网络层安全解决方案, 克服了Calico SDN安全和性能方面的不足0 码力 | 22 页 | 4.39 MB | 6 月前3BRPC与UCX集成指南
so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache –config file24 UCT ●特点是比较原始,开销小,但是没有很强的功能 ●是网络接口层,主要功能是网卡发现和 ●调用poll(efd)等待有任务执行,然后再调用ucp_worker_progress() ●/dev/cpu_dma_latency 禁止power-saving模式 ●由于rdma速度很快,内核调度时延对性能影响很大。关键应用应开启busy poll。323334 BRPC怎么指定使用UCX?35 修改 BRPC ChannelOptions 增加字段:36 BRPC的Server开启RDMA ●提供Release Connection。 –在UcpCm决定关闭连接时53 UcpWorker的实现 ●使用了ucp active message –当消息很短时,ucx使用内部缓冲提供给brpc(比较快) –当消息很大时,由brpc提供接收缓冲区(rndv,rendezvous) ●阀值可调 –接收和发送使用无锁队列 ●UcpWorker接收时写入UcpConnection的无锁队列0 码力 | 66 页 | 16.29 MB | 5 月前3TGT服务器的优化
TCMU的用户态代码会受到框架约束,不够灵活。iSCSI target 服务器 • TGT(STGT) • 比较久的历史,原来叫STGT,后来改成TGT • 纯用户态,不与内核绑定 • 支持复杂的存储系统,例如ceph rbd, sheepdog, glfs • 纯C代码,外加一些脚本 • 完整的源代码和维护工具、手册 • 编写IO驱动比较容易,容易扩展支持新的存储系统 • 代码独立,容易编译、调试、修改,适应性强让TGT支持curve DPO是disable page out的缩写,FUA是force unit access的缩写 • FUA可以让某些文件系统在做写操作时,不需要提交一个SCSI FLUSH COMMAND,提高性能 • 已经修改TGT,让驱动可以声明自己是否支持DPO & FUA • 由于增加的Curve 驱动没有本地cache,所以DPO & FUA可以turn on. • sd 0:0:0:0: [sda] TGT的性能问题 • 性能问题主要体现在不能有效使用多CPU • 对多个socket connection,在单线程里做event loop多路复用。 • 多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 •0 码力 | 15 页 | 637.11 KB | 5 月前3在网格的边缘试探:企业 Istio 试水指南
API稳定性问题:流量管理也仅仅是v1alpha3,用alpha特性发布 1.0的情况似乎比较罕见。 • 发布进度和质量:大版本以月计算的发布延迟,据我所知的 Release撤回发生了两次。 • 世纪难题:多出一层Sidecar造成的延迟。 • Pilot的性能,近几个版本一直在出问题。 • Mixer按照我个人的看法,API较为混乱,重构风险比较大Istio还用不用? • 你要的是不是API网关? • Service 可能出现什么故障? • 能有什么好处? • 个人看法 • 可观察性 • 路由 • 策略 • 安全试用服务范围 • 不要 All in! • 稳定——性能和业务! • 什么服务不怕死? • 什么服务可以慢? • 集群规模别太大。 • 能切换/回滚。 • 有完善的性能、功能测试方案。禁则 �������� ����� ����制定目标 • 集群环境申请:版本、开关、资源等。 • 功能性需求:本次试用中 服务YAML复查 • 缺省路由设置 • 根据功能需求,编写和部署 Istio相关功能YAML • 监控和告警部署 • 连接Alertmanager/… • 指标输出方案测试 • 根据性能和功能测试方案完成测试。 • 如果性能下滑,可以尝试扩张资源。 • 如果无法达成测试目标,建议取消——无侵入的好处就是可以撤 退。 • 评估关联服务的工作情况——尤其是重试、超时特性的应用切换演练 • 在测试版本和后备版本之间根据预案进行切换。0 码力 | 19 页 | 11.41 MB | 5 月前336-云原生监控体系建设-秦晓辉
Kubernetes,毕竟,复杂度真的很高,特别是 后面还要涉及到升级维护的问题。既然负载节点更重要, 我们讲解监控就从工作负载节点开始。 Kubernetes 所在宿主 的监控 Kubernetes所在宿主的监控 宿主的监控,比较常规和简单,无非就是 CPU、Mem、Disk、DiskIO、Net、Netstat、Processes、 System、Conntrack、Vmstat 等等。原理就是读取 OS 的数据(通过 /proc cAdvisor 的接口,Kubelet 里 内置了cAdvisor,cAdvisor 不管是 docker 还是 containerd 都可以采集到,推荐 { 抓取方案一 } • 左侧这个配置大家在网上比较容易搜到,通过kubernetes_sd_configs做服务发现,查找所有node,通过 Kubernetes apiserver 的 proxy 接口,抓取各个node(即kubelet)的 /metrics/cadvisor 表示调度器内部错误 Kubernetes控制面 etcd 的监控 • ETCD 也是直接暴露 /metrics 接口,可以直接抓取 • ETCD 可以考虑使用 sidecar 模式来抓,对于运维比较简 单一些,不需要先部署 ETCD 再去配置抓取规则 • ETCD 强依赖硬盘做持久化,所以要特别关注硬盘相关的 指标,尽量用 SSD 或 NVME 的盘 • 采集方式可以参考 categraf 仓库的0 码力 | 32 页 | 3.27 MB | 6 月前3Curve文件系统元数据持久化方案设计
保存编码后的 value© XXX Page 5 of 12 其他说明 持久化文件中涉及到的数字均以小端序存储 利用 fork 子进程 (COW) 的方式解决在持久化的过程中,读写冲突的问题以及性能问题 实现 1、inode、entry 的编码 给 inode、dentry 增加编码函数 // 这里要尽可能减少 key/value 编码后的字节数,这样同样的内存可以存入较多的 key/value 所以,AOF 不能保证数据 100% 不丢失(RDB 持久化更不能),结论就是单靠 redis 无法保证数据 100% 不丢失(这主要是 redis 基于性能考量,毕竟纯内存数据库,如果利用 WAL 每次写文件再 sync,那么性能就会下降很多) 所以,单靠 redis 的方案是不行了. redis 的高可用、高可扩方案? 主要是 redis cluster + 主从复制 (或者第三方 如果自己实现,只是一个简单的 sava/load 逻辑,比较清晰 redis 中有许多数据结构可供使用,如 (哈希、列表、set、sort_set),但对于目前的需求来说,我们内存数据结构使用的是 C++ STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash0 码力 | 12 页 | 384.47 KB | 5 月前3Curve文件系统元数据管理
com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要占用额外空间,性能和hash表的大小有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织 场景一:系统加载的时候,元数据从持久化介质中加载。 元数据进行恢复的时候,有两种情况。 一种系统必须等到元数据全部加载到内存才能提供服务,这种情况下,元数据需要在内存全缓存。这种方式,对性能友好,但是需要消耗比较多的内存,元数据服务的扩展性受限于内存,而且在元数据服务启动的 时候,需要等待一段时间加载内存。 一种是元数据需要全部加载到内存,这种情况下,元数据只需要加载一小部分主要的元数据,比如说super 到100多倍。但是这种方式,由于数据不能去全部缓存到内存,在查询元数据的时候,需要去盘上读数据,而且在文件系统这种使 用场景下,一次对文件的查找,需要在磁盘上读取多次。 我们的文件系统定位是一个高性能的通用文件系统,元数据的缓存倾向于全缓存。 系统加载的时候从持久化介质中进行加载,需要把一条条持久化的记录加载到内存里。实现把string转化为inode结构体,再插入内存结构中。 场景二:业务运行过程中,元数据的增删改查。0 码力 | 24 页 | 204.67 KB | 5 月前3
共 78 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8