dpdk rcu lib

dpdk rcu linux的RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改。RCU适用于需要频繁的读取数据,而相应修改数据并不多的情景……

阅读全文

contiv memif

contiv memif contiv的cni与device plugin相结合,实现了: Pod能同时接入不止一张网卡 Pod接入的网卡可以是tap,veth,memif devicePlugin Device Plugin实际是一个运行在Kubelet所在的Node上的gRPC server,通过Unix Socket、基于以下(简化的)API……

阅读全文

raft选举流程

图解 Raft (thesecretlivesofdata.com) 算法目的:实现了分布式节点的数据一致性 节点有三个状态:follower,candidate,leader leader election 初始阶段所有节点处于follower状态 follower状态下节点存在一个election timeout(150ms—300ms之间的随机数,随机降低了多个节点同时……

阅读全文

etcd client v3 连接流程

etcd client v3 连接流程 首先需要了解grpc框架的一些概念,这边引用网上的一张图 Resolver 提供一个用户自定义的解析、修改地址的方法,使得用户可以自己去实现地址解析的逻辑、做服务发现、地址更新等等功能。 将Endpoints里的ETCD服务器地址(127.0.0.1:2379这种格式)做一次转换传给g……

阅读全文

单调栈

由于数据在栈内是单调递增或单调递减的,单调栈适合用来找出数组中第一个大于或小于某个元素的场景。元素出栈后,再根据题意对出栈元素进行处理,更新数据至result。 标准模板 第一个for循环内循环输入数组, 第二个for循环维持栈内单调特性,不满足单调的元素依次出栈 第一个for循环内对元……

阅读全文

拓扑排序(选课)

207. 课程表 - 力扣(LeetCode) 思路 课程之间的依赖关系可以用图来表示 顶点:课程 边:有向的边,起点是前置课程,终点是后置课程 这种图叫做AOV(Activity On Vertex)网络,字面意思就是边代表了节点之间的活动的先后关系。 按照题意,这个图是无环的(课程不能循环依赖),也就是D……

阅读全文

优势洗牌(田忌赛马)

870. 优势洗牌 - 力扣(LeetCode) 思路 将nums1(自己的马)进行升序排序,得到下等马->上等马的序列 贪心策略 若某个位置上自己的马比对手的马强,由于已经排过序了,已经是最下等的马了,因此使用这匹马 若某个位置上自己的马比对手的马弱,将该下等马放到最后的位置(对手的上等马的位……

阅读全文

redis Server

数据库切换 默认会创建16个数据库,客户端通过select选取。但一般情况只用第0个数据库,切换容易导致误操作 1 2 3 4 5 6 7 8 9 typedef struct redisDb { dict *dict; //键空间 dict *expires; //过期字典 int id; } redisDb; 所有键空间存储在redisDb的dict中,称为key space 每个键是字符串对象,值是各种对象 读写键操作 更新key……

阅读全文

redis 多节点

主从(复制) 同步 slave刚上线或断线重连时的第一次全量同步 slave的客户端主动发送sync命令,触发master的BGSAVE,BGSAVE过程中将命令存入缓冲区,BGSAVE完成后发送RDB文件,slave完成RDB载入后再发送缓冲区的指令 命令传播 完成同步后的增量同步 mas……

阅读全文