Istio 中的 CR 资源 VirtualServiceGateway 都存在 hosts 属性,而且 VirtualService.spec.http.route. destination.host 也存在 host 字段,这些字段容易让人混淆,特以此做一解释和区分。

VirtualService

hosts

VirtualService 定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议的匹配规则。如果流量符合这些特征,就会根据规则发送到服务注册表中的目标服务(或者目标服务的子集或版本)。

阅读更多

可以通过 mount --bind 命令来将两个目录连接起来,mount --bind 命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,如下所示:

阅读更多

目标

每当有新的 git tag 推送到 GitHub 时执行对应工作流; 工作流中构建 Docker 镜像并推送到 Docker Hub

Github Actions 介绍

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you’d like, including CI/CD, and combine actions in a completely customized workflow.

通过 GitHub Actions 自动化执行自定义软件开发工作流. 可以在 Github Actions 市场 发现, 创建及共享任何你喜欢的Job.

阅读更多

什么是CPU上下文

Linux是一个多任务操作系统,它支持远大于CPU核心数的任务同时进行。当然,这些任务并不是真的同时在运行,而是因为系统在很短的时间内,将CPU轮流分配给它们,造成多任务同时运行的错觉。每个任务在运行前,CPU都需要知道任务从哪来加载,又从哪里开始运行,也就是说,需要事先帮它们设置好CPU寄存器和程序计数器( Program Counter,PC )。

CPU寄存器:是CPU内置的容量小、但速度快的内存,用来临时存放指令执行运行过程中的操作数和中间(最终)的操作结果。

程序计数器:是用来存储CPU正在运行的指令位置、或者即将执行的下一条指令位置。

CPU寄存器和程序计数器是CPU运行任何任务前,必须依赖的环境,也被称作CPU上下文。

阅读更多

Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。

1
$ git commit -m "hello world"

上面代码的-m参数,就是用来指定 commit mesage 的。

如果一行不够,可以只执行git commit,就会跳出文本编辑器,让你写多行。

1
$ git commit

阅读更多

连接相对于其他对象,创建成本较高,资源也有限。如果没有连接池,在高并发场景下,连接关闭又新建,很快就会因为过多的TIME_WAIT(连接主动关闭方)导致无法创建更多连接了,程序被压死。

net/http 连接池参数

Go (测试版本 go 1.14)的net/http包是有连接池功能的,具体地,是 Transport 用于连接池化。

Transport is an implementation of RoundTripper that supports HTTP, HTTPS, and HTTP proxies (for either HTTP or HTTPS with CONNECT).

By default, Transport caches connections for future re-use.

阅读更多

在 UDP 上使用 connect 的情况:

  1. 需要获取 ICMP 的错误信息
  2. 如果需要向同一个IP地址多次 sendto ,用以减少不断的连接、断开,提高性能

阅读更多

本文整理在 K8S 环境中的网络性能调优实践。一些涉及到内核参数的调整,关于如何调整 Pod 内核参数的方法请参考 为 Pod 设置内核参数

高并发场景

TIME_WAIT 连接复用

如果短连接并发量较高,它所在 netnsTIME_WAIT 状态的连接就比较多,而 TIME_WAIT 连接默认要等 2MSL 时长才释放,长时间占用源端口,当这种状态连接数量累积到超过一定量之后可能会导致无法新建连接。

阅读更多