car

package
v0.0.0-...-2193872 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2016 License: Apache-2.0 Imports: 20 Imported by: 0

README

Micro SideCar

The sidecar provides features to integrate any application into the Micro ecosystem.

It is similar to Netflix's sidecar called Prana

Features

  • Registration with discovery system
  • Host discovery of other services
  • Health checking of services
  • HTTP API and load balancing requests
  • PubSub via WebSockets

Getting Started

Install
$ go get github.com/micro/micro
Run

The micro sidecar runs on port 8081 by default.

Starting the sidecar

$ micro sidecar

Optionally specify app server name and address if you want to auto register an app on startup.

$ micro sidecar --server_name=foo --server_address=127.0.0.1:9090
Host Discovery
curl http://127.0.0.1:8081/registry?service=go.micro.srv.example
{
	"name":"go.micro.srv.example",
	"nodes":[{
		"id":"go.micro.srv.example-c5718d29-da2a-11e4-be11-68a86d0d36b6",
		"address":"[::]","port":60728
	}]
}
Register/Deregister a service

Register

curl -H 'Content-Type: application/json' http://127.0.0.1:8081/registry -d 
{
	"Name": "foo.bar",
	"Nodes": [{
		"Port": 9091,
		"Address": "127.0.0.1",
		"Id": "foo.bar-017da09a-734f-11e5-8136-68a86d0d36b6"
	}]
}

Deregister

curl -X "DELETE" -H 'Content-Type: application/json' http://127.0.0.1:8081/registry -d 
{
	"Name": "foo.bar",
	"Nodes": [{
		"Port": 9091,
		"Address": "127.0.0.1",
		"Id": "foo.bar-017da09a-734f-11e5-8136-68a86d0d36b6"
	}]
}
Healthchecking

Start micro sidecar with "--healthcheck_url=" to enable the healthchecker

$ micro sidecar --server_name=foo --server_address=127.0.0.1:9090 \
	--healthcheck_url=http://127.0.0.1:9090/_status/health
I0523 12:25:36.229536   85658 car.go:184] Registering foo-6ebf29c0-013e-11e5-b55f-68a86d0d36b6
I0523 12:25:36.241680   85658 car.go:188] Starting sidecar healthchecker
HTTP RPC API

Query micro services via the http rpc api.

$ curl  -d 'service=go.micro.srv.example' \
	-d 'method=Example.Call' \
	-d 'request={"name": "John"}' http://127.0.0.1:8081/rpc
{"msg":"go.micro.srv.example-c5718d29-da2a-11e4-be11-68a86d0d36b6: Hello John"}
PubSub via WebSockets

Connect to the micro pub/sub broker via a websocket interface

c, _, _ := websocket.DefaultDialer.Dial("ws://127.0.0.1:8081/broker?topic=foo", make(http.Header))

go func() {
	for {
		_, p, err := c.ReadMessage()
		if err != nil {
			return
		}
		var msg *broker.Message
		json.Unmarshal(p, &msg)
		fmt.Println(msg.Data)
	}
}()

ticker := time.NewTicker(time.Second)

for _ = range ticker.C {
	if err := c.WriteMessage(1, []byte(`hello world`)); err != nil {
		return
	}
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Address = ":8081"
)

Functions

func Commands

func Commands() []cli.Command

Types

type Sidecar

type Sidecar struct {
	// contains filtered or unexported fields
}

func New

func New(name, address, hcUrl string) *Sidecar

Jump to

Keyboard shortcuts

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