IceberGu

Go 与异步 IO - io_uring 的思考

本来准备写一篇详细关于 io_uring 的中文文章,不过在使用上官方的一些文章写的已经非常详细,简单的拿来翻译感觉又失去了乐趣于是便借鉴 liburing,配合 Go 提供的并发机制实现了一个 golang 版本的异步 IO 库 —— iouring-go

Go 深入源码 —— select 与 channel

Golang 通过 select...case 语句实现了对 channel 的多路复用以及非阻塞收发操作

Go 深入源码 —— channel

Don'tcommunicatebysharingmemory,sharememorybycommunicating.不要通过共享内存来通信,而要通过通信来实现内存共享。

镜像构建时使用 ARG 导致镜像缓存失效

工作中发现项目在镜像构建时,即使没有修改 go.mod 也依然会执行 go mod download 来拉取依赖,而不是使用镜像缓存,导致每次构建时间都很长 经过排查发现是使用 ARG 导致的镜像缓存失效

【译】高性能异步 IO —— io_uring (Effecient IO with io_uring)

本文的目的是介绍最新的 Linux 异步 IO 接口 `io_uring` ,并将其与现有产品进行比较。 我们将探讨其存在的原因,它的内部工作原理以及开放给用户的接口。 本文不会讨论特定命令之类的细节,这些都可以查看相关 [man](https://github.com/axboe/liburing/tree/master/man) 文档或者 [lord of the io_uring](https://unixism.net/loti/),我们会介绍 `io_uring` 及其工作原理,希 望读者可以更深刻的理解。 本文和 [man](https://github.com/axboe/liburing/tree/master/man) 之间会有一些重叠,如果不提供这些细节就无法提供对 `io_uring` 的描述

SSH 用法进阶 —— 免密登录与端口转发

ssh 是一个非常常用的工具,通常用来登录到远程主机上,不过 ssh 不仅仅只能用来登录,还能执行远程命令,或者进行多种的端口转发

编译 Go 程序时加入 git commit 等额外信息

在编译 Go 程序的时候如何加入一些额外的信息,比如 当前最新的 `commit sha`,编译的 `go version` 之类的

Runc 与 Cgroups

Runc可以算是启动创建容器的最后一步,其中设置Cgroups,隔离namespaces,配置网络,挂载相应的卷等一系列操作

Linux Cgroups V1 介绍与使用

简介Cgroups全称ControlGroups,是Linux内核提供的物理资源隔离机制,通过这种机制,可以针对一组进程或线程设置资源权重,统计资源使用量,操纵启停等Cgroups可以限制,记录一组进程或者线程所使用的的物理资源(CPU,Memory,IO等),是LXC实现虚拟化所使用的的资源管理手

grpc 开发进阶 - 失败重试

RPC调用失败情况分析RPC调用失败可以分为三种情况:RPC请求还没有离开客户端RPC请求到达服务器,但是服务器的应用逻辑还没有处理该请求服务器应用逻辑开始处理请求,并且处理失败最后一种情况是通过serverconfig配置的重试策略来处理的,是本文主要讲解的内容而对于前两种情况,gRPC客户端会自

grpc 开发进阶 - 传递 metadata

现在网上大部分都是grpc相关的介绍,真正涉及到grpc的配置使用的文章还是比较少的所以本系列着重介绍grpc开发时可以能会用到的一些配置grpc支持在server端和client端发送metedata,一些验证信息之类的可以放在这个里边metadata可以通过metadata包来构建typeMDm

grpc 开发进阶 - 使用拦截器 interceptor

现在网上大部分都是grpc相关的介绍,真正涉及到grpc的配置使用的文章还是比较少的所以本系列着重介绍grpc开发时可以能会用到的一些配置拦截器在作用于每一个RPC调用,通常用来做日志,认证,metric等等interfactor分为两种unaryinterceptor拦截unary(一元)RPC调

grpc 开发进阶 - 加密传输

现在网上大部分都是 grpc 相关的介绍,真正涉及到 grpc 的配置使用的文章还是比较少的 所以本系列着重介绍 grpc 开发时可以能会用到的一些配置

grpc 开发进阶 - 使用压缩器 compressor

现在网上大部分都是grpc相关的介绍,真正涉及到grpc的配置使用的文章还是比较少的所以本系列着重介绍grpc开发时可以能会用到的一些配置

vim - 格式化JSON

为什么需要使用vim格式化json对于json文本,如果没有经过格式化,可读性还是极差的,这时需要格式化或者说是优化JSON内容