Skip to main content

高并发/0005-中间件

· One min read

一个高并发系统需要很多中间件

消息通信、数据存储、服务治理

数据库:

mysql postgreSQL

mongodb clickhouse

消息队列:异步通信、解耦。

kafka redis stream rabbitMQ rocketMQ

缓存:加速访问、减压数据库

redis valkey dragonfly 本地内存缓存

数据库中间件:分库分表、读写分离

shardingSphere

web服务器/负载均衡:流量调度与高可用

nginx traefik kong

微服务治理:服务发现与熔断

go-zero

监控:指标(Metrics)/日志(Logs)/链路追踪(Traces)

搜索:es

链路追踪(Traces)

tractID: UUID或Snowflake ID,Snowflake ID → Base64 编码(26字符 → 18字符),减少网络开销‌

func CompactTraceID(id uint64) string { 
return base64.RawURLEncoding.EncodeToString(binary.BigEndian.AppendUint64(nil, id))
}

span:spanID

Opentelemetry

初始化导出器(exporter)、资源(resource)、追踪器提供者(tracer provider),最后初始化一个 tracer 实例。

Elasticsearch

OpenTelemetry SDK + Jaeger 将是分布式追踪的理想方案

分布式挑战

数据一致性 负载均衡