目标功能

  • 基础 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)来改变