| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 用户文档</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/</link><description>Recent content in 用户文档 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: 快速开始</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart/</guid><description> |
| <p>让我们从将 HTTP 请求转换为 Dubbo2 请求的案例来快速展示 Pixiu 的能力。</p> |
| <h2 id="用例">用例</h2> |
| <p>Pixiu 将 Client 的 HTTP 请求转换为 Dubbo2 请求,然后转发给背后的 Dubbo Server,然后将 Dubbo Server 的响应转换为 HTTP 响应,最后返回给 Client。</p> |
| <h3 id="架构图">架构图</h3> |
| <p><img src="https://dubbo.apache.org/imgs/pixiu/user/quick_start_architecture.png" alt="Architecture"></p> |
| <h3 id="案例">案例</h3> |
| <p>案例路径请查看 <code>/samples/dubbogo/simple/resolve</code></p> |
| <h4 id="dubbo-server-实现和启动">Dubbo Server 实现和启动</h4> |
| <p>Dubbo Server 提供用户增删改查的相关接口,其具体的代码实现见案例路径下的 <code>server</code></p> |
| <p>Dubbo Server 的配置如下所示,注册了 Dubbo2 协议的 interface <code>com.dubbogo.pixiu.UserService</code>。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registries</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">zk</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: zookeeper |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">timeout</span>: 3s |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">127.0.0.1</span>:<span style="color:#2aa198">2181</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: dubbo |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">20000</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry-ids</span>: zk |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">services</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">UserProvider</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: test |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">version</span>: <span style="color:#2aa198">1.0.0</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">cluster</span>: test_dubbo |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">serialization</span>: hessian2 |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">interface</span>: com.dubbogo.pixiu.UserService |
| </span></span></code></pre></div><h4 id="pixiu-配置和启动">Pixiu 配置和启动</h4> |
| <p>为了用例的场景,Pixiu 需要启动对应的 HTTP Listener 进行 HTTP 请求的监听,所以就会使用到 <code>httpconnectionmanager</code>。 |
| 然后因为要将 HTTP 请求转换为 Dubbo请求,所以需要使用 <code>dgp.filter.http.dubboproxy</code>,这里我们将其<code>auto_resolve</code> 设置为true,表示开启 HTTP to Dubbo 默认转换协议(具体定义请看<a href="../appendix/http-to-dubbo-default-stragety">附录</a>)。</p> |
| <p>Pixiu 的具体配置如下所示</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>static_resources: |
| </span></span><span style="display:flex;"><span> listeners: |
| </span></span><span style="display:flex;"><span> - name: &#34;net/http&#34; |
| </span></span><span style="display:flex;"><span> protocol_type: &#34;HTTP&#34; |
| </span></span><span style="display:flex;"><span> address: |
| </span></span><span style="display:flex;"><span> socket_address: |
| </span></span><span style="display:flex;"><span> address: &#34;0.0.0.0&#34; |
| </span></span><span style="display:flex;"><span> port: 8883 |
| </span></span><span style="display:flex;"><span> filter_chains: |
| </span></span><span style="display:flex;"><span> filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.httpconnectionmanager |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> route_config: |
| </span></span><span style="display:flex;"><span> routes: |
| </span></span><span style="display:flex;"><span> - match: |
| </span></span><span style="display:flex;"><span> prefix: &#34;*&#34; |
| </span></span><span style="display:flex;"><span> http_filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.http.dubboproxy |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> dubboProxyConfig: |
| </span></span><span style="display:flex;"><span> auto_resolve: true |
| </span></span><span style="display:flex;"><span> registries: |
| </span></span><span style="display:flex;"><span> &#34;zookeeper&#34;: |
| </span></span><span style="display:flex;"><span> protocol: &#34;zookeeper&#34; |
| </span></span><span style="display:flex;"><span> timeout: &#34;3s&#34; |
| </span></span><span style="display:flex;"><span> address: &#34;127.0.0.1:2181&#34; |
| </span></span><span style="display:flex;"><span> username: &#34;&#34; |
| </span></span><span style="display:flex;"><span> password: &#34;&#34; |
| </span></span></code></pre></div><h4 id="client-实现">Client 实现</h4> |
| <p>Client 就是简单的 HTTP Client 实现,但是需要按照前文提及的 HTTP to Dubbo 默认转换协议在 HTTP 请求的 Path 和 Header 中填入对应的数据,具体如下所示。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> url := &#34;http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByName&#34; |
| </span></span><span style="display:flex;"><span> data := &#34;{\&#34;types\&#34;:\&#34;string\&#34;,\&#34;values\&#34;:\&#34;tc\&#34;}&#34; |
| </span></span><span style="display:flex;"><span> client := &amp;http.Client{Timeout: 5 * time.Second} |
| </span></span><span style="display:flex;"><span> req, err := http.NewRequest(&#34;POST&#34;, url, strings.NewReader(data)) |
| </span></span><span style="display:flex;"><span> req.Header.Set(&#34;x-dubbo-http1.1-dubbo-version&#34;, &#34;1.0.0&#34;) |
| </span></span><span style="display:flex;"><span> req.Header.Set(&#34;x-dubbo-service-protocol&#34;, &#34;dubbo&#34;) |
| </span></span><span style="display:flex;"><span> req.Header.Set(&#34;x-dubbo-service-version&#34;, &#34;1.0.0&#34;) |
| </span></span><span style="display:flex;"><span> req.Header.Set(&#34;x-dubbo-service-group&#34;, &#34;test&#34;) |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> assert.NoError(t, err) |
| </span></span><span style="display:flex;"><span> req.Header.Add(&#34;Content-Type&#34;, &#34;application/json&#34;) |
| </span></span><span style="display:flex;"><span> resp, err := client.Do(req) |
| </span></span></code></pre></div><h4 id="案例启动">案例启动</h4> |
| <p>项目提供了快速启动脚本,需要本地先安装有 Go 语言开发环境。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span># cd 到案例总目录 |
| </span></span><span style="display:flex;"><span>cd samples/dubbogo/simple/ |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 进行环境准备,启动 zk 和准备对应配置文件 |
| </span></span><span style="display:flex;"><span>./start.sh prepare resolve |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 启动 dubbo server |
| </span></span><span style="display:flex;"><span>./start.sh startServer resolve |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 启动 pixiu |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>./start.sh startPixiu resolve |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 启动 Client 测试用例 |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>./start.sh startTest resolve |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 或者使用 curl |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>curl -X POST &#39;http://localhost:8883/UserService/com.dubbogo.pixiu.UserService/GetUserByName&#39; -d &#39;{&#34;types&#34;:&#34;string&#34;,&#34;values&#34;:&#34;tc&#34;}&#39; -H &#39;Content-Type: application/json&#39; -H &#39;x-dubbo-http1.1-dubbo-version&#39;:&#39;1.0.0&#39; -H &#39;x-dubbo-service-protocol&#39;:&#34;dubbo&#34; -H &#39;x-dubbo-service-version&#39;:&#39;1.0.0&#39; -H &#39;x-dubbo-service-group&#39;:&#39;test&#39; |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span># 返回值 {&#34;age&#34;:15,&#34;code&#34;:1,&#34;iD&#34;:&#34;0001&#34;,&#34;name&#34;:&#34;tc&#34;,&#34;time&#34;:&#34;2021-08-01T18:08:41+08:00&#34;} |
| </span></span></code></pre></div><h4 id="docker示例">docker示例</h4> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>docker pull phial3/dubbo-go-pixiu:latest |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>docker run --name pixiuname -p 8883:8883 <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/conf.yaml:/etc/pixiu/conf.yaml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/log.yml:/etc/pixiu/log.yml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> apache/dubbo-go-pixiu:latest |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># http请求调用dubbo服务转换,首先启动provider,这里使用zookeeper作为注册中心</span> |
| </span></span><span style="display:flex;"><span><span style="color:#b58900">cd</span> samples/dubbogo/simple/resolve/server |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># 添加需要的环境变量,指定provider的配置文件位置</span> |
| </span></span><span style="display:flex;"><span><span style="color:#b58900">export</span> <span style="color:#268bd2">DUBBO_GO_CONFIG_PATH</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;../profiles/dev/server.yml&#34;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#b58900">export</span> <span style="color:#268bd2">APP_LOG_CONF_FILE</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;../profiles/dev/log.yml&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># 启动provider</span> |
| </span></span><span style="display:flex;"><span>go run server.go user.go |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># 进入到test目录下,启动test示例</span> |
| </span></span><span style="display:flex;"><span><span style="color:#b58900">cd</span> samples/dubbogo/simple/resolve/test |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>go <span style="color:#b58900">test</span> pixiu_test.go |
| </span></span></code></pre></div></description></item><item><title>Overview: 启动和配置</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations/</guid><description> |
| <h3 id="pixiu-启动命令">Pixiu 启动命令</h3> |
| <p>Pixiu 分为两个形态 Gateway 和 Sidecar,目前 Pixiu 可执行程序的命令如下所示,其中 pixiu 是可执行文件名称。注意,-c 后是本地配置文件的绝对路径。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>pixiu gateway start -c /config/conf.yaml |
| </span></span></code></pre></div><h3 id="配置详解">配置详解</h3> |
| <p>Pixiu 接受 yaml 格式的文件作为其主配置文件,其中对 Pixiu 的各类组件进行配置。我们以快速开始中的配置文件为例,详细讲解其中的组成部分,并且列出可能的扩展。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>static_resources: |
| </span></span><span style="display:flex;"><span> listeners: |
| </span></span><span style="display:flex;"><span> - name: &#34;net/http&#34; |
| </span></span><span style="display:flex;"><span> protocol_type: &#34;HTTP&#34; |
| </span></span><span style="display:flex;"><span> address: |
| </span></span><span style="display:flex;"><span> socket_address: |
| </span></span><span style="display:flex;"><span> address: &#34;0.0.0.0&#34; |
| </span></span><span style="display:flex;"><span> port: 8883 |
| </span></span><span style="display:flex;"><span> filter_chains: |
| </span></span><span style="display:flex;"><span> filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.httpconnectionmanager |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> route_config: |
| </span></span><span style="display:flex;"><span> routes: |
| </span></span><span style="display:flex;"><span> - match: |
| </span></span><span style="display:flex;"><span> prefix: &#34;*&#34; |
| </span></span><span style="display:flex;"><span> http_filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.http.dubboproxy |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> dubboProxyConfig: |
| </span></span><span style="display:flex;"><span> auto_resolve: true |
| </span></span><span style="display:flex;"><span> registries: |
| </span></span><span style="display:flex;"><span> &#34;zookeeper&#34;: |
| </span></span><span style="display:flex;"><span> protocol: &#34;zookeeper&#34; |
| </span></span><span style="display:flex;"><span> timeout: &#34;3s&#34; |
| </span></span><span style="display:flex;"><span> address: &#34;127.0.0.1:2181&#34; |
| </span></span><span style="display:flex;"><span> username: &#34;&#34; |
| </span></span><span style="display:flex;"><span> password: &#34;&#34; |
| </span></span></code></pre></div><p>首先,类似 <code>envoy</code>的配置,<code>static_resources</code> 表示如下都是静态配置。在静态配置中包括 Listener,NetworkFilter,Route,HttpFilter等组件,它们之间并不是完全独立的。</p> |
| <h4 id="listener">Listener</h4> |
| <p>比如说上述配置就声明了一个监听本地 8883 端口的 HTTP 类型的 Listener,更多 Listener 的配置可以查看 <a href="../listener/http/">Listener</a>。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> listeners: |
| </span></span><span style="display:flex;"><span> - name: &#34;net/http&#34; |
| </span></span><span style="display:flex;"><span> protocol_type: &#34;HTTP&#34; |
| </span></span><span style="display:flex;"><span> address: |
| </span></span><span style="display:flex;"><span> socket_address: |
| </span></span><span style="display:flex;"><span> address: &#34;0.0.0.0&#34; |
| </span></span><span style="display:flex;"><span> port: 8883 |
| </span></span><span style="display:flex;"><span> filter_chains: |
| </span></span></code></pre></div><p>listeners 的配置有 <code>protocol_type</code> 表示是 HTTP 类型的 Listener,<code>address</code> 则配置了监听的地址和端口,<code>filter_chains</code> 则指定了该 Listener 接收到请求要交由哪些 NetworkFilter 处理。</p> |
| <h4 id="networkfilter">NetworkFilter</h4> |
| <p>NetworkFilter 是 Pixiu 的关键组件之一,它可以有 Route 和 HttpFilter 一起组成,负责接收 Listener 传递而来的请求并进行处理。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.httpconnectionmanager |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> route_config: |
| </span></span><span style="display:flex;"><span> http_filters: |
| </span></span></code></pre></div><p>上述配置指明了使用 <code>dgp.filter.httpconnectionmanager</code> 这款 NetworkFilter,它能够接收 Http 请求的 <code>Request</code> 和 <code>Response</code> 进行处理,并且可以配置 Route 路由信息和使用 HttpFilter 对请求进行链式处理。更多的 NetworkFilter 可以查看 <a href="../networkfilter/http/">NetworkfFilter文档</a></p> |
| <h4 id="route-路由-和-cluster-集群">Route 路由 和 Cluster 集群</h4> |
| <p>route 可以用于对请求进行路由分发,以下面配置为例。具体配置文件可以查看 <code>/samples/http/simple</code> 案例的配置文件</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> - name: dgp.filter.httpconnectionmanager |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> route_config: |
| </span></span><span style="display:flex;"><span> routes: |
| </span></span><span style="display:flex;"><span> - match: |
| </span></span><span style="display:flex;"><span> prefix: &#34;/user&#34; |
| </span></span><span style="display:flex;"><span> route: |
| </span></span><span style="display:flex;"><span> cluster: &#34;user&#34; |
| </span></span></code></pre></div><p>上述配置指定了对于 Path 的前缀为 <code>/user</code> 的 HTTP 请求,转发给名称为 user 的 cluster 服务集群中。</p> |
| <p>而具体 cluster 集群的定义如下所示:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> clusters: |
| </span></span><span style="display:flex;"><span> - name: &#34;user&#34; |
| </span></span><span style="display:flex;"><span> lb_policy: &#34;RoundRobin&#34; |
| </span></span><span style="display:flex;"><span> endpoints: |
| </span></span><span style="display:flex;"><span> - id: 1 |
| </span></span><span style="display:flex;"><span> socket_address: |
| </span></span><span style="display:flex;"><span> address: 127.0.0.1 |
| </span></span><span style="display:flex;"><span> port: 1314 |
| </span></span></code></pre></div><p>上述配置定义了名为 user 的 cluster 集群信息,它的负载均衡策略是 RoundRobin,然后它包含一个 endpoint 实例,其地址是 127.0.0.1。</p> |
| <p>目前,在转发 HTTP 请求或者 Grpc 请求的场景下需要使用 Route 和 Cluster,而涉及到转发 Dubbo 相关请求的场景下暂时不需要二者。</p> |
| <h4 id="httpfilter">HttpFilter</h4> |
| <p>当 NetworkFilter 接收到 Listener 传来的请求后,需要对其进行系列操作,例如限流、鉴权等,最后还需要将这个请求转发给具体上游服务。这些工作都交给 NetworkFilter 所持有的 HttpFilter 链进行处理。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> - name: dgp.filter.httpconnectionmanager |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> http_filters: |
| </span></span><span style="display:flex;"><span> - name: dgp.filter.http.dubboproxy |
| </span></span><span style="display:flex;"><span> config: |
| </span></span><span style="display:flex;"><span> dubboProxyConfig: |
| </span></span><span style="display:flex;"><span> auto_resolve: true |
| </span></span><span style="display:flex;"><span> registries: |
| </span></span><span style="display:flex;"><span> &#34;zookeeper&#34;: |
| </span></span><span style="display:flex;"><span> protocol: &#34;zookeeper&#34; |
| </span></span><span style="display:flex;"><span> timeout: &#34;3s&#34; |
| </span></span><span style="display:flex;"><span> address: &#34;127.0.0.1:2181&#34; |
| </span></span><span style="display:flex;"><span> username: &#34;&#34; |
| </span></span><span style="display:flex;"><span> password: &#34;&#34; |
| </span></span></code></pre></div><p>如上配置所示,<code>httpconnectionmanager</code> 这个 NetworkFilter 下有一个 HttpFilter chain。其中包括 <code>dgp.filter.http.dubboproxy</code> 这一款 HttpFilter。 |
| 它负责将 HTTP 请求转换为 Dubbo 请求,并转发出去。它需要配置一个 Dubbo 集群注册中心的地址信息,指定其为 zookeeper 中间件。其中 <code>auto_resolve</code> 则指定使用 HTTP to Dubbo 默认转换协议来进行相关数据转换,具体可以参考<a href="../appendix/http-to-dubbo-default-stragety/">《默认转换协议》</a>。</p> |
| <p>更多的 HttpFilter 可以查看 <a href="../httpfilter/dubbo/">HttpFilter文档</a>。</p> |
| <h4 id="adapter">Adapter</h4> |
| <p>Adapter 代表 Pixiu 和外界元数据中心交互的能力。目前有两款,分别是 <code>dgp.adapter.dubboregistrycenter</code> 和 <code>dgp.adapter.springcloud</code>,分别代表从 Dubbo 集群注册中心和 Spring Cloud 集群注册中心获取服务实例信息,构建 Pixiu 转发 Http 请求路由规则的。</p> |
| <p>更多的 Adapter 可以查看 <a href="../adapter/dubbo/">Adapter文档</a>。</p></description></item><item><title>Overview: 部署操作</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment/</guid><description> |
| <h2 id="一docker镜像部署">一、Docker镜像部署</h2> |
| <p>注:首先确认本机已经安装好docker并且启动</p> |
| <h3 id="1从docker-hub-拉取-pixiu-镜像">1、从docker hub 拉取 pixiu 镜像</h3> |
| <p><code>docker pull phial3/dubbo-go-pixiu:latest</code></p> |
| <h3 id="2按照需求准备pixiu配置">2、按照需求准备pixiu配置</h3> |
| <h4 id="pixiu配置参数详解configurations"><a href="../configurations/">pixiu配置参数详解</a></h4> |
| <p>准备 <code>log.yml</code> 和 <code>conf.yaml</code> 配置文件,将这两个配置文件在pixiu启动的时候挂在到本地</p> |
| <h3 id="3启动-pixiu">3、启动 pixiu</h3> |
| <p><strong>前台启动</strong>:,可方便查看服务信息运行是否正常</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>docker run --name dubbo-go-pixiu -p 8883:8883 <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/conf.yaml:/etc/pixiu/conf.yaml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/log.yml:/etc/pixiu/log.yml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> apache/dubbo-go-pixiu:latest |
| </span></span></code></pre></div><p><strong>后台启动</strong>:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>docker run -itd --name dubbo-go-pixiu -p 8883:8883 <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/conf.yaml:/etc/pixiu/conf.yaml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> -v /yourpath/log.yml:/etc/pixiu/log.yml <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span> apache/dubbo-go-pixiu:latest |
| </span></span></code></pre></div><blockquote> |
| <p>注:</p> |
| <p>(1) <code>--name</code>命令后面的dubbo-go-pixiu为你的pixiu实例的名称,可自行修改</p> |
| <p>(2)命令中的<code>/yourpath/**</code>路径为你本地存放pixiu配置文件的绝对路径</p> |
| </blockquote> |
| <h3 id="4查看-pixiu-实例">4、查看 pixiu 实例</h3> |
| <p><code>docker ps | grep dubbo-go-pixiu</code> 正在运行的pixiu实例</p> |
| <p><code>docker exec -it dubbo-go-pixiu /bin/bash</code> 进入pixiu</p> |
| <h3 id="5停止pixiu">5、停止pixiu</h3> |
| <p><code>docker stop dubbo-go-pixiu</code> 停止pixiu</p> |
| <p><code>docker restart dubbo-go-pixiu</code> 重启pixiu</p> |
| <h2 id="二源码构建部署">二、源码构建部署</h2> |
| <p>注:首先确认本机已经安装好 golang 1.15+ 开发环境,启用<code>go mod</code></p> |
| <h3 id="1下载-pixiu-源码到本地">1、下载 pixiu 源码到本地</h3> |
| <p><code>git clone git@github.com:apache/dubbo-go-pixiu.git</code></p> |
| <h3 id="2配置pixiu">2、配置pixiu</h3> |
| <h4 id="pixiu配置参数详解configurations-1"><a href="../configurations/">pixiu配置参数详解</a></h4> |
| <p>进入到pixiu的源码目录<code>cd dubbo-go-pixiu/</code>,在<code>dubbo-go-pixiu/configs/</code>目录下 |
| 修改配置文件<code>conf.yaml</code>和<code>log.yml</code></p> |
| <h3 id="3编译构建">3、编译构建</h3> |
| <dl> |
| <dt>在pixiu的源码目录<code>dubbo-go-pixiu/</code>下执行<code>make build</code></dt> |
| <dd>构建完成会在当前目录下生成名为<code>dubbo-go-pixiu</code>的可执行文件</dd> |
| </dl> |
| <h3 id="4启动服务与运行示例">4、启动服务与运行示例</h3> |
| <p>在当前目录下<code>make run</code> 可根据你当前的配置直接启动pixiu服务</p> |
| <p><a href="../quickstart/">运行示例参考</a></p></description></item><item><title>Overview: Listener 介绍</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/</guid><description/></item><item><title>Overview: Network Filter 介绍</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/</guid><description/></item><item><title>Overview: Adapter 介绍</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/</guid><description/></item><item><title>Overview: Http Filter 介绍</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/</guid><description/></item><item><title>Overview: 案例介绍</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/</guid><description/></item><item><title>Overview: 质量指标</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/</guid><description/></item><item><title>Overview: 附录</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/</guid><description/></item></channel></rss> |