thumbnail
剖析zookeeper sdk,高效的多路复用
背景 最近遇到zk无法使用,zk断开后无法重连等问题,排查了下用到的zk sdk,顺便写文章记录下这个sdk是如何高效复用连接的。 流程分析 获取连接 服务启动时,会创建zk connection,本质上就是一个TCP连接。 如果失败,就从zk配置里取下一个zk server地址,进行连接。 func (c *Conn) connect() { l…
thumbnail
如何debug minikube里的golang容器?
问题背景 在学习开源项目时,很多时候光看代码是搞不清楚实际运行时会走哪个逻辑分支,或者无法推测方法参数值。最简单的办法是 debug,熟悉某个功能的执行流程。 我们通常用 delve 去 debug golang 程序,但是很多云原生项目运行在 k8s 环境里,在本地我们可以用 minikube 来模拟 k8s。两者结合产生新问题:如何 debug…
thumbnail
重复创建软链接产生的奇怪现象
问题现象 当前有个目录 a,需要对其创建一个软链接 b。 tree . `-- a |-- a1.txt `-- a2.txt 1 directory, 2 files 第一次执行ln -s a b 成功执行,符合预期 tree . |-- a | |-- a1.txt | `-- a2.txt `-- b -> a 2 directories, …
thumbnail
Golang面试题
Go基础 切片 通过 make 方法去声明一个 int 32 类型的一个slice,指定它的长度为10,容量为20。那么对于这样生成的一个变量,它在内存当中占据多大的空间? 切片对象占用内存大小:int 类型的 cap、len 字段,一个底层数组的指针。8+8+8=24 字节 底层数组占用内存大小:int32 类型,长度为 20 的数组。4*20=…
thumbnail
K8s面试题
K8s 如何通过 kubeproxy 保证两个 Pod 之间的相互通信? kubeproxy 会监听 pod 的变化,在 node 上配置 iptables规则,将访问的 service ip,做 DNAT,转到 service 负载均衡的endpoint ip。但是 iptables 查找负载均衡的 endpoint 是 O(n)复杂度,当集群 …
thumbnail
程序员办公用品推荐
20240810更新 降噪耳机 降噪耳机是我觉得买得比较值的电子产品,因为我经常用到。在前一家公司时,每天午休要用。而现在因团队部分同事在其他城市,经常需要线上会议沟通,也是会用到耳机的。另外在通勤的路上,回家的飞机上,去旅游坐的大巴车上都会用到。总之降噪耳机对于我来说是很实用的,并且还能提升幸福感。午休时带上耳机、眼罩,睡眠质量杠杠的。 因使用频…
thumbnail
Chrome 插件推荐
OneTab 标签页打开太多的情况下,一键关闭并整理到列表。后续用到哪个标签页再重新打开。 关闭浏览器时,很多标签页并不想丢弃,希望下次打开浏览器还能找回这些标签页,此时也可以使用OneTab。 五彩 网页划线高亮批注工具,用来在网页上记笔记。对于个人博客网站,担心网页以后打不开,可使用剪藏功能爬取网页内容,永久保存下来。另外还支持备份笔记到其他软…
thumbnail
Goland、Idea 插件推荐
Copilot Github 开发的智能代码编写工具,可以代码提示,直接提问。它写的代码基本能用,特别是结合本地代码生成的提示,极大的提高开发效率。另外可以看看我之前的文章:Github Copilot 是如何提升我的工作效率? AceJump 使用快捷键快速移动鼠标到某个位置,这样减少手离开键盘去拿鼠标的次数,提高效率。 .ignore 快速创建…
thumbnail
Mac 软件推荐
20240725更新 heynote 平时工作中,经常出现需要临时记录下,打个草稿之类的场景,我一般是用 sublime 临时记录下。还有需要对文本进行处理,例如查找、替换、调整格式、json格式化等场景,也是用 sublime 解决。在周五,或者平时关机的时候清理下这些内容。 最近同事推荐了一款专门做这个事情的软件“heynote”。slogan…
thumbnail
在 K8S 节点上使用非 Nodeport 默认端口范围暴漏服务
需求背景 服务 A 部署在 K8S 中,集群外的服务 B 需要调用服务 A,同时调用服务 A 的端口是指定了的,必须是 5000,无法修改。 K8S 集群是客户的,我们只能部署服务,不能修改集群。 服务 A 需要得到真实的客户端 IP。 解决方案一 通过 Nodeport 的方式暴漏服务 A。 5000 端口不在 Nodeport 默认端口范围内(…