相信使用过Linux的AF_PACKET类型socket的朋友都知道,性能不是特别好,而且似乎引入了一个新的问题——用户态程序要处理所有来的报文(可能也能绑定socket,博主我没有尝试过),这应该是相当拉胯了。使用eBPF XDP处理完美解决所有问题,还附带了UMEM共享内存,省掉了不少CPU时钟,不仅能解决云原生场景下的一些性能和潜在问题,还能顺带做个SD-WAN,能不香吗?(手动狗头
写代码
初探DPDK——环境准备与编写第一个简易的NAT程序
博主早期使用Golang+TAP/TUN实现了对数据包L2/L3级别的操作,但是很显然这么做也会有很大的问题——用户程序的数据包发出到TAP/TUN,还要再复制到用户态程序处理,然后通过用户态程序的套接字再从主网卡发出,这样一来既延长了数据路径,又带来了多次的用户态内核态间的数据拷贝,整体上造成的指令数不容小觑。DPDK则可以完全解决这个问题,本篇文章则为对DPDK的一个开端,在完成开发环境准备的同时,博主我稍微修改了l2fwd例程,使得其能够实现一个简易的NAT操作(不能用的那种),感受一下DPDK的魅力~
Golang代码补全和远程调试可以兼得!Projector+GoLand,真香
既可以拥有GoLand代码补全的能力,又可以在Windows上体验到原生的Linux编程调试过程,当开发环境和终端设备能够解耦开的时候,工程随行就成为了可能,开发效率再度+++++到底是什么东西能有这么香?我们来看看~
云上搬砖——Code Server落地实践
如今2020年了,甚至都可以说2021年了,在行业一直推行“上云”的这一背景下,越来越多的企业服务开始从私有云转移到了公有云上。在企业纷纷上云提高自身效率的同时,我也一直在想有什么办法来提高个人的开发效率呢?写个代码一直都强调高内聚低耦合,我们的生产力工具和开发系统本来也就要进行解耦,以避免掉太多对终端设备的依赖,来应对突发状况下或者一些特殊的环境依赖需要。今天,无意中发现了一个新的东西——Code Server,即一个VS Code的网页端,也是一个开源软件,借助Code Server,终于有了一个完全托管于云上、无需再过多依赖本地终端的环境。
Go LRU缓存算法
其实我本来不打算写这篇文章的,直到提交完代码后发现…在所有 Go 提交中击败了99.42%的用户…这就有点意思了,所以还是写一篇吧刚好总结一下。
Golang的io.MultiWriter实现原理
Golang的标准库中包含一个io包,其中有个MultiWriter方法。这个方法不论传入什么样的Writer甚至是os.File都能够正常接受,这让我有些好奇他是怎么实现的。本篇文章对此进行阐述
golang搬砖填坑指南 1
写这篇文章是因为这两天在写一个运维小工具,自动备份数据并加密上传到对象存储用的,由于牵扯到备份,免不了需要压缩,在使用golang做数据压缩时出了点问题,本文针对这个问题做相关研究和探讨。