Cleanup and move template
This commit is contained in:
		
							
								
								
									
										76
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								README.md
									
									
									
									
									
								
							| @@ -2,22 +2,16 @@ | |||||||
|  |  | ||||||
| Go Micro is a microservices library which provides the fundamental building blocks for writing fault tolerant distributed systems at scale. It is part of the [Micro](https://github.com/myodc/micro) toolchain. | Go Micro is a microservices library which provides the fundamental building blocks for writing fault tolerant distributed systems at scale. It is part of the [Micro](https://github.com/myodc/micro) toolchain. | ||||||
|  |  | ||||||
| An example server can be found in go-micro/template. | An example server can be found in examples/server. | ||||||
|  |  | ||||||
| [](https://godoc.org/github.com/myodc/go-micro) | [](https://godoc.org/github.com/myodc/go-micro) | ||||||
|  |  | ||||||
| ## Features | ## Features | ||||||
| - Discovery | - Discovery | ||||||
| - Client/Server | - Client | ||||||
|  | - Server | ||||||
| - Pub/Sub | - Pub/Sub | ||||||
|  |  | ||||||
| ## Future Features |  | ||||||
| - Config |  | ||||||
| - Routing |  | ||||||
| - Monitoring |  | ||||||
| - Tracing |  | ||||||
| - Logging |  | ||||||
|  |  | ||||||
| ## Prerequisites | ## Prerequisites | ||||||
|  |  | ||||||
| Consul is the default discovery mechanism provided in go-micro. Discovery is however pluggable. | Consul is the default discovery mechanism provided in go-micro. Discovery is however pluggable. | ||||||
| @@ -34,79 +28,80 @@ $ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul | |||||||
|  |  | ||||||
| ### Run Service | ### Run Service | ||||||
| ``` | ``` | ||||||
| $ go run go-micro/template/main.go | $ go run examples/server/main.go | ||||||
|  | I0525 18:06:14.471489   83304 server.go:117] Starting server go.micro.srv.example id go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
| I0523 12:21:09.506998   77096 server.go:113] Starting server go.micro.service.template id go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 | I0525 18:06:14.474960   83304 rpc_server.go:126] Listening on [::]:62216 | ||||||
| I0523 12:21:09.507281   77096 rpc_server.go:112] Listening on [::]:51868 | I0525 18:06:14.474997   83304 server.go:99] Registering node: go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
| I0523 12:21:09.507329   77096 server.go:95] Registering node: go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Test Service | ### Test Service | ||||||
| ``` | ``` | ||||||
| $ go run go-micro/examples/service_client.go | $ go run examples/client/main.go  | ||||||
|  | go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6: Hello John | ||||||
| go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6: Hello John |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Writing a service | ## Writing a service | ||||||
|  |  | ||||||
| ### Create request/response proto | ### Create request/response proto | ||||||
| `go-micro/template/proto/example/example.proto`: | `go-micro/examples/server/proto/example/example.proto`: | ||||||
|  |  | ||||||
| ``` | ``` | ||||||
| package go.micro.service.template.example; | syntax = "proto3"; | ||||||
|  |  | ||||||
| message Request { | message Request { | ||||||
| 	required string name = 1; |         string name = 1; | ||||||
| } | } | ||||||
|  |  | ||||||
| message Response { | message Response { | ||||||
| 	required string msg = 1; |         string msg = 1; | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Compile proto `protoc -I$GOPATH/src --go_out=$GOPATH/src $GOPATH/src/github.com/myodc/go-micro/template/proto/example/example.proto` | Compile proto `protoc -I$GOPATH/src --go_out=$GOPATH/src $GOPATH/src/github.com/myodc/go-micro/template/proto/example/example.proto` | ||||||
|  |  | ||||||
| ### Create request handler | ### Create request handler | ||||||
| `go-micro/template/handler/example.go`: | `go-micro/examples/server/handler/example.go`: | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| package handler | package handler | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"code.google.com/p/go.net/context" |         log "github.com/golang/glog" | ||||||
| 	"github.com/golang/protobuf/proto" |         c "github.com/myodc/go-micro/context" | ||||||
|  |         example "github.com/myodc/go-micro/examples/server/proto/example" | ||||||
|  |         "github.com/myodc/go-micro/server" | ||||||
|  |  | ||||||
| 	"github.com/myodc/go-micro/server" |         "golang.org/x/net/context" | ||||||
| 	example "github.com/myodc/go-micro/template/proto/example" |  | ||||||
| 	log "github.com/golang/glog" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type Example struct{} | type Example struct{} | ||||||
|  |  | ||||||
| func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error { | func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error { | ||||||
| 	log.Info("Received Example.Call request") |         md, _ := c.GetMetaData(ctx) | ||||||
|  |         log.Info("Received Example.Call request with metadata: %v", md) | ||||||
| 	rsp.Msg = proto.String(server.Id + ": Hello " + req.GetName()) |         rsp.Msg = server.Id + ": Hello " + req.Name | ||||||
|  |         return nil | ||||||
| 	return nil |  | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Init server | ### Init server | ||||||
| `go-micro/template/main.go`: | `go-micro/examples/server/main.go`: | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| package main | package main | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/myodc/go-micro/server" |  | ||||||
| 	"github.com/myodc/go-micro/template/handler" |  | ||||||
| 	log "github.com/golang/glog" | 	log "github.com/golang/glog" | ||||||
|  | 	"github.com/myodc/go-micro/cmd" | ||||||
|  | 	"github.com/myodc/go-micro/examples/server/handler" | ||||||
|  | 	"github.com/myodc/go-micro/server" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
| 	server.Name = "go.micro.service.template" | 	// optionally setup command line usage | ||||||
|  | 	cmd.Init() | ||||||
|  |  | ||||||
|  | 	server.Name = "go.micro.srv.example" | ||||||
|  |  | ||||||
| 	// Initialise Server | 	// Initialise Server | ||||||
| 	server.Init() | 	server.Init() | ||||||
| @@ -127,9 +122,8 @@ func main() { | |||||||
|  |  | ||||||
| ### Run service | ### Run service | ||||||
| ``` | ``` | ||||||
| $ go run go-micro/template/main.go | $ go run examples/server/main.go | ||||||
|  | I0525 18:06:14.471489   83304 server.go:117] Starting server go.micro.srv.example id go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
| I0523 12:21:09.506998   77096 server.go:113] Starting server go.micro.service.template id go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 | I0525 18:06:14.474960   83304 rpc_server.go:126] Listening on [::]:62216 | ||||||
| I0523 12:21:09.507281   77096 rpc_server.go:112] Listening on [::]:51868 | I0525 18:06:14.474997   83304 server.go:99] Registering node: go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
| I0523 12:21:09.507329   77096 server.go:95] Registering node: go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 |  | ||||||
| ``` | ``` | ||||||
|   | |||||||
| @@ -6,14 +6,15 @@ import ( | |||||||
| 	"github.com/myodc/go-micro/client" | 	"github.com/myodc/go-micro/client" | ||||||
| 	"github.com/myodc/go-micro/cmd" | 	"github.com/myodc/go-micro/cmd" | ||||||
| 	c "github.com/myodc/go-micro/context" | 	c "github.com/myodc/go-micro/context" | ||||||
| 	example "github.com/myodc/go-micro/template/proto/example" | 	example "github.com/myodc/go-micro/examples/server/proto/example" | ||||||
| 	"golang.org/x/net/context" | 	"golang.org/x/net/context" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func main() { | func main() { | ||||||
| 	cmd.Init() | 	cmd.Init() | ||||||
| 	// Create new request to service go.micro.service.go-template, method Example.Call | 
 | ||||||
| 	req := client.NewRequest("go.micro.service.template", "Example.Call", &example.Request{ | 	// Create new request to service go.micro.srv.example, method Example.Call | ||||||
|  | 	req := client.NewRequest("go.micro.srv.example", "Example.Call", &example.Request{ | ||||||
| 		Name: "John", | 		Name: "John", | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
| @@ -1,24 +0,0 @@ | |||||||
| package main |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"fmt" |  | ||||||
|  |  | ||||||
| 	h "github.com/grpc/grpc-common/go/helloworld" |  | ||||||
| 	"github.com/myodc/go-micro/client" |  | ||||||
| 	"golang.org/x/net/context" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // run github.com/grpc/grpc-common/go/greeter_server/main.go |  | ||||||
| func main() { |  | ||||||
| 	req := client.NewRpcRequest("helloworld.Greeter", "helloworld.Greeter/SayHello", &h.HelloRequest{ |  | ||||||
| 		Name: "John", |  | ||||||
| 	}, "application/grpc") |  | ||||||
|  |  | ||||||
| 	rsp := &h.HelloReply{} |  | ||||||
| 	err := client.CallRemote(context.Background(), "localhost:50051", req, rsp) |  | ||||||
| 	if err != nil { |  | ||||||
| 		fmt.Println(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	fmt.Println(rsp.Message) |  | ||||||
| } |  | ||||||
							
								
								
									
										3
									
								
								examples/server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								examples/server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | FROM scratch | ||||||
|  | ADD server / | ||||||
|  | ENTRYPOINT [ "/server" ] | ||||||
							
								
								
									
										27
									
								
								examples/server/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								examples/server/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | # Example Service | ||||||
|  |  | ||||||
|  | An example Go service running with go-micro | ||||||
|  |  | ||||||
|  | ### Prerequisites | ||||||
|  |  | ||||||
|  | Install Consul | ||||||
|  | [https://www.consul.io/intro/getting-started/install.html](https://www.consul.io/intro/getting-started/install.html) | ||||||
|  |  | ||||||
|  | Run Consul | ||||||
|  | ``` | ||||||
|  | $ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Run Service | ||||||
|  | ``` | ||||||
|  | $ go run server/main.go | ||||||
|  | I0525 18:06:14.471489   83304 server.go:117] Starting server go.micro.srv.example id go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
|  | I0525 18:06:14.474960   83304 rpc_server.go:126] Listening on [::]:62216 | ||||||
|  | I0525 18:06:14.474997   83304 server.go:99] Registering node: go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Test Service | ||||||
|  | ``` | ||||||
|  | $ go run client/main.go  | ||||||
|  | go.micro.srv.example-59b6e0ab-0300-11e5-b696-68a86d0d36b6: Hello John | ||||||
|  | ``` | ||||||
| @@ -3,8 +3,8 @@ package handler | |||||||
| import ( | import ( | ||||||
| 	log "github.com/golang/glog" | 	log "github.com/golang/glog" | ||||||
| 	c "github.com/myodc/go-micro/context" | 	c "github.com/myodc/go-micro/context" | ||||||
|  | 	example "github.com/myodc/go-micro/examples/server/proto/example" | ||||||
| 	"github.com/myodc/go-micro/server" | 	"github.com/myodc/go-micro/server" | ||||||
| 	example "github.com/myodc/go-micro/template/proto/example" |  | ||||||
| 
 | 
 | ||||||
| 	"golang.org/x/net/context" | 	"golang.org/x/net/context" | ||||||
| ) | ) | ||||||
| @@ -12,14 +12,8 @@ import ( | |||||||
| type Example struct{} | type Example struct{} | ||||||
| 
 | 
 | ||||||
| func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error { | func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error { | ||||||
| 	md, ok := c.GetMetaData(ctx) | 	md, _ := c.GetMetaData(ctx) | ||||||
| 	if ok { | 	log.Info("Received Example.Call request with metadata: %v", md) | ||||||
| 		log.Infof("Received Example.Call request with metadata: %v", md) |  | ||||||
| 	} else { |  | ||||||
| 		log.Info("Received Example.Call request") |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	rsp.Msg = server.Id + ": Hello " + req.Name | 	rsp.Msg = server.Id + ": Hello " + req.Name | ||||||
| 
 |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| @@ -3,15 +3,15 @@ package main | |||||||
| import ( | import ( | ||||||
| 	log "github.com/golang/glog" | 	log "github.com/golang/glog" | ||||||
| 	"github.com/myodc/go-micro/cmd" | 	"github.com/myodc/go-micro/cmd" | ||||||
|  | 	"github.com/myodc/go-micro/examples/server/handler" | ||||||
| 	"github.com/myodc/go-micro/server" | 	"github.com/myodc/go-micro/server" | ||||||
| 	"github.com/myodc/go-micro/template/handler" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func main() { | func main() { | ||||||
| 	// optionally setup command line usage | 	// optionally setup command line usage | ||||||
| 	cmd.Init() | 	cmd.Init() | ||||||
| 
 | 
 | ||||||
| 	server.Name = "go.micro.service.template" | 	server.Name = "go.micro.srv.example" | ||||||
| 
 | 
 | ||||||
| 	// Initialise Server | 	// Initialise Server | ||||||
| 	server.Init() | 	server.Init() | ||||||
| @@ -1,12 +1,12 @@ | |||||||
| // Code generated by protoc-gen-go. | // Code generated by protoc-gen-go. | ||||||
| // source: myodc/go-micro/template/proto/example/example.proto | // source: go-micro/examples/server/proto/example/example.proto | ||||||
| // DO NOT EDIT! | // DO NOT EDIT! | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| Package example is a generated protocol buffer package. | Package example is a generated protocol buffer package. | ||||||
| 
 | 
 | ||||||
| It is generated from these files: | It is generated from these files: | ||||||
| 	myodc/go-micro/template/proto/example/example.proto | 	go-micro/examples/server/proto/example/example.proto | ||||||
| 
 | 
 | ||||||
| It has these top-level messages: | It has these top-level messages: | ||||||
| 	Request | 	Request | ||||||
| @@ -1,9 +1,9 @@ | |||||||
| syntax = "proto3"; | syntax = "proto3"; | ||||||
| 
 | 
 | ||||||
| message Request { | message Request { | ||||||
| 	optional string name = 1; | 	string name = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message Response { | message Response { | ||||||
| 	optional string msg = 1; | 	string msg = 1; | ||||||
| } | } | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| FROM scratch |  | ||||||
| ADD template / |  | ||||||
| ENTRYPOINT [ "/template" ] |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| # Template Service |  | ||||||
|  |  | ||||||
| An example Go service running with go-micro |  | ||||||
|  |  | ||||||
| ### Prerequisites |  | ||||||
|  |  | ||||||
| Install Consul |  | ||||||
| [https://www.consul.io/intro/getting-started/install.html](https://www.consul.io/intro/getting-started/install.html) |  | ||||||
|  |  | ||||||
| Run Consul |  | ||||||
| ``` |  | ||||||
| $ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Run Service |  | ||||||
| ``` |  | ||||||
| $ go run main.go |  | ||||||
|  |  | ||||||
| I0523 12:21:09.506998   77096 server.go:113] Starting server go.micro.service.template id go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 |  | ||||||
| I0523 12:21:09.507281   77096 rpc_server.go:112] Listening on [::]:51868 |  | ||||||
| I0523 12:21:09.507329   77096 server.go:95] Registering node: go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6 |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Test Service |  | ||||||
| ``` |  | ||||||
| $ go run go-micro/examples/service_client.go |  | ||||||
|  |  | ||||||
| go.micro.service.template-cfc481fc-013d-11e5-bcdc-68a86d0d36b6: Hello John |  | ||||||
| ``` |  | ||||||
| @@ -1,21 +0,0 @@ | |||||||
| { |  | ||||||
|   "kind": "Pod", |  | ||||||
|   "apiVersion": "v1beta1", |  | ||||||
|   "id": "template-service", |  | ||||||
|   "desiredState": { |  | ||||||
|     "manifest": { |  | ||||||
|       "version": "v1beta1", |  | ||||||
|       "id": "template-service", |  | ||||||
|       "containers": [{ |  | ||||||
|         "name": "template-service", |  | ||||||
|         "image": "chuhnk/go-template", |  | ||||||
|         "ports": [{"name": "template-service", "containerPort": 8080}], |  | ||||||
|         "command": ["--registry=kubernetes", "--bind_address=:8080"]    |  | ||||||
|       }], |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "labels": { |  | ||||||
|     "name": "go.micro.service.template", |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| { |  | ||||||
|   "id": "template-service", |  | ||||||
|   "kind": "Service", |  | ||||||
|   "apiVersion": "v1beta1", |  | ||||||
|   "port": 9091, |  | ||||||
|   "containerPort": 8080, |  | ||||||
|   "selector": { "name": "go.micro.service.template" }, |  | ||||||
|   "labels": { "name": "go.micro.service.template" } |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user