K8S 八月 06, 2023

kubelet 架构设计解析之 Memory Manager

文章字数 11k 阅读约需 10 mins.

作者:@weiliang-ms

Memory Manager(译为内存管理器)是 kubelet 内部的一个组件,旨在为 Guaranteed QoS 类型 pod 提供保证内存(和大页内存)分配功能...

查看全文

K8S 七月 30, 2023

kubelet 架构设计解析之 CPU Manager

文章字数 20k 阅读约需 18 mins.

作者:@weiliang-ms

CPU Manager 是 kubelet 的一个组件,能够让用户给容器分配独占 CPU。CPU Manager 从 Kubernetes v1.10 进入 Beta 阶段, 在 Kubernetes v1.26 中,它进阶至正式发布(GA)状态。

注:本文涉及源码基于 kubernetes v1.23

为 pod 固定 CPU(核心),减少 CPU 上下文切换,提高缓存亲和性,从而降低应用程序延迟和提高的 CPU 吞吐量。

大多数 linux 平台基于以下三种...

查看全文

OTHERS 七月 16, 2023

处理大数据集的灵活格式 —— JSON Lines

文章字数 5.6k 阅读约需 5 mins.

JSON Lines,顾名思义,就是每行都是一个 JSON,是一种文本格式。

在处理和分析大型数据集时,JSON Lines 格式成为了一种受欢迎的选择。JSON Lines 通过将每个 JSON 对象放在独立的一行中,使得逐行读取和处理数据变得简单,易于处理大型数据集、容易与现有工具集成,具有灵活性和可扩展性、易于阅读和维护等特点。

与传统的 JSON 格式相比,JSON Lines 不需要一次性加载整个文件,而是可以逐行读取和处理数据。这种特性使得 JSON Lines 非常适用于处理大型数...

查看全文

GIT 四月 30, 2023

分析 Gitlab 提交记录的命令行工具

文章字数 10k 阅读约需 9 mins.

GitLab Analyser 是一个使用 Golang 编写的跨平台命令行工具。

通过调用 GitLab REST API ,可分析指定项目和分支在某时间范围内的 Commit 情况,包括:

  1. 统计每个提交中修改的所有文件
  2. 统计新增代码行数、减少代码行数 —— 相当于 git diff
  3. 统计有效新增代码行数(忽略空格和换行的新增代码行数)、有效减少代码行数 —— 相当于 git diff -w

统计结果按提交人邮箱进行汇总后,按有效代码总行数排名,并输出至 console。

同时,将所有提交...

查看全文

WEB 二月 19, 2023

使 nip.io 域名在纯内网环境可用

文章字数 4.5k 阅读约需 4 mins.

简单,却伟大 中,我们介绍了几个非常简单,但又非常强大的 DNS 解析服务,如 nip.iosslip.iolocaltest.me 等。

然而在 K8s 集群内部,或没有 DNS 服务的纯内网环境中,我们却无法直接使用这些服务。

那就只能回归到挨个域名配置 host 的原始方式了吗?不!有一个能解析这类域名的 DNS 服务就可以了。

CoreDNS 是一个用 Go 编写的灵活可扩展的 DNS 服务器,是 CNCF 的毕业项目。可通过 Kubernetes 插件 集成至 Kubernetes...

查看全文

GO 二月 05, 2023

批量上传 Jar 包至 Maven 仓库

文章字数 3.4k 阅读约需 3 mins.

如果你有一些只有 Jar 包没有 pom 文件的类库需要上传至 Maven 仓库(如 Nexus),
或 Jar 和 pom 都有,但需要通过离线方式从一个 Maven 仓库迁移至另一个 Maven 仓库,可以试试下面这个命令行工具。

Upload Jars:https://github.com/AlphaHinex/go-toolkit/tree/main/upload-jars

批量上传 Jar 包至 Maven 仓库的命令行工具。
如果存在与 Jar 包同名的 pom 文件,也会一并上传。

Jar...

查看全文

GO 一月 29, 2023

想知道你的公众号昨日都有哪些文章被阅读了吗?

文章字数 3.8k 阅读约需 3 mins.

在微信公众平台中,提供了前一日 00:00 ~ 24:00 的阅读、分享、关注数统计,如:

但当我们想知道这个昨日阅读的次数,分别是由哪些文章产生的,每篇文章新增了多少阅读量时,无论桌面端的微信公众平台还是移动端的订阅号助手,都无法给出我们这个明细数据。

如果能有这样一个统计每天推送过来就好了:

使用钉钉扫描下方二维码,申请加入钉钉群,以便接收阅读量统计消息。

扫描下方二维码关注 周拱壹卒 公众号,并发送 公众号 关键字,加空格,再加要统计的公众号的 Cookie 值(获取 Cookie ...

查看全文

GO 十二月 11, 2022

用 Go 构建全平台命令行工具

文章字数 11k 阅读约需 10 mins.

Write once, run anywhere 是 Sun 1995 年为宣传 Java 语言的跨平台特性而提出的口号。

然而了解 Java 的人都知道,这个 run anywhere 是以目标环境存在 JVM 为前提的。当我们希望构建一个可以 run anywhere 的命令行工具时,Java 显然不是最好的选择。

作为一个更加简洁、现代的编程语言,Golang 可以通过指定 GOOSGOARCH 两个环境变量,将 Go 代码编译为目标环境的可执行文件(无需 Go 运行环境等其他任何依...

查看全文

BOOK 八月 14, 2022

《Go in Action》书摘

文章字数 42k 阅读约需 38 mins.

1.1.2 Concurrency

  • Channels help to enforce the pattern that only one goroutine should modify the data at any time.
  • … channels are used to send data between several running goroutines.
  • If your main function doesn’t exist in package main, the build tools...
查看全文

DEVOPS 一月 02, 2022

使用 easyctl 在多主机上并行执行脚本

文章字数 5.3k 阅读约需 5 mins.

当有大批量主机,需要进行类似的操作时,推荐一个不需要配置 SSH 免密登录 的简单工具 —— easyctl

上面这个场景,主要使用到了 easyctl 中的 执行指令集 - 跨主机并行执行shell,easyctl 提供的其他功能及使用方式,可见 源码 或文档中的其他部分。

因为 跨主机并行执行 shell 这个功能实际就是通过 ssh 连接到各主机,并行执行指定命令,并将最终直接结果汇总,所以理论上只要支持 ssh 的环境,都可以使用 easyctl 的这个功能,比如 Mac,甚至 Windows...

查看全文
加载更多
0%