主页 | Web版 | 订阅 | 归档 | Feed

GopherDaily

20250220

每日一谚:Log or return an error. Prefer the last one more


Go技术生态

使用testing/synctest测试并发代码
Go 1.24 引入了一个新的实验性包 testing/synctest 来帮助测试并发代码。这篇文章解释了这个实验背后的动机,演示了如何使用 synctest 包,并讨论了它的未来潜力。testing/synctest 包解决了并发程序测试中的难题,例如测试负条件和处理时间。它通过隔离的运行环境(称为“泡泡”)和 Wait 函数来实现快速可靠的测试。文章还介绍了“泡泡”的生命周期、阻塞和“泡泡”的关系,以及如何测试网络代码。最后,文章说明了 synctest 包的实验性状态以及如何提供反馈。

关于 sqlc 的一些经验总结
作者在商业项目中使用 sqlc 的一些经验总结,包括项目配置技巧、动态更新参数、动态 where 子句以及使用 sqlc.embed() 进行左连接时的注意事项和解决方法。文章还分享了配置 sqlc 的一些实用技巧,例如使用 YAML 锚点复用配置,以及使用类型覆盖来简化代码。

Go团队正悄悄地将Monadish纳入标准库

iter.Seq实战

使用 Go 语言在 Kubernetes 中扩展 gRPC
本文探讨了在基于微服务的系统中使用 gRPC 进行扩展的挑战。gRPC 利用 HTTP/2 和 Protocol Buffers 提供高效的微服务通信,但其长连接特性与 Kubernetes 服务的负载均衡机制之间存在冲突,可能导致空闲 Pod 和资源浪费。文章通过实验演示了这个问题,并提出了使用无头服务、客户端负载均衡和 DNS 解析器来解决这个问题,从而实现 gRPC 在 Kubernetes 中的有效扩展。

Go 1.24 发布:大量的优化和关键升级!
Go 1.24 是 Go 语言发展中的一个重要版本迭代。它在保持与先前版本兼容性的同时,全面引入了许多新特性、优化和改进,确保绝大多数 Go 程序能够顺利编译和运行。此更新不仅为开发者提供了更强大的编程工具,也显著提升了 Go 语言的性能、安全性和易用性。主要改进包括:对泛型类型别名的完全支持;go 命令的改进,包括对工具指令和 JSON 格式输出的支持;运行时性能优化,平均降低了 2-3% 的 CPU 开销;编译器对 cgo 生成的类型的检查增强;链接器默认生成 GNU build ID 或 UUID;标准库的更新,包括新的基准测试函数、改进的 finalizer、新的 weak 包、新的 crypto 包等等。

让我们聊聊锁!
Kavya Joshi 探讨了锁何时以及为何会影响性能,深入研究了 Go 的锁实现作为案例研究,并讨论了锁真正成为问题时可以使用的一些策略。

云原生技术

我们需要你的pgdumps
DoltHub 团队正在努力开发 Doltgres,这是 Dolt 的 PostgreSQL 版本。为了使 Doltgres Beta 版本能够顺利发布,他们需要大量的 pgdumps 来改进 pgdump 兼容性。文章中给出了两个例子来说明 pgdumps 如何帮助改进 Doltgres 的 pgdump 兼容性,并呼吁用户提供 pgdumps 以帮助完善 Doltgres。

TiDB DDL 优化:性能提升 50 倍
本文介绍了 TiDB 如何处理海量在线 DDL 操作,在高并发和高负载下保持稳定性和高吞吐量。通过对 TiDB DDL 框架的优化,实现了显著的性能提升,例如 TiDB 8.2 的 DDL QPS 提升了 5 倍,TiDB 8.3 再次提升了 4 倍,而 TiDB 8.5 的建表速度更是提升了 50 倍。文章详细阐述了 TiDB 在线 DDL 的工作原理,并深入探讨了工程最佳实践和底层优化策略,例如调整调度粒度、提高并发性、优化资源利用率以及替换广播机制等。

Kmesh v1.0 正式发布!
2025 年伊始,我们欣喜地宣布 Kmesh v1.0.0 正式发布。我们由衷感谢所有 Kmesh 社区贡献者在过去三个月中付出的不懈努力和辛勤工作。如果没有大家的共同努力,我们就无法取得这次成功的发布。 在 v1.0 版本中,Kmesh 对其东西向流量管理功能进行了重大改进,提高了整体网络流量管理效率和安全性。这些增强功能不仅优化了数据传输稳定性,还为用户提供了更强大的流量治理能力。此外,我们不断改进 Kmesh 的易用性,使其更易于使用和直观,使用户能够快速轻松地上手。 Kmesh v1.0 的主要功能包括:加密通信、将授权执行卸载到 XDP 程序、就地负载均衡、可观察性增强以及所有模式现在都支持零停机重启。Kmesh 还支持无服务端服务、服务入口和 Istio 1.24。

在生产环境中运行 HTMX 的体验 - 来自经验丰富的软件工程师的故事
本文探讨了经验丰富的软件工程师在生产环境中使用 HTMX 的实际经验。文章总结了 HTMX 的优点,例如简化前端代码、提高性能以及易于集成到现有项目中。同时也指出了 HTMX 的一些缺点,例如缺乏完善的配套工具和资源,以及并非适用于所有场景。文章还讨论了 HTMX 在大型团队和代码库中的可扩展性问题,并提出了相关疑问。总的来说,文章认为 HTMX 是构建现代 Web 应用的一种简单有效的方法,但并非万能的解决方案。

FOSDEM 2025 回顾
FOSDEM(自由和开放源代码软件开发者欧洲会议)是一个大型的免费聚会,面向开放源代码软件爱好者,每年二月在比利时布鲁塞尔举行。这是一个由社区组织的非营利性活动,也是同类活动中规模最大的活动之一。本文回顾了VictoriaMetrics团队在2025年FOSDEM上的经历,包括他们在监控和可观察性研讨会上的演讲,以及对OpenTelemetry和Prometheus等社区的参与。

AI

使用 S3 触发器维护 DynamoDB 中的文件列表
我今天上午构建了一个实验性原型系统,该系统通过使用 S3 触发器和 AWS lambda 维护并行的 DynamoDB 表来有效跟踪已添加到大型 S3 存储桶中的文件。这个系统利用了 Claude 项目和 ChatGPT,并通过简单的提示就构建出了大部分功能。虽然中间遇到一些bug,但是最终通过 o3-mini-high 工具解决了问题,最终在不到 15 分钟的提示时间内就从粗略的想法变成了可工作的概念证明。这避免了我过去因为对 S3、IAM、AWS Lambda 和 DynamoDB 的每次调用的细节感到沮丧而不得不避免此类项目。文章最后还提到了最近发布的新的 S3 元数据系统,该系统可能会解决这个问题。

OctoTools:一种用于复杂推理的可扩展工具代理框架
OctoTools是一个无需训练、易于使用且易于扩展的开源代理框架,旨在解决不同领域中的复杂推理问题。它引入了标准化的工具卡来封装工具功能、用于高级和低级规划的规划器以及用于执行工具使用的执行器。在16个不同的任务中验证了OctoTools的通用性,与GPT-4o相比,平均准确率提高了9.3%。此外,在使用相同工具集的情况下,OctoTools的性能也优于AutoGen、GPT-Functions和LangChain,最高可达10.6%。通过全面的分析和消融研究,OctoTools在任务规划、有效工具使用和多步骤问题解决方面展现出优势。

流行工具与项目

spf13/cobra
A Commander for modern Go CLI interactions

fatedier/frp
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

evcc-io/evcc
Solar Charging ☀️🚘

jackc/pgx
PostgreSQL driver and toolkit for Go

danielmiessler/fabric
fabric is an open-source framework for augmenting humans using AI. It provides a modular framework for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.

bluenviron/mediamtx
Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams.

yorukot/superfile
Pretty fancy and modern terminal file manager

asdf-vm/asdf
Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

kubernetes/kube-state-metrics
Add-on agent to generate and expose cluster-level metrics.

AdguardTeam/AdGuardHome
Network-wide ads & trackers blocking DNS server

binwiederhier/ntfy
Send push notifications to your phone or desktop using PUT/POST

prometheus/node_exporter
Exporter for machine metrics

mudler/LocalAI
🤖 The free, Open Source alternative to OpenAI, Claude and others. Self-hosted and local-first. Drop-in replacement for OpenAI, running on consumer-grade hardware. No GPU required. Runs gguf, transformers, diffusers and many more models architectures. Features: Generate Text, Audio, Video, Images, Voice Cloning, Distributed, P2P inference

grafana/loki
Like Prometheus, but for logs.

derailed/k9s
🐶 Kubernetes CLI To Manage Your Clusters In Style!

glanceapp/glance
A self-hosted dashboard that puts all your feeds in one place

AlexxIT/go2rtc
Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.

quic-go/quic-go
A QUIC implementation in pure Go

samber/lo
💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)

moby/moby
The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

projectdiscovery/nuclei
Nuclei is a fast, customizable vulnerability scanner powered by the global security community and built on a simple YAML-based DSL, enabling collaboration to tackle trending vulnerabilities on the internet. It helps you find vulnerabilities in your applications, APIs, networks, DNS, and cloud configurations.

vmware-tanzu/velero
Backup and migrate Kubernetes applications and their persistent volumes

kubevirt/kubevirt
Kubernetes Virtualization API and runtime in order to define and manage virtual machines.

gruntwork-io/terragrunt
Terragrunt is a flexible orchestration tool that allows Infrastructure as Code written in OpenTofu/Terraform to scale.

influxdata/telegraf
Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.


编辑:Tony Bai

编辑主页:tonybai.com

GopherDaily项目:github.com/bigwhite/gopherdaily

Copyright 2019-2024 GopherDaily