高并发/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 将是分布式追踪的理想方案
分布式挑战
数据一致性 负载均衡