yumWant2debug
码龄5年
关注
提问 私信
  • 博客:10,883
    社区:1
    问答:4
    10,888
    总访问量
  • 26
    原创
  • 277,446
    排名
  • 22
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2019-12-15
博客简介:

yumWant2debug的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    242
    当月
    4
个人成就
  • 获得29次点赞
  • 内容获得4次评论
  • 获得44次收藏
  • 代码片获得443次分享
创作历程
  • 1篇
    2024年
  • 20篇
    2023年
  • 4篇
    2022年
  • 1篇
    2020年
  • 2篇
    2019年
成就勋章
TA的专栏
  • ZNS SSD模拟器相关
    2篇
  • Raft算法相关
    9篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【续】ZNS SSD模拟器进行YCSB测试

由于官方YCSB测试需要硬盘搭载文件系统,使用ZenFS进行测试,进行BUG修复及支持。
原创
发布博客 2024.02.29 ·
558 阅读 ·
8 点赞 ·
0 评论 ·
5 收藏

极端情况下的活性问题

现在故障发生了,节点5宕机了,同时节点4只和节点2保持连接,节点1、2、3互相保持连接。这种情况下节点1、3收不到节点4的心跳,会发起Pre-Vote请求,但由于节点2能收到节点4的心跳,所以节点2不会同意Pre-Vote请求,因此节点1、3无法满足超过半数节点同意Pre-Vote请求的条件,该请求以失败告终。如图所示的4节点Raft集群有一个节点和其他三个网络不太稳定,假设它能发送消息给别的节点,但收不到其他节点的消息,那么它将一直收不到心跳消息,这会导致该节点转为候选者,然后自增任期并发起新的选举。
原创
发布博客 2023.09.18 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Raft配置变更及Pre-Vote

随着时间推移,需要进行节点配置变更,需要安全、自动的方式添加节点到集群.通常系统配置是由每台服务器的id和地址组成,之所以不能直接从旧配置切换到新配置,在于可能导致出现矛盾的多数派。如图系统中本来以3台服务器的配置运行,此时系统管理员添加两台服务器。如果系统管理员直接修改配置,那么集群中的节点可能无法完全在同一时间做到配置切换,这会导致服务器S1和S2形成旧集群的多数派,而同一时间服务器S3、S4、S5切换到新配置,会产生两个不同的多数派。
原创
发布博客 2023.09.17 ·
319 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Raft实现线性一致性及优化

领导者向所有跟随者发送新一轮的心跳,如果收到多数派的响应,那么领导者就知道,在它发出心跳的那一刻,不可能有一个任期更大的领导者存在。实现线性一致性的一种办法是,领导者将读请求当作写请求处理即读请求也走Raft,领导者收到读请求时同样写入一条日志,等到raft集群将该日志复制、提交并应用到状态机后,返回读请求结果。可以这样优化的时间在于,Raft算法保证一个新的领导者至少在选举超时时间electionTimeout后才被选举出来,所以在租期时间内,可以认为选举不会发生,领导者仍然是真正的领导者。
原创
发布博客 2023.09.16 ·
351 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

客户端协议

在响应客户端之前宕机,该命令已经执行成功,只是回复客户端的过程中宕机,客户端没有收到命令执行的回复,会寻址下一个领导者处理请求,同一个命令会被执行两次,这是不可接受的。Raft算法要求由领导者处理客户端请求,如果客户端不知道领导者是谁,那么它会和任意一台服务器通信;如果通信的节点不是领导者,那么它会告诉领导者是谁。如果请求id已在日志中,说明这是重复的请求,此时忽略新的命令,直接返回已执行的命令的响应。,客户端会重新发出请求到其他服务器上,最终定位到新的领导者,用新的领导者处理请求,直到命令被执行。
原创
发布博客 2023.09.16 ·
68 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Raft处理旧领导者

当分区后,会出现一种状况,分区的一方没有收到领导者,可能会导致选举Term一直上升,因为无法达到超过半数的选票即3张,因此导致Term一直上涨,等到分区恢复后,由于它的Term最大,导致其他节点不能获得选票,在不断增加Term后,最后才能选出Leader。由于新领导者的选举会更新超过半数服务器的任期,因此旧的领导者即便收到客户端请求也不能提交新的日志,因为它会联系至少一台具有新任期的多数派集群的节点,并发现自己的任期太旧,然后自己转为跟随者继续工作。
原创
发布博客 2023.09.15 ·
89 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Raft清理不一致的日志

领导者将从nextIndex[2]=11处开始检查,一直检查到nextIndex[2]=4处,附带的日志条目信息为index=3且term=1,与领导者匹配。(3) 如此往复,直到领导者的nextIndex[1]=5,带上前一个日志的唯一标识:索引为4且任期为4的信息。(1) 一开始领导者根据自己的日志长度,记录nextIndex[1]= 10+1 =11,带上前一个日志条目的唯一标识:索引为10且任期为6.检查发现跟随者1的索引为10处没有日志,检查失败。跟随者1的索引为9处还是没有日志,检查失败。
原创
发布博客 2023.09.15 ·
95 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Raft领导者变更的安全性

领导者变更的安全性
原创
发布博客 2023.09.06 ·
94 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Raft日志复制

Raft日志复制
原创
发布博客 2023.09.05 ·
148 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Raft 领导者选举

raft领导者选举介绍
原创
发布博客 2023.09.04 ·
189 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

商人过河问题

n名商人带n个随从乘船渡河,一只小船能容纳k人,由他们自己划行。随从们秘密商定,在河的任一岸,一旦随从的人数比商人多,就杀人越货。当然如何渡船的方案则由商人们决定,那么怎样才能确保商人安全渡河呢。
原创
发布博客 2023.09.04 ·
441 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

C 零长数组

可以看到arr的地址和a的地址差4字节,即len的内存后紧跟着a,申请了20字节长度的空间,可以通过arr->a访问这块空间。零长数组一般与结构体结合,实现变长数组,放在结构体最后,相当于申请一段len长度的空间,可以直接通过数组名访问变长空间。
原创
发布博客 2023.08.05 ·
91 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

ZenFS+rocksdb+nvmevirt搭建ZNS SSD模拟环境

在虚拟机中搭建ZNS SSD实验环境并通过rocksdb进行测试。是一款比较新的SSD 仿真器(emulator),通过内核模块来模拟ZNS SSD,论文中性能更好,模拟的准确度更接近真实设备,且支持kv-ssd。在NVMeVirt可以通过Makefile中不同的参数配置SSD类型,也可以在ssd_config里配置SSD参数。Zenfs是rocksdb的一个插件,可以减少系统写放大,支持ZNS,自带性能测试工具。
原创
发布博客 2023.06.25 ·
2448 阅读 ·
16 点赞 ·
1 评论 ·
24 收藏

Linux ringbuffer分析

Linux源码解压后可在源码目录下Documentation/trace/ring-buffer-design.txt中找到设计。ring_buffer位于linux-5.7/include/linux/ring_buffer.h中。kfifo位于linux-5.7/include/linux/kfifo.h中。ring_buffer实际使用trace_buffer结构体,定义如下。面试被问到网卡RingBuffer数据结构,瞎猜猜错了,学习一下。本博客针对Linux5.7。
原创
发布博客 2023.06.01 ·
451 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

awk -v OFS无效

通过上面的例子可以发现的是在定义了OFS之后,处理的文本并没有按照我们的预想一样进行正确的输出,而是第二次增加了$1=$1之后,才能输出。因为OFS是对字段进行操作的,只有我们队字段进行了操作,上面的结果才能正确的显现出来。除了利用$1=$1之外,我们还可以利用NF+=0同样可以实现类似的效果。awk可以定义输出的分隔符,其中默认的输出分隔符。
原创
发布博客 2023.05.31 ·
218 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

SPDK介绍(一)——用户态驱动

SPDK介绍
原创
发布博客 2023.05.29 ·
938 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

sed单双引号问题

shell解释 单引号不进行变量替换 双引号进行变量替换。
原创
发布博客 2023.05.26 ·
163 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

虚拟机centos7.9安装k8sCannot find a valid baseurl for repo: base/7/x86_64

报错Cannot find a valid baseurl for repo: base/7/x86_64。(ifconfig下网卡名)解决方法:添加DNS。
原创
发布博客 2023.03.14 ·
375 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux链接

1).删除符号连接f3,对f1,f2无影响;2).删除硬连接f2,对f1,f3也无影响;3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
原创
发布博客 2023.03.01 ·
60 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Longest increasing subsequence(LIS)最长增序子序列二分查找

桩的数量是最长子序列的长度。每当一张牌放在一堆纸上时,将一个后指针放在前一堆的顶牌上(假设它具有比新牌更低的价值)。它的反向是对增长最长的子序列算法的回答。与耐心排序算法的不同之处在于,不需要在允许的最左边的堆上放置新卡。若当前元素比所有堆的第一个元素大,创建新的堆并加入到堆数组中,否则将当前元素加入到第“比当前元素小的堆数量”个堆。每张后续卡片放置在一些现有的堆上,其顶部卡的值不大于新卡的值,或者放在所有现有桩的右侧,从而形成新的堆。比较当前指向的元素和每个堆的第一个元素,计算出比当前元素小的堆数量。
原创
发布博客 2023.02.18 ·
102 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多