Waterdrop

Waterdrop (water) [github.com/UnderTreeTe…]. is a high performance micro-service framework based on gin and grpc. Waterdrop comes from (The Three Body Problem).

Features

  • HTTP Server: Gin based encapsulation, reuse all features of GIN
  • RPC Server: based on the official gRPC development, service registration and discovery based on ETCD, default roundrobin load balancing
  • Conf: supports multi-format extensions such as YAML, TOML, and JSON. By default, tomL parsing is performed and you can customize whether to monitor hot update configuration of files
  • Database: Integrates MySQL and Redis
  • Log: Based on Zap encapsulation
  • Trace: Integrated Opentracing access, jaeger landing support
  • Distribute Lock: a distributed Lock is implemented based on Redis and ETCD. The former is suitable for the final consistent service Lock, and the latter for the strongly consistent service Lock
  • Stats: Service run metrics & Profile
  • MQ: RocketMQ is supported by default, Kafka.
  • Utils: helper class functions
  • Registry: Service registration discovery, prescribes common interface definitions, and supports ETCD by default
  • Status: Global error handling for error conversion between HTTP/RPC. This can then be extended to load error definitions from remote
  • Dashboard: Build metrics market based on Grafana, to be implemented
  • Breaker: Fuse, planned to support Alibaba Sentinel, Google Sre Breaker and Netflix Hystrix, to be implemented
  • Middlewares & Interceptors: Generic HTTP/RPC server middleware, such as token bucket/leaky bucket traffic limiting and signature signature
  • Cron: scheduled task. Scheduled task processing is implemented based on Cron. To be implemented

Installation

go get github.com/UnderTreeTech/waterdrop

Documentation

Contributing

Contributions are always welcomed! You can start with the issues labeled with bug or feature.

Welcome Star, Fork, Watch, PR!