waterdrop
waterdrop copied to clipboard
💧Waterdrop is a high performance micro service framework. Waterdrop comes from (The Three Body Problem).
English | 简体中文
Waterdrop
Waterdrop is a high performance micro-service framework based on gin and grpc. Waterdrop comes from (The Three Body Problem).
Features
- HTTP Server: Based on gin and can reuse all its features
- RPC Server: Based on the official gRPC-go and use ETCD for service registration and discovery, default load balancing policy is roundrobin
- Conf: Support YAML, TOML, JSON and other extensions, default TOML parsing, user can decide whether or not to watch the config file changes for hot reload configuration
- Database: Integrated MySQL, Redis
- Log: Based on Zap encapsulation
- Trace: Integrate Opentracing access and use jaeger to record trace records
- Distribute Lock: distributed Lock is implemented based on Redis and ETCD. The former is suitable for final consistent business locks, while the latter is suitable for strongly consistent business locks
- Stats: Metrics & Profile for service operation
- Broker: Support RocketMQ and Kafka
- Utils: Helper class function
- Registry: Service Registry discovery, etcd is the default service discovery component
- Status: Global error handling for error conversion between HTTP/RPC
- Dashboard: Build metrics dashboard based on Grafana, to be implemented
- Breaker: Support alibaba sentinel, google sre breaker
- Middlewares & Interceptors: HTTP/RPC Server common middleware, such as recovery, trace, metric and logger,etc
Installation
go get github.com/UnderTreeTech/waterdrop
Tools
Execute the following command to get waterdrop tool to help you boost your development progress
go get -u github.com/UnderTreeTech/waterdrop/tools/waterdrop
You can use waterdrop help
to find out how to use tools
You can generate protobuf codes but make sure you've already installed protc
and protoc-gen-go
.
Here we don't install the two plugins automatically because we are not sure which version you will choose.
-
waterdrop new your_project_name
new a standard layout project -
waterdrop protoc --grpc --swagger xx.proto
generate grpc code and swagger api file -
waterdrop swagger serve xx.swagger.json
serve and browse swagger api -
waterdrop utgen xx.go
generate unit tests -
waterdrop upgrade
upgrade toolwaterdrop
Contributing
Contributions are always welcomed! You can start with the issues labeled with bug or feature.