Sidecar · go

您所在的位置:网站首页 sidecar使用的组件 Sidecar · go

Sidecar · go

#Sidecar · go| 来源: 网络整理| 查看: 265

1. Micro Sidecar1.1. API1.2. 特征1.3. 入门1.3.1. 安装1.3.2. 依赖1.3.3. 运行1.3.4. 通过ACME使能加密1.3.5. 提供TLS安全1.3.6. 自动健康检查1.4. 注册1.4.1. 注册服务1.4.2. 取消注册1.4.3. 查询服务1.5. Handlers1.5.1. RPC1.5.2. Proxy1.6. 请求映射1.7. 事件1.7.1. 发布1.7.2. 订阅1.8. CLI代理1.9. 统计仪表板1. Micro Sidecar

Micro Sidecar是用于构建高度可用和容错微服务的服务网格。

它与Netflix的Prana,Buoyant的RPC Proxy Linkerd或Lyft的Envoy类似。

Micro Sidecar采用go-micro,具有相同的默认设置和可插拔性。

可以在examples/sidecar找到许多语言的用法示例。

1.1. API

该sidecar具有以下HTTP API。

- /[service]/[method] - /broker - /registry - /rpc 1.2. 特征

sidecar具有go-micro的所有功能。这是最相关的。

服务发现 消息总线 RPC和代理处理程序 负载平衡,重试,超时 健康检测 统计界面 可通过go-micro插入 1.3. 入门 1.3.1. 安装 go get github.com/micro/micro 1.3.2. 依赖

Sidecar使用go-micro,这意味着它有一个默认依赖关系,用于服务发现的Consul。

brew install consul consul agent -dev 1.3.3. 运行

默认情况下,在端口8081上运行Micro Sidecar。

启动Sidecar

micro sidecar

如果要在启动时自动注册应用程序,请指定应用程序服务名和地址。

micro sidecar --server_name=foo --server_address=127.0.0.1:9090 1.3.4. 通过ACME使能加密

通过使用ACME提供安全服务

micro --enable_acme sidecar

可以指定一个主机白名单

micro --enable_acme --acme_hosts=example.com,proxy.example.com sidecar 1.3.5. 提供TLS安全

Sidecar支持使用TLS证书安全地提供服务

micro --enable_tls --tls_cert_file=/path/to/cert --tls_key_file=/path/to/key sidecar 1.3.6. 自动健康检查

用“-healthcheck_url=”启动微型边车以启用健康检查器

它执行以下操作:

自动服务注册 定期HTTP健康检查 通过非200响应取消注册 micro sidecar --server_name=foo --server_address=127.0.0.1:9090 \ --healthcheck_url=http://127.0.0.1:9090/health 1.4. 注册 1.4.1. 注册服务 // specify ttl as a param to expire the registration // units ns|us|ms|s|m|h // http://127.0.0.1:8081/registry?ttl=10s 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" }] } 1.4.2. 取消注册 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" }] } 1.4.3. 查询服务 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 }] } 1.5. Handlers 1.5.1. RPC

使用json或protobuf查询微服务。对后端的请求将使用go-micro RPC客户端进行。

使用/[service]/[method]

所调用服务的默认名称空间是go.micro.srv

curl -H 'Content-Type: application/json' -d '{"name": "John"}' http://127.0.0.1:8081/example/call

使用/rpc端口

curl -d 'service=go.micro.srv.example' \ -d 'method=Example.Call' \ -d 'request={"name": "John"}' http://127.0.0.1:8081/rpc 1.5.2. Proxy

与api和web服务器一样,sidecar可以提供完整的http代理。

在命令行上启用代理处理程序。

micro sidecar --handler=proxy

URL路径中的第一个元素将与名称空间一起用作要路由到的服务。

1.6. 请求映射

URL路径映射与Micro API相同

URL的映射如下:

Path Service Method /foo/bar go.micro.srv.foo Foo.Bar /foo/bar/baz go.micro.srv.foo Bar.Baz /foo/bar/baz/cat go.micro.srv.foo.bar Baz.Cat

版本化的API URL可以很容易地映射到服务名称:

Path Service Method /foo/bar go.micro.srv.foo Foo.Bar /v1/foo/bar go.micro.srv.v1.foo Foo.Bar /v1/foo/bar/baz go.micro.srv.v1.foo Bar.Baz /v2/foo/bar go.micro.srv.v2.foo Foo.Bar /v2/foo/bar/baz go.micro.srv.v2.foo Bar.Baz 1.7. 事件 1.7.1. 发布 curl -XPOST \ -H "Timestamp: 1499951537" \ -d "Hello World!" \ "http://localhost:8081/broker?topic=foo" 1.7.2. 订阅 conn, _, _ := websocket.DefaultDialer.Dial("ws://127.0.0.1:8081/broker?topic=foo", make(http.Header)) // optionally specify "queue=[queue name]" param to distribute traffic amongst subscribers // websocket.DefaultDialer.Dial("ws://127.0.0.1:8081/broker?topic=foo&queue=group-1", make(http.Header)) for { // Read message _, p, err := conn.ReadMessage() if err != nil { return } // Unmarshal into broker.Message var msg *broker.Message json.Unmarshal(p, &msg) // Print message body fmt.Println(msg.Body) } 1.8. CLI代理

该sidecar还充当CLI访问远程环境的代理。

$ micro --proxy_address=127.0.0.1:8081 list services go.micro.srv.greeter 1.9. 统计仪表板

通过--enable_stats标志启用统计信息显示板。它将暴露在/stats上。

micro --enable_stats sidecar



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3