<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Micro Sidecar Micro Sidecar是用于構建高度可用和容錯微服務的服務網格。 它與Netflix的[Prana](https://github.com/Netflix/Prana),Buoyant的RPC Proxy [Linkerd](https://linkerd.io/)或Lyft的[Envoy](https://www.envoyproxy.io/)類似。 Micro Sidecar采用[go-micro](https://github.com/micro/go-micro),具有相同的默認設置和可插拔性。 ![](https://box.kancloud.cn/3c0b2860699c363d87750fb5739ef8d8_803x223.png) 可以在[examples/sidecar](https://github.com/micro/examples/tree/master/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 ``` ![](https://box.kancloud.cn/25fe3d366708ccf0dd2d131c59a5da43_1260x752.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看