技术阅读周刊第第5️⃣期

image.png

技术阅读周刊,每周更新。

历史更新

How to Use OpenTelemetry in Go. OpenTelemetry is a powerful… | by Akanksha Rana | KloudMate

URL: https://blog.kloudmate.com/how-to-use-opentelemetry-in-go-e416ca01c499

作者一步步带你使用 golang 配置了 OpenTelemetry,不过由于 Go 不支持 agent,还是没有 Java 方便,很多地方都需要硬编码。

1
2
3
4
5
6
7
8
9
tp := trace.NewTracerProvider(  
trace.WithBatcher(exp),
trace.WithResource(newResource()),
)
defer func() {
if err := tp.Shutdown(context.Background()); err != nil {
l.Fatal(err)
}}()
otel.SetTracerProvider(tp)

image.png

最终会输出到文件中,适配起来倒也蛮简单的。

What happens when you create a pod in Kubernetes | by Daniele Polencic | ITNEXT

URL: https://itnext.io/what-happens-when-you-create-a-pod-in-kubernetes-6b789b6db8a8

本文讲解了一个 Pod 在 kubernetes 中创建的主要流程。

image.png
image.png
image.png
image.png
image.png

  • 客户端校验 yaml 格式是否正确
  • 成功后会将 yaml 写入 etcd.
  • 之后会将 Pod 信息写入调度队列
  • 调度队列获取该任务,然后选择一个合适的 Node 节点部署 Pod
  • 等待 Pod 启动成功通过 Prob 探针校验
  • 将 Pod 的 IP:Port 信息作为 endpoint 存储在 etcd
  • 如果有创建 service,会将这个 endpointservice 进行绑定
  • 之后其余的组件就可以使用这个 service,比如 service meshingresskube-proxycoreDNS 等组件。

像Redis作者那样,使用Go实现一个聊天服务器,不到100行代码

URL: https://colobu.com/2023/10/29/implement-a-small-chat-server-like-antirez-in-100-lines/

前段时间 Redis 作者用 C 语言写了一个简单的聊天服务器,作者使用 Go 实现了类似的功能,代码量也很少,适合新手联系( Go +goroutine 确实比 Java 写起来要简单)
image.png

有几个核心流程:

  • 每次创建一个连接时,都会将这个连接保存在内存里,使用 conn 作为 key
  • 每次发送消息时会将消息发到一个内部 chan 中,然后异步读取 chan 并通过 conn 发送消息

Five API Performance Optimization Tricks that Every Java Developer Must Know | by lance | Javarevisited | Medium

URL: https://medium.com/javarevisited/five-api-performance-optimization-tricks-that-every-java-developer-must-know-75324ee1d244

作者讲了一些常见的 API 优化手段,不止是 Java 开发者适用。

  1. 并行调用
  2. 避免长事务:避免 RPC 和查询逻辑与事务代码放在一起,应该拆分。
  3. 添加合适的索引
  4. 数据库返回少量的数据
  5. 加缓存

Are you correctly using Optional, Collections, and Null in your Java code ? | by Abhishek Singh | Medium

URL: https://medium.com/@abhisheksinghjava/are-you-correctly-using-optional-collections-and-null-in-your-java-code-5d2b8617d47c

Java 介绍了 Optional 的正确用法
image.png
image.png

  1. 入参不需要 Optional
  2. 私有方法返回不需要 Optional
  3. 公共方法返回使用 Optional,因为有些开发者可能不会判断 null。
  4. 集合类数据返回不需要返回 Optional/null, 而是返回空集合。

文章链接:

#Newletters