技术阅读周刊第一期

Newsletter01.png

我自己平时有每天阅读文章的习惯,也会将这些文章保存起来并做一些记录,今天在看阮一峰的科技爱好者周刊时突然想到我也可以将这些看过的觉得不错的内容分享出来。
image.png

顺便也可以让大伙参与留下自己觉得不错的内容,互相学习。

以下便是第一期的内容:

Istio 中的负载均衡详解及多集群路由实践 🌟🌟🌟

1. 介绍了客户端负载均衡和服务端负载均衡的特点和应用场景。
2. 引申出 Istio 使用 Envoy 做客户端负载均衡的方案。
3. 介绍 Istio 支持的一些负载均衡算法。
4. 如何为具体的服务配置负载均衡,以及如何编写 DestinationRule 和VirtualService

理解 gRPC 协议🌟🌟🌟🌟

1. 首先是介绍了 JSON 编码的缺点,可读性高,但性能差。
2. PB 性能好,但可读性差,同时还需要配套工具,比如 .proto 格式 IDL 文件来做额外的接口描述。
3. 接口请求是底层依然是 http 协议,不过是 http/2 协议,但是请求的映射是直接使用 .proto 文件的描述。
4. 消息格式描述了消息体前有五个字节,第一个字节描述了是否压缩,后续四个字节描述了消息大小。
5. 因为是 stream 协议的关系,才加了这五个字节,因为每次请求都是同一个连接,为了要区分不同的请求就需要在这五个字节来区分了。

Protocol Buffers 编码🌟🌟🌟🌟

配合上一篇一起阅读更加

详细讲解了 PB 编码的原理。
1. 定长数据都比较简单,主要是解决变长字符串的问题。
2. 以 websocket 为例,websocket 的是三挡变速,而 PB 引入了 
VarInts 实现了无级变速,但前提是字段不能太多
3. 使用了 Tag 代替了字段名,但坏处就是解码必须需要 PB 文件,也就是需要通过 PB 文件生成目标语言。
4. 同时 Tag 也不能更改,更改后解码端得同步更新。

The top 7 software engineering workflow tips I wish I knew earlier 🧰 🌟🌟🌟🌟

作者使用多年的提高工作效率的七个习惯
1. Git 相关,别名,我觉得对我来说是自动补全+历史记录更好用
2. 编码相关,别直接使用查找,可以多使用 IDE 快捷键+AI 编程
3. 记录学到的知识,比如 Notion,现在我使用 Obsidian
4. 使用 Todo 记录自己的灵感,脑子不是拿来存储这些东西的,是拿来做创造力相关的事情(这个我也是使用的 Obsidian 插件 Memos)。
5. 可视化沟通,比如使用截图 App,写文档等。
6. 使用密码 App,比如 1Password
7. 使用窗口管理 App

conc:Go 语言的并发工具库🌟🌟🌟🌟

Better structured concurrency for go

这是项目的介绍,简单来说就是封装了一些使用 goroutine 的常用操作:

  • 使用 conc.WaitGroup 替代标准的 sync.WaitGroup,并提供了安全运行的特性,不用担心 panic。
  • 使用 pool.ResultPool 可以拿到执行的结果,Javaer 是不是似曾相识。
  • iter.Map/iter.ForEach 可以直接并发 Map 或者是迭代 slice。

image.png
这里举了个例子,如果我们想要写出一个安全的 goroutine 程序,大概需要写左边那么多的代码,而使用 conc 会简单很多,也更加易读。

其实从这里就不难看出,conc 只是将这些代码封装好了,感兴趣的也可以看看源码,代码不多,很快就可以看完。

以上内容和评分纯主观参考,均没有使用类似于 ChatGPT 这类 AI 工具进行总结,绝对是传统人肉阅读归纳,匠心工艺。

上榜文章都很不错,推荐大家去阅读原文。

文章链接: