waterdrop

module
v1.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2023 License: Apache-2.0

README

English | 简体中文

Go codecov Go Report Card Release License

Waterdrop

Waterdrop is a high performance micro-service framework based on gin and grpc. Waterdrop comes from (The Three Body Problem). waterdrop

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 tool waterdrop

Contributing

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL