技术阅读周刊,每周更新。
历史更新
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)
|
最终会输出到文件中,适配起来倒也蛮简单的。
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
中创建的主要流程。
- 客户端校验
yaml
格式是否正确 - 成功后会将
yaml
写入 etcd
. - 之后会将 Pod 信息写入调度队列
- 调度队列获取该任务,然后选择一个合适的 Node 节点部署 Pod
- 等待 Pod 启动成功通过 Prob 探针校验
- 将 Pod 的
IP:Port
信息作为 endpoint
存储在 etcd
- 如果有创建
service
,会将这个 endpoint
和 service
进行绑定 - 之后其余的组件就可以使用这个 service,比如
service mesh
、ingress
、kube-proxy
、coreDNS
等组件。
像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 写起来要简单)
有几个核心流程:
- 每次创建一个连接时,都会将这个连接保存在内存里,使用 conn 作为 key
- 每次发送消息时会将消息发到一个内部 chan 中,然后异步读取 chan 并通过 conn 发送消息
URL: https://medium.com/javarevisited/five-api-performance-optimization-tricks-that-every-java-developer-must-know-75324ee1d244
作者讲了一些常见的 API 优化手段,不止是 Java 开发者适用。
- 并行调用
- 避免长事务:避免 RPC 和查询逻辑与事务代码放在一起,应该拆分。
- 添加合适的索引
- 数据库返回少量的数据
- 加缓存
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
的正确用法
- 入参不需要
Optional
- 私有方法返回不需要
Optional
- 公共方法返回使用
Optional
,因为有些开发者可能不会判断 null。 - 集合类数据返回不需要返回
Optional/null
, 而是返回空集合。
文章链接:
#Newletters