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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## Go Micro 因為 Mix Micro 直接融入 go-micro 微服務生態,在 Mix 中主要使用 [Micro](https://micro.mu/docs/runtime.html) 工具包,該工具的使用非常簡單,本章節會講解,了解更多查看該文檔: - [go-micro 微服務開發中文手冊](http://www.hmoore.net/linimbus/go-micro/content) ## 架構 當我們開發單體應用時,我們通常通過 url 規劃不同的業務: | path | desc | | --- | --- | | /customer/100 | 消費者 | | /message/111 | 消息 | | /order/122 | 訂單 | 通常我們會使用 nginx 做負載均衡來擴展性能,但是很快我們就會發現一些問題: - 由于所有 path 都編寫在一個程序中,當增加一個功能時,我們不得不重啟整個程序,顯然其他 path 是沒必要重啟的。 - 每個 path 的請求負載是不一樣的,例如 /message 可能訪問量非常大,我們無法單獨為該 path 增加資源。 - 當我們沒增加一臺服務器時,都需要在 nginx/slb 中手動增加負載均衡,這樣顯然無法滿足大型系統的部署要求。 接下來我們看一下 go-micro 微服務是如何解決這些問題的: ![](https://box.kancloud.cn/ed5dd6df55c0ca6cb2745b61439ec478_741x283.png) - 首先每個 path 根據 url 分段規則拆分成獨立的 API 微服務,例如:/customer/100 匹配 php.micro.api.customer 微服務,該服務 content-type 采用 json,內部代碼邏輯不操作 db,而是通過 gRPC Client 調用 php.micro.grpc.customer 微服務,該服務 content-type 采用 protobuf 的 grpc 協議。 - 由于 php.micro.api.customer 與 php.micro.grpc.customer 都可能隨時啟動多個進程,因此 /customer/100 匹配 php.micro.api.customer 微服務或者通過 gRPC Client 調用 php.micro.grpc.customer 微服務時,如何能確定調用到具體哪個實例可用?這時候就需要服務中心了,go-micro 支持 Consul、Etcd 等多種服務中心,有了服務中心每個微服務實例啟動和退出時,網關和代碼中使用的 gprc client 都能實時的捕獲到變化,這樣就實現了動態的負載均衡。 - 這里面將 /customer/100 匹配 php.micro.api.customer 微服務的程序就是微服務網關,是一個和 Nginx 類似的 [Micro](https://micro.mu/docs/runtime.html) 服務器工具,直接使用即可,而 gRPC Client 我們只需要符合 go-micro 在服務中心設定的數據結構,同時符合 grpc 協議,我們可以用任何語言打造,因此才有了 Mix Micro 的誕生。 ## Micro 在 “安裝說明” 章節已經 Micro 的安裝文檔,在 Mix Micro 中主要使用以下命令: - `micro api` API 網關,負責代理 json 類型的接口,Mix 的 [Mix Micro Route](https://github.com/mix-php/micro-route) 針對 Micro API 做了兼容,因此使用 Mix 開發的 API 接口可以直接使用 Micro 反向代理, [[更多 Micro API 文檔]](http://www.hmoore.net/linimbus/go-micro/529031) ~~~ $ micro --registry=etcd api --handler=http --namespace=php.micro.api ~~~ - `micro api --enable_rpc` 開啟 RPC 反向代理,開啟后可以使用 HTTP 接口直接請求 gRPC 微服務,[Mix gRPC](https://github.com/mix-php/grpc) 的 Server 針對 Micro API RPC 代理做了兼容處理,因此可以支持 gRPC 的反向代理,請求與響應都是 JSON 格式,無需使用 Protobuf 通信,適合內部不同子系統之間通信。 ``` curl -H 'Content-Type: application/json' -d '{"service": "php.micro.grpc.greeter", "method": "Say.Hello", "request": {"name": "Asim Aslam"}}' http://127.0.0.1:8080/rpc ``` - `micro web`: Web 代理,負責代理網頁和 WebSocket,[[更多 Micro Web 文檔]](http://www.hmoore.net/linimbus/go-micro/529032) ~~~ $ micro --registry=etcd web --namespace=php.micro.web ~~~ Micro Web 還包含一個網頁版管理平臺 `http://127.0.0.1:8082/`,Micro V2 非常奇葩,只有將微服務名稱命名為 go.micro 開頭才能在網頁中看到,在 Micro V1 中沒有這個限制。 - `micro network`: 啟動微服務網絡 ~~~ $ micro --registry=etcd network ~~~ - `micro list services` 查看全部微服務名稱: ~~~ $ micro --registry=etcd list services php.micro.api.greeter php.micro.grpc.greeter ~~~ - `micro list routes` 查看微服務詳細節點列表,需啟動 `micro network` 才可查看: ~~~ $ micro --registry=etcd list routes +------------------------+----------------------+---------+--------------------------------------+----------+--------+-------+ | SERVICE | ADDRESS | GATEWAY | ROUTER | NETWORK | METRIC | LINK | +------------------------+----------------------+---------+--------------------------------------+----------+--------+-------+ | go.micro | 192.168.31.146:8085 | | d6084fbb-b272-4daa-afd2-247689729fd6 | go.micro | 1 | local | | go.micro.network | 192.168.31.146:60265 | | d6084fbb-b272-4daa-afd2-247689729fd6 | go.micro | 1 | local | | php.micro.api.greeter | 192.168.31.146:60160 | | d6084fbb-b272-4daa-afd2-247689729fd6 | go.micro | 1 | local | | php.micro.grpc.greeter | 192.168.31.146:60146 | | d6084fbb-b272-4daa-afd2-247689729fd6 | go.micro | 1 | local | +------------------------+----------------------+---------+--------------------------------------+----------+--------+-------+ ~~~
                  <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>

                              哎呀哎呀视频在线观看