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!