Other language:
This is a major upgrade version of jfeng45/servicetmpl.
The followings are a series of articles to explain the different areas of the application design:
- Go Microservice with Clean Architecture-A Major Upgrade
- A Self-Evolved Microservice Framework in Go
- A Non-Intrusive Transaction Management Lib in Go — How to Use It
- A Non-Intrusive Transaction Management Lib in Go — How it Works?
Don't need to finish all steps in this section up-front to get the code up running. The simplest way is to get the code from github and run it and come back to install the part when there is a real need. However, it will encounter an error when accesses the database. So, I'd recommend you install at least one database ( MySQL is better), then most of the code will work.
go get github.com/jfeng45/servicetmpl1
There are two database implementations, MySQL and CouchDB, but most functions are implemented in MySQL. You'd better install at least one of them.
Install MySQL
run SQL script in script folder to create database and table
The code works fine without it. CouchDB is created to show the feature of switching database by changing configuration.
Installation on Windows
Installation on Linux
Installation on Mac
CouchDB Example
Access "Fauxton" through browser: http://localhost:5984/_utils/# (login with: admin/admin).
Create new database "service_config" in "Fauxton".
Add the following document to the database ( "_id" and "_rev" are generated by database, no need to change it):
{
"_id": "80a9134c7dfa53f67f6be214e1000fa7",
"_rev": "4-f45fb8bdd454a71e6ae88bdeea8a0b4c",
"uid": 10,
"username": "Tony",
"department": "IT",
"created": "2018-02-17T15:04:05-03:00"
}
Without it, calling another Microservice piece won't work, the rest of application works fine. Please follow instructions in reservegrpc to set up the service.
cd [MySQLroot]/bin
mysqld
It should already have been started
Please follow instructions in reservegrpc to start the server.
In "main()" function of "main.go", there are two functions "testMySql()" and "testCouchDB()". "testMySql()" reads configurations from "configs/appConifgDev.yaml" and accesses MySQL. "testCouchDB()" reads from "configs/appConifgProd.yaml" and access CouchDB. There are multiple functions in "testMySql()", you can focus on testing one each time by commenting out others.
cd [rootOfProject]/cmd
go run main.go
Start gRPC Server
cd [rootOfProject]/cmd/grpcserver
go run grpcServerMain.go
Start gRPC Client
cd [rootOfProject]/cmd/grpcclient
go run grpcClientMain.go
MIT License