-
基础 version:1.15 移除GOPATH,依赖GOMOD管理
-
(聚合层)
- (web框架)
- validate map的反射机制
- 错误码 引进B站错误码并且稍加改动,grpc层次直接返回server端错误码
- metadata元数据
-
demo
- admin+gorm(share-db架构)
- service+sql
- job+Beanstalkd
- 数据库delete_time 为null的时间处理,自定义时间
- 多租户 (流量染色)
- errgroup并发请求
- thread包使用
- excel返回
- 失血模型
- 获取天气的等api的demo,client以及分层设计
-
日志
- Metrics
- Access Log
- Tracing Opentracing+TraceID
-
监控
- promethues监控+模板
-
服务发现
- ETCD
-
服务熔断
- grpc客户端层 break拦截器=>google sre
- http层 breakerHandler=>google sre
-
服务限流
- 当CPU>90%的时候开始拒绝请求
- shedding 拦截器,包括grpc服务端层,http层
-
服务超时
- 全链路的超时,通过context控制
-
负载均衡
- p2c算法
-
领域驱动
- 整洁架构
-
cache
- redis
- 击穿 内存中lock然后共享数据
- 雪崩 过期时间在基础值上+了个随机值,防止大量失效
- 穿透 缓存一条内容为*,60s过期的数据,避免高并发访问数据库
- where转化主键
-
stat采集
-
cpu
-
memory
通过golang的runtime.MemStats实现
其中不通的操作系统通过go build的条件编译实现
-
接口或者rpc的total,pass,drop
SheddingHandler http的middleware里注入来统计
rpc同理,通过server的UnarySheddingInterceptor来注入
-
metrics
api通过bindRoutes时new
rpcServer通过NewRpcServer时new,其中metrics的name通过server.SetName(c.Name)来改变
-