go-micro 微服务开发中文手册
  • Introduction
  • 概述
    • 介绍
    • 微服务
    • 架构
    • 常见问题
    • 特性
    • 路标
    • 资源
    • 用户
  • 指南
    • 安装指南
    • gRPC网关
    • 编写一个Go服务
    • 编写一个Go函数
    • 容错
  • 组件
    • Go Micro
    • API
    • Web
    • Sidecar
    • CLI
    • Bot
    • New
    • Run
  • 部署
    • Docker
    • Kubernetes
  • 插件
    • 概述
    • Go Micro
    • 工具包
    • NATS
Powered by GitBook
On this page
  • API
  • 特征
  • 入门
  • 安装
  • 依赖
  • 运行
  • 通过ACME使能加密
  • 提供TLS安全
  • 自动健康检查
  • 注册
  • 注册服务
  • 取消注册
  • 查询服务
  • Handlers
  • RPC
  • Proxy
  • 请求映射
  • 事件
  • 发布
  • 订阅
  • CLI代理
  • 统计仪表板

Was this helpful?

  1. 组件

Sidecar

PreviousWebNextCLI

Last updated 5 years ago

Was this helpful?

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

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

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

API

该sidecar具有以下HTTP API。

- /[service]/[method]
- /broker
- /registry
- /rpc

特征

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

  • 服务发现

  • 消息总线

  • RPC和代理处理程序

  • 负载平衡,重试,超时

  • 健康检测

  • 统计界面

  • 可通过go-micro插入

入门

安装

go get github.com/micro/micro

依赖

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

brew install consul
consul agent -dev

运行

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

启动Sidecar

micro sidecar

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

micro sidecar --server_name=foo --server_address=127.0.0.1:9090

通过ACME使能加密

通过使用ACME提供安全服务

micro --enable_acme sidecar

可以指定一个主机白名单

micro --enable_acme --acme_hosts=example.com,proxy.example.com sidecar

提供TLS安全

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

micro --enable_tls --tls_cert_file=/path/to/cert --tls_key_file=/path/to/key sidecar

自动健康检查

用“-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

注册

注册服务

// 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"
    }]
}

取消注册

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"
    }]
}

查询服务

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
    }]
}

Handlers

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

Proxy

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

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

micro sidecar --handler=proxy

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

请求映射

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

事件

发布

curl -XPOST \
        -H "Timestamp: 1499951537" \
        -d "Hello World!" \
        "http://localhost:8081/broker?topic=foo"

订阅

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)
}

CLI代理

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

$ micro --proxy_address=127.0.0.1:8081 list services
go.micro.srv.greeter

统计仪表板

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

micro --enable_stats sidecar

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

examples/sidecar
Prana
Linkerd
Envoy
go-micro