Problem Solver

Beyond a programmer — a problem solver without boundaries

[Go] Is It Okay to Run 100 Million Goroutines?

Goroutines are one of the key advantages of the Go language, known for being lightweight—even when spawning hundreds of thousands or more. However, what happens if these goroutines remain in a parked state for extended periods? This article explains the operational principles of goroutine parking and delves into the internals of Go’s GMP runtime model. It explores the system load and performance impact when many goroutines are inactive, and introduces practical strategies to detect and prevent such issues.

May 20, 2025 · 12 min · 2346 words · dingyu

[DB] Redlock and Lease in Distributed Systems

How are leaders managed in distributed environments? Introducing two approaches to concurrency control.

April 29, 2025 · 5 min · 874 words · dingyu

[EDA] Running a Local Kafka Cluster with SASL SCRAM Authentication (Docker Compose)

E2E testing is critical for validating production-ready applications. But how do you simulate a secure Kafka environment locally—especially with SASL authentication? This post demonstrates how to spin up a Kafka cluster with both SCRAM-SHA-256 and SCRAM-SHA-512 using Docker Compose.

March 28, 2025 · 6 min · 1257 words · dingyu

[EDA] Kafka (MSK) Monitoring with Burrow Prometheus And Thanos

Still monitoring Kafka using only low-level Input/Output Bytes? Let’s build topic-level monitoring using Burrow, JMX, and Node Exporter.

March 21, 2025 · 8 min · 1665 words · dingyu

[EDA] Schema Registry

How can we ensure backward and forward compatibility for event schemas?

February 24, 2025 · 4 min · 807 words · dingyu

[Protocol] Exploring RPC... and GRPC in Depth

Whenever we hear about RPC communication (or maybe it’s just me?), we tend to assume it involves Protocol Buffers over HTTP/2 — that is, gRPC. But what exactly is RPC? Why is gRPC so fast? And when should we use it?

February 6, 2025 · 3 min · 456 words · dingyu

[Go] Go Convention

Efficient Go Project Structure Guide

January 12, 2025 · 3 min · 550 words · dingyu

[LGTM] Elasticsearch to Loki Migration Story

Is heavy-duty Elasticsearch necessary just for basic application monitoring? This post explores the transition to Loki and the lessons learned.

January 4, 2025 · 3 min · 620 words · dingyu

[EDA] Flink Dynamic Job Case Study

Do we really need to redeploy the job every time the policy changes? A deep dive into executing Flink jobs dynamically.

December 6, 2024 · 4 min · 703 words · dingyu

[Go] Gophercon 2024 - Building Minimalistic Backend Microservice in Go

No more unnecessary frameworks—pure Go is the ultimate form of tuning. Learn how to build minimalistic applications with vanilla Go.

November 5, 2024 · 3 min · 435 words · dingyu