项目作者: kzmake

项目描述 :
Monorepo and Microservices kit using micro/micro
高级语言: Go
项目地址: git://github.com/kzmake/micro-kit.git
创建时间: 2020-04-17T17:01:26Z
项目社区:https://github.com/kzmake/micro-kit

开源协议:MIT License

下载


Monorepo and Microservices kit using micro/micro for @kzmake

codecov
Go Report Card
Total alerts

  • クリーンアーキテクチャ(を意識したレイヤードアーキテクチャ)
  • マイクロサービス
  • モノレポ
  • 軽量DDD

Roadmap

  • Monorepo
  • Microservices with micro/go-micro
  • gRPC microservices
  • Support HTTP-API
  • Support CLI
  • Support NATS
  • Kubernetes with Kustomize
  • Input Validation with PGV
  • Linting Protos with Buf
  • Observability
  • Building/Testing with Bazel
  • Support gRPC reflection API

Getting Started

Init

  1. git clone https://github.com/kzmake/micro-kit.git $GOPATH/src/github.com/kzmake/micro-kit
  2. cd $GOPATH/src/github.com/kzmake/micro-kit
  3. go mod download

Service Discovery

  1. # install
  2. go get -v go.etcd.io/etcd
  3. # or
  4. brew install etcd
  5. # run
  6. etcd
  7. # or
  8. brew servces start etcd

Client

  1. # install
  2. go get -u github.com/micro/micro/v2
  3. # run
  4. micro --version

Run

  1. # grpc
  2. go run service/task/cmd/srv/main.go service/task/cmd/srv/plugin.go --registry=etcd --server_address=localhost:3001
  3. # api
  4. go run service/task/cmd/api/main.go --registry=etcd --server_address=localhost:3000

Request

use grpc

  1. export MICRO_REGISTRY=etcd
  2. # use micro
  3. micro call kzmake.microkit.task.v1 TaskService.Create '{"description": "hoge"}'
  4. {
  5. "result": {
  6. "id": "01EBC02Q7WJTTNT29CT2FVTZDG",
  7. "description": "hoge",
  8. "created_at": "2020-06-21T17:51:07Z",
  9. "updated_at": "2020-06-21T17:51:07Z"
  10. }
  11. }
  12. micro call kzmake.microkit.task.v1 TaskService.Get '{"id": "01EBC02Q7WJTTNT29CT2FVTZDG"}'
  13. {
  14. "result": {
  15. "id": "01EBC02Q7WJTTNT29CT2FVTZDG",
  16. "description": "hoge",
  17. "created_at": "2020-06-21T17:51:07Z",
  18. "updated_at": "2020-06-21T17:51:07Z"
  19. }
  20. }
  21. micro call kzmake.microkit.task.v1 TaskService.List
  22. {
  23. "results": [
  24. {
  25. "id": "01EBC02Q7WJTTNT29CT2FVTZDG",
  26. "description": "hoge",
  27. "created_at": "2020-06-21T17:51:07Z",
  28. "updated_at": "2020-06-21T17:51:07Z"
  29. }
  30. ]
  31. }
  32. micro call kzmake.microkit.task.v1 TaskService.Delete '{"id": "01EBC02Q7WJTTNT29CT2FVTZDG"}'
  33. {}
  34. # use grpcurl
  35. grpcurl -plaintext -proto service/task/interface/proto/service.proto -d '{"id": "01EBC02Q7WJTTNT29CT2FVTZDG"}' localhost:3001 kzmake.microkit.task.v1.TaskService/Get
  36. {
  37. "result": {
  38. "id": "01EBBZ73Y8FW8S02Z4ZWGAMQD1",
  39. "description": "ppp",
  40. "createdAt": "2020-06-21T17:36:03Z",
  41. "updatedAt": "2020-06-21T17:36:03Z"
  42. }
  43. }

use http

  1. http http://localhost:3000/tasks description=fuga
  2. HTTP/1.1 201 Created
  3. Content-Length: 56
  4. Content-Type: application/json; charset=utf-8
  5. Date: Sun, 21 Jun 2020 17:59:27 GMT
  6. {
  7. "description": "fuga",
  8. "id": "01EBC0HZ2F481ENFBNE0FW0JXK"
  9. }
  10. http http://localhost:3000/tasks/01EBC0HZ2F481ENFBNE0FW0JXK
  11. HTTP/1.1 200 OK
  12. Content-Length: 56
  13. Content-Type: application/json; charset=utf-8
  14. Date: Sun, 21 Jun 2020 18:01:16 GMT
  15. {
  16. "description": "fuga",
  17. "id": "01EBC0HZ2F481ENFBNE0FW0JXK"
  18. }
  19. http http://localhost:3000/tasks
  20. HTTP/1.1 200 OK
  21. Content-Length: 178
  22. Content-Type: application/json; charset=utf-8
  23. Date: Sun, 21 Jun 2020 18:00:35 GMT
  24. {
  25. "tasks": [
  26. {
  27. "description": "fuga",
  28. "id": "01EBC0HZ2F481ENFBNE0FW0JXK"
  29. }
  30. ]
  31. }
  32. http DELETE http://localhost:3000/tasks/01EBC0HZ2F481ENFBNE0FW0JXK
  33. HTTP/1.1 204 No Content
  34. Date: Sun, 21 Jun 2020 18:01:37 GMT

Credits