- 博客(36)
- 问答 (1)
- 收藏
- 关注
原创 水sssssssssssssssssssssssssssssssssssssssss
水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2024-09-11 14:59:46 69
原创 netty系列(二)eventloop
一个eventloop只有一个线程,这个线程不但要处理channel的select事件,也要处理任务队列中的任务,大致框架就是一个for循环,但是有两种唤醒方式:select、task,哪个触发就执行哪个,执行完毕后进入下一次循环。https://github.com/LightMingMing/blog/tree/master/netty 其他人的文档。NioServerSocketChannel和NioSocketChannel都实现了AbstractNioChannel。建议copy到本地阅读。
2024-07-03 09:45:23 311
原创 pulsar源码系列(一)---搭建broker调试环境
pulsar源码系列第一篇。讲述了如何搭建pulsar broker调试环境,为调试pulsar broker源码奠定基础
2024-05-16 16:41:14 439
原创 etcdv3.6源码流程---compact
因为treeIndex中包含所有的elemkey,所以压缩的思路就是先遍历整个treeIndex来进行压缩:没有被删除的elemkey就用最后一次写入的值来覆盖,然后把该elemkey对应的(revision,version)作为key保存到一个map keep中,被删除的key则不会保存到该map keep中,然后遍历数据库中所有key,如果该key即(revision,version)不在map keep中,那么就从数据库中删除该key,如果在,则跳过,然后就完成了整个压缩操作。
2024-05-05 12:14:52 467
原创 etcd源码流程---调试环境的搭建
本文讲述了如何在windows机器上利用goland和vmware虚拟机搭建含有两个节点的etcd集群。搭建好后便可以方便的打断点,debug,学知识了
2024-05-04 17:17:36 499 1
原创 etcdv3.6源码流程---Put
etcd v3.6 源码笔记----put流程。分析了etcd put的来龙去脉,对了解etcd架构,etcd是如何使用raft的很有帮助。这边建议copy到本地阅读,因为csdn阅读界面不友好
2024-05-04 17:01:59 286
原创 kubeadm join和init源码阅读笔记
kubeadm的代码是放在kubernetes/kubernetes下面,github上那个kubernetes/kubeadm不是kubeadm的代码仓库。k8s版本v1.23。
2024-03-29 18:51:27 384
原创 scheduler开发实战(零)
如果kubelet PLEG报错,导致节点notReady,十有八九是该节点上的docker卡死了,去该节点重启docker一般可以解决,短时间调度大量pod就有可能导致这样,暂未排查。1.2:配置我们自己的defaulter-scheduler的deployment文件中spec.replicas字段为3,保证高可用,假设pod叫做myscheduler-xxx。1.4:写一个脚本删除默认的调度器和默认的锁,这样我们的defaulter-scheduler就有大概率来获取到锁。
2024-03-06 17:31:21 335
原创 (四)clientset、dynamic client源码阅读
分两步,第一步获取unstructedList形式的对象,此时每个对象都是unstructed的即未知的;第二步是手动把unstructedList中的unstructed对象解析成指定对象。总结:以clientset podWatch为例。2.1:dynamic client创建。1.1:clientset创建过程。
2024-03-05 15:42:57 324
原创 (三)Indexer源码阅读
代码基于k8s v1.23queue是一个提供fifo能力的store接口,indexer是一个提供索引功能的store接口,cache.cache是indexer的一个实例,cache.cache的存取操作以及index功能的实现都是委托于内部的threadSafeMap,所以本文以cache.cache结构体为剖析对象本文内容: 1:cache.Index和threadSafeMap.Index函数。通过分析,彻底理解k8s indexer机制 2:cache.Add操作详解。通过分析,巩固理解
2024-02-29 14:20:24 155
原创 (二)informer源码阅读
k8s版本基于v1.23本文分析了informer的相关源码,当读完本文读者就应该可以了解到一个要实现一个自定义controller,应该做一些什么事情。文章内容如下: 1:informer创建流程 2:informer.AddEventHandler添加处理函数 3:informer启动流程 !!! 4:informer.Lister 5:等待informer同步完成 6:自定义controller笔记
2024-02-28 16:44:54 464
原创 (二)数据源
备注:prometheus配置文件中的action如replace/keep/drop/labelmap等操作都是发生在抓取之前,也就是在抓取之前完成标签替换,标签中__xx__等以下划线开头的标签都是prometheus肿的特殊标签,用来对prometheus的抓取行为进行配置的。thanos原理以及怎么部署,网上文章一大把,可以自己百度,这里就重点说一下通过thanos查到的指标中标签的问题。1.2 thanos query、thanos side-car 启动参数样板。1:thanos(略)
2024-02-23 16:48:59 446
原创 (一)组件监控平台和grafana
变量我们应该按照层层递进的关系,比如数据源、命名空间、redis-exporter、instance四个变量,那么应该是数据源决定命名空间,命名空间决定exporter,exporter决定instance,选定了数据源后则只能查该集群的namespace,选定namespace后则只能查该namespace下的exporter,当exporter选定以后,instance也就确定了(我们目前是把redis-exporter做到了redis-cluster的每一个pod里)3:grafna配置。
2024-02-23 16:47:40 251
原创 prometheus监控项目
1:组件监控平台和grafana1:web服务器,接受请求,生成grafana url,并返回对应的grafana面板给用户;通过thanos查询所有集群名,然后把结果返回给前端(重点)2:部署grafana,很简单,可以百度/chatgpt,故一笔带过;配置grafana,普通用户看到部分变量,管理员看到全部变量(重点)3:grafana面板配置,包括变量设置,promql编写,仪表盘设置,这里只是简单介绍一下,更多详情请自己百度。
2024-02-23 16:45:06 218
原创 kube-state-metrics v2.3.0源码分析
本文基于kube-state-metrics v2.3.0 因为公司k8s用的v1.22和v1.23,kube-state-metrics需要适配版本。本文以metricsServer为分析对象。
2024-02-20 18:46:05 244
原创 k8s scheduler开发实战(二):带插件参数版
基于k8s v1.23.3版本,在第一版的基础上新增了功能,是的插件可以从KubeSchedulerConfiguration.yaml文件中读取插件参数
2024-02-18 16:41:01 921
原创 k8s scheduler开发实战(一):简单的,无参数,无自定义配置文件的调度器
本文基于k8s 1.23.3版本,本文会带你实现一个最简单的k8s调度器插件
2024-02-18 16:34:09 728
原创 k8s scheduler开发实现(四):源码笔记
k8s v1.23.3版本调度器源码阅读笔记。记录了scheduler启动流程、KubeSchedulerConfiguration.yaml配置文件的加载流程、插件加载流程、具体的调度过程、scheme加载,最后还简单介绍了K8s源码里常用的options机制
2024-02-18 16:24:05 502
原创 保护模式下的RPL(一)
《x86汇编语言:从实模式到保护模式》读书笔记 源码面前,了无秘密 —-jjhou 保护模式下的CPL,RPL,DPL(二)(两篇文章一起看最好,由于先写的二,后写的一,所以有一些重复的,懒得合并了(●’◡’●)CPL,RPL,DPL我觉得最难理解的就是RPL,看了书上的代码后 有种豁然开朗的感觉,子曰:独乐
2017-04-28 14:15:16 1107
原创 保护模式下的CPL,RPL,DPL与特权级检查(二)
X86汇编语言:从事模式到保护模式读书笔记 ----------特权级保护PS:此文并没有多长,只不过末尾附上了完整源代码占了90%的篇幅 保护模式下的RPL(一) 1》只在第一次引用一个段的时候进行特权级检查 (你能进入就说明你用有访问权限,此后无需再检查) 2》不允许直接从特权级高的代码段转移到特权级 的代码段 (特权级比你
2017-04-22 11:47:47 2589
原创 补码疑云
补码疑云从大一到现在了,学的东西越来越多对计算机也越来越了解,然而补码就像一个阴魂不散的家伙,从大一到大二一直都困扰着我。每次都是一百度就感觉自己好像懂了似的,然而过得几天就又搞混了,我就发誓一定要征服它,然而每次都是无功而返,直到最近学汇编,突然间茅塞顿开,以前看的东西“噌”的一下就全都想起来了。为了让大家能更深刻的认识补码,而不至于像我一样似懂非懂经常感到困惑于是就写下了这篇文章,也算为自己留个
2017-04-07 10:20:24 635
原创 C++程序栈与尾递归优化
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。 -----取自百度百科 只要理解了函数调用栈,那么尾递归就很好理解了。如果你还不理
2016-10-28 13:44:52 3209 2
原创 浅析C++程序栈
程序运行的时候,临时变量是存储在栈上的,当一个函数调用完成时程序会自动清除临时对象,这是我们都知道的,然而这个栈到底是如何运行的呢?
2016-10-28 13:15:33 2009
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人