技术阅读周刊第第四期

image.png

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

历史更新

URL: https://www.reddit.com/r/java/comments/17ixfzf/technology_trends_for_spring_projects/
这是一个 Reddit 帖子,讨论了 Spring 项目的技术趋势,以下是一些点赞较高的回复:
在招聘的时候还会 Spring 考虑周边的技术栈:比如 Linux、Docker、kubernetes、Git 等,但如果你具备 Spring Security 和 OpenSSL 的话会更受欢迎。

这点在国内感受貌似并不明显,不确定是不是国外更看重一些。

Kotlin 在服务端目前还处于一个较小的规模,特别是如今 Java 发版节奏加快,对于大部分人来说没有足够的理由来摆脱 Java。

Spring 依然是 Java 领域最流行的服务端框架,不管你是否喜欢。

不用花太多时间去追寻学习新技术,更重要的是确保你已经打好基础了,比如数据库几乎不会发生变化,Spring 底层依然是基于 Servlet 实现的,理解这些基础技术是如何运作的,从而避免一些常见问题。
现在 Spring 已经没有使用 servlet,而是该用 WebFlux 替代

比较认可这个观点,还是更应该花时间到不会变的技术栈上,上层技术如何改变学起来也会更容易。

其中有两个评论比较有意思:
Spring 团队花了大量的时间来接入 Kotlin,比如 coroutines 和一些其他资源
在 Spring3 发布的时候,spring 团队也投入了大量时间到 Groovy
确实当下 Groovy 使用的越来越少了,所以技术潮流确实会随时间变化,还是抓住不可变的性价比更高。

Service mesh data plane vs. control plane | by Matt Klein | Envoy Proxy

URL: https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc
image.png

服务网格中的数据库面和控制面对比,数据面主要包含以下功能:

  • 健康检测
  • 路由
  • 负载均衡
  • 身份验证
  • 可观测性

控制面主要包含以下功能:

  • 服务注册发现
  • 各种控制面的配置管理

常见的数据面产品有:LinkerdNGINXHAProxyEnvoyTraefik
控制面产品有:IstioNelsonSmartStack
数据面和控制面是松耦合的,可以替换不同的数据面产品。

Kubewatch: A Kubernetes Watcher for Observability and Monitoring | by Seifeddine Rajhi | Oct, 2023 | Medium

URL: https://medium.com/@seifeddinerajhi/kubewatch-a-kubernetes-watcher-for-observability-and-monitoring-d6dea1dbeb06
介绍了一个名为 kubewatch 的开源项目。
image.png

可以将各种资源变化的事件通过 webhook 的方式发出通知,可以让维护者请求 kubernetes 的运行状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespaceToWatch: "default"
resourcesToWatch:
deployment: false
replicationcontroller: false
replicaset: false
daemonset: false
services: true
pod: true
job: false
node: false
clusterrole: true
clusterrolebinding: true
serviceaccount: true
persistentvolume: false
namespace: false
secret: false
configmap: false
ingress: false
coreevent: false
event: true

这类开源项目其实还蛮多的,我之前也写过一个用于监听我们应用 Pod 的变化的事件,然后将这些消息发送给 Pulsar,只是这个项目做的更全了。

Bye-bye, ChatGPT: AI Tools That Are As Good As ChatGPT (But Few People Use) | by ArticleAce | Medium

URL: https://medium.com/@Article_Ace/bye-bye-chatgpt-ai-tools-that-are-as-good-as-chatgpt-but-few-people-use-9df4dcdf5ab0
作者分享了一些除了 ChatGPT 之外的工具,大部分是一些垂直应用。

Auto-GPT

https://github.com/Significant-Gravitas/Auto-GPT
image.png

这个工具已经很流行了,可以自己给自己输入 Prompt 直到完成你的目标为止。

OpenAI-Playground

ChatGPT 目前只能让我们选择使用的模型(3.5/4)但我们可以使用 playground 来自定义一些输出。
https://platform.openai.com/playground
image.png

Jasper

Jasper 是一个用于为社交媒体、广告、博客、邮件生成内容的 AI 工具,相当于是一些不同的垂直领域。
https://www.jasper.ai/
image.png
作者会用它来生成一些创意、和视频脚本。

Quillbot

https://quillbot.com/
这个也是我自己用的较多的工具,可以用来润色我们的英文表达。
但我需要在 GitHub 上提一些比较复杂的 issue 、PR 或者是英文邮件时,就会用这个工具进行润色,效果还是很不错的。
image.png

如何用Go实现一个异步网络库?

URL: https://mp.weixin.qq.com/s/UBcDrPwEdFz7JOfj0UP2Uw
本文主要讲解了一些场景的网络模型以及 Go 原生网络模型的原理,并对如何实现一个网络库提供了一些思路
网络库通常是为了解决两个问题:

  • C10K/100K 问题,如何应对海量的并发连接
  • 服务端如何在高并发的时候正确响应
    对此有三种网络模型:
  • 传统 IO 阻塞模型
  • Reactor 模型
  • Proactor 模型
    image.png

Go 原生模型其实已经很强了,可以把他理解为 Reactor 模型。
image.png

可以基于以下三层设计进行设计:
image.png
也可以参考一些开源的网络库:

文章链接:

#Newletters