xmlking / Micro Starter Kit
Licence: mit
Cloud Native GoLang Microservices - gRPC, GraphQL
Stars: ✭ 167
Projects that are alternatives of or similar to Micro Starter Kit
Dubbo Go Pixiu
Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].
Stars: ✭ 124 (-25.75%)
Mutual labels: microservices, grpc, gateway
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+1931.14%)
Mutual labels: microservices, grpc, gateway
Microservices
micro 微服务实例教程,包含JWT鉴权、熔断、监控、链路追踪、健康检查、跨域等
Stars: ✭ 341 (+104.19%)
Mutual labels: microservices, go-micro, micro
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-11.98%)
Mutual labels: microservices, grpc, go-micro
Micro
go-micro 微服务实践,更多请关注Micro中国站☞
Stars: ✭ 383 (+129.34%)
Mutual labels: microservices, go-micro, micro
Go Shopping
A sample suite of services built on the go-micro framework
Stars: ✭ 98 (-41.32%)
Mutual labels: grpc, go-micro
Micro
Micro is a distributed cloud operating system
Stars: ✭ 10,778 (+6353.89%)
Mutual labels: microservices, micro
Go Microservices
Examples of microservices written in Go using different frameworks
Stars: ✭ 113 (-32.34%)
Mutual labels: microservices, go-micro
Go Plugins
Go Micro Plugins. Moved to go-micro/plugins.
Stars: ✭ 1,654 (+890.42%)
Mutual labels: go-micro, micro
S
a go web freamwork for micro service, very very easy to create and deploy, with auto service registry and discover, high performance and based on http/2 no ssl
Stars: ✭ 67 (-59.88%)
Mutual labels: go-micro, micro
Go Proto Gql
Protobuff plugins for generating graphql schema and golang to graphql bindings. Also supports a graphql gateway (Alpha)
Stars: ✭ 127 (-23.95%)
Mutual labels: grpc, gateway
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+1039.52%)
Mutual labels: microservices, grpc
Grpcjsontranscoder
A filter which allows a RESTful JSON API client to send requests to .NET web server over HTTP and get proxied to a gRPC service
Stars: ✭ 97 (-41.92%)
Mutual labels: microservices, grpc
Hgw
hgw是由gateway网关服务、manager控制服务构成的一套轻量级网关系统。目前支持http/https协议的服务控制
Stars: ✭ 81 (-51.5%)
Mutual labels: microservices, gateway
Gnes
GNES is Generic Neural Elastic Search, a cloud-native semantic search system based on deep neural network.
Stars: ✭ 1,178 (+605.39%)
Mutual labels: microservices, grpc
Zeebe
Distributed Workflow Engine for Microservices Orchestration
Stars: ✭ 2,165 (+1196.41%)
Mutual labels: microservices, grpc
Modernarchitectureshop
The Microservices Online Shop is an application with a modern software architecture that is cleanly designed and based on.NET lightweight technologies. The shop has two build variations. The first variant is the classic Microservices Architectural Style. The second one is with Dapr. Dapr has a comprehensive infrastructure for building highly decoupled Microservices; for this reason, I am using Dapr to achieve the noble goal of building a highly scalable application with clean architecture and clean code.
Stars: ✭ 154 (-7.78%)
Mutual labels: microservices, grpc
Tesla
Tesla is a gateway service that provides dynamic routing,waf,support spring cloud,gRPC,DUBBO and more.
Stars: ✭ 161 (-3.59%)
Mutual labels: grpc, gateway
micro-starter-kit
Microservices starter kit for Golang, aims to be developer friendly.
Build Status
Quality
Overview
What you get
- [x] Monorepo - Sharing Code Between Microservices
- [x] gRPC microservices with REST Gateway
- [x] Input Validation with protoc-gen-validate (PGV)
- [x] Config - Pluggable Sources, Mergeable Config, Safe Recovery
- [x] Customizable Logging
- [x] CRUD Example using GORM, benchmarks, XORM next?
- [x] GORM code gen via protoc-gen-gorm or use protoc-go-inject-tag?
- [x] Dependency injection Container, Try wire next?
- [x] multi-stage-multi-target Dockerfile
- [x] One Step build/publish/deploy with ko
- [x] BuildInfo with govvv
- [x] Linting with GolangCI linters aggregator
- [x] Linting Protos with Buf
- [x] CICD Pipelines with GitHub Actions
- [x] Kubernetes Matrix Deployment with Kustomize
- [ ] Add k8s healthchecks with cmux
- [x] Feature Flags (enable/disable with zero cost)
- [ ] Observability
- [ ] Service Mesh with Istio
- [ ] GraphQL Gateway with gqlgen, rejoiner,gqlgen
- [ ] Graph-Based ORM ent
- [ ] Switch to Bazel Build
Getting Started
Prerequisite
Refer prerequisites docs
Initial Setup
Also Refer scaffolding docs
clone the repo
git clone https://github.com/xmlking/micro-starter-kit ~/Developer/Work/go/micro-starter-kit
# pull dependencies (when every time `go.mod` changed)
go mod download
Run
Database
By default this project use embedded sqlite3
database. if you want to use postgreSQL,
- start postgres via
docker-compose
command provided below - uncommend
postgres
import statement and commentsqlite
inplugin.go
- start micro server with
--configFile=config.dev.postgres.yaml
flag
i.e.,go run srv/account/main.go srv/account/plugin.go --configFile=config.dev.postgres.yaml
# to start postgres in foreground
docker-compose up postgres
# to stop postgres
docker-compose down
# if needed, remove `postgres_data` volume to recreate database next time, when you start.
docker system prune --volumes
Services
Node:
--server_address=localhost:5501x --broker_address=localhost:5502x
required only when you are behind VPN a.k.aWork From Home
# dev mode
make run-account
# or
make run-account ARGS="--server_address=localhost:55011 --broker_address=localhost:55021"
# or
go run srv/account/main.go srv/account/plugin.go \
--configDir deploy/bases/account-srv/config \
--server_address=localhost:55011 --broker_address=localhost:55021
make run-greeter
# or
make run-emailer ARGS="--server_address=localhost:55012 --broker_address=localhost:55022"
make run-emailer
# or
make run-emailer ARGS="--server_address=localhost:55013 --broker_address=localhost:55023"
# integration tests for config module via CMD
make run TARGET=demo TYPE=cmd
go run cmd/demo/main.go --help
go run cmd/demo/main.go --database_host=1.1.1.1 --database_port=7777
export APP_ENV=production
go run cmd/demo/main.go
Test
Refer testing docs
GitOps
Make
Refer makefile docs
Docker
Refer docker docs
Release
Refer releasing docs
Deploy
make docker DOCKER_REGISTRY=docker.pkg.github.com DOCKER_CONTEXT_PATH=xmlking/micro-starter-kit
docker rmi $(docker images -f "dangling=true" -q)
# make kustomize OVERLAY=e2e NS=default VERSION=v0.1.0-440-g6c7fb7a
make kustomize
kubectl apply -f build/kubernetes.yaml
POD_NAME=$(kubectl get pods -lapp.kubernetes.io/name=account-srv -o jsonpath='{.items[0].metadata.name}')
kubectl logs -f -c srv $POD_NAME
kubectl delete -f build/kubernetes.yaml
Reference
Project Docs
- prerequisites
- scaffolding
- makefile
- testing
- docker
- gitops
- Protobuf Style Guide
- Google Protobuf Style Guide
External Docs
- Go-Micro Getting Started
- examples - example usage code for micro
- microhq - a place for prebuilt microservices
- explorer - which aggregates micro based open source projects
- micro-plugins extensible micro plugins
- step-by-step-guide-micro
- micro-in-cn
- Platform Web
- grpc template
- Simple API backed by PostgresQL, Golang and gRPC
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].