<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deploying Applications on Apache Dubbo</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/</link><description>Recent content in Deploying Applications on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploying Istio Environment</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/istio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/istio/</guid><description>&lt;h2 id="1-preparation"&gt;1. Preparation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Docker, Helm, and kubectl environments are installed.&lt;/li&gt;
&lt;li&gt;Dubbo-go CLI tools and dependencies are installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-deploy-istio-environment"&gt;2. Deploy Istio Environment&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install the Istio base CRD and istiod components using Helm. You can also refer to the &lt;a href="https://istio.io/"&gt;Istio Documentation&lt;/a&gt; for installation using istioctl.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ helm repo add istio https://istio-release.storage.googleapis.com/charts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl create namespace istio-system
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ helm install istio-base istio/base -n istio-system
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ helm install istiod istio/istiod --namespace istio-system
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;Delete the Istio horizontal pod autoscaler resources&lt;/p&gt;</description></item><item><title>Deploying Dubbo-go application in Istio environment</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/deploy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/deploy/</guid><description>&lt;p&gt;In this chapter, we will quickly create a set of Dubbo-go Server and Client applications using the application template and deploy them in an Istio cluster; observe, debug, and verify service discovery and successful calls.&lt;/p&gt;
&lt;p&gt;The matching mesh sample is available at
&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/mesh" target="_blank"&gt;dubbo-go-samples/mesh&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="1-preparation"&gt;1. Preparation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dubbogo-cli&lt;/code&gt; and related dependency tools are installed. Install &lt;code&gt;dubbogo-cli&lt;/code&gt; from
&lt;a href="../../../tools/dubbogo-cli/"&gt;&lt;code&gt;tools/dubbogo-cli&lt;/code&gt;&lt;/a&gt; in the dubbo-go repository. &lt;code&gt;grpc_cli&lt;/code&gt; is optional for local
debugging.&lt;/li&gt;
&lt;li&gt;The docker, helm, and kubectl environments are installed. (Arm machines must support docker buildx)&lt;/li&gt;
&lt;li&gt;The task &lt;a href="../istio/"&gt;Deployment of Istio Environment&lt;/a&gt; is complete.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-developing-the-server-side-dubbo-go-application"&gt;2. Developing the Server-side Dubbo-go Application&lt;/h2&gt;
&lt;h3 id="21-create-project-template-with-dubbogo-cli"&gt;2.1 Create Project Template with dubbogo-cli&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mkdir mesh-app-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd mesh-app-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ dubbogo-cli newApp . 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ tree .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── Makefile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── api
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── api.proto
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── build
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── chart
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── app
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ ├── Chart.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ ├── templates
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ │ ├── _helpers.tpl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ │ ├── deployment.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ │ ├── service.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ │ └── serviceaccount.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ └── values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── nacos_env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── Chart.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ ├── templates
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ ├── _helpers.tpl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ ├── deployment.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ │ └── service.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── cmd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── app.go
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── conf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── dubbogo.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── go.mod
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── go.sum
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── pkg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── service.go
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;dubbogo-cli&lt;/code&gt; is maintained in the dubbo-go repository under &lt;code&gt;tools/dubbogo-cli&lt;/code&gt;, and the generated template is the
starting point for the rest of this guide.&lt;/p&gt;</description></item><item><title>Traffic Management</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/traffic_management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/traffic_management/</guid><description>&lt;p&gt;In this section, we will continue from the previous task &lt;a href="../deploy/"&gt;【Deploying Dubbo-go Applications in Istio Environment】&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the previous task, we deployed a set of Dubbo-go Server and Client applications in the cluster and verified that service discovery and invocation were successful. In this section, we will create a new version of the server application. By configuring VirtualService and DestinationRule, we will achieve routing management and traffic shifting capabilities.&lt;/p&gt;
&lt;p&gt;The matching traffic-management manifests are available at
&lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/mesh/deploy/traffic" target="_blank"&gt;dubbo-go-samples/mesh/deploy/traffic&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Graceful Shutdown</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/graceful_shutdown/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/graceful_shutdown/</guid><description>&lt;h1 id="graceful-shutdown"&gt;Graceful Shutdown&lt;/h1&gt;
&lt;p&gt;Sample source: &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/graceful_shutdown" target="_blank"&gt;dubbo-go-samples/graceful_shutdown&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In a stable production environment, container scheduling is fully managed by k8s, and microservice governance is maintained and managed by the service framework or operations personnel. In scenarios like releasing a new version or scaling up/down, old container instances will be terminated and replaced with new ones. If this replacement process is not handled properly in high-traffic online production environments, it can lead to a large number of erroneous requests in a short time, triggering alarms and even affecting normal business operations. For larger organizations, the losses from issues during the release process can be enormous. Hence, the need for graceful shutdown has arisen. This requires the service framework to provide stable guarantees during the service offline process on top of stable service invocation and traditional service governance capabilities, thus reducing operational costs and improving application stability.&lt;/p&gt;</description></item><item><title>Proxyless Service Mesh</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/proxyless_service_mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/deployment/proxyless_service_mesh/</guid><description>&lt;p&gt;Sample source: &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/mesh" target="_blank"&gt;dubbo-go-samples/mesh&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="1-what-is-proxyless-service-mesh"&gt;1. What is Proxyless Service-Mesh?&lt;/h2&gt;
&lt;h3 id="11-brief-analysis-of-service-mesh"&gt;1.1 Brief Analysis of Service Mesh&lt;/h3&gt;
&lt;p&gt;Istio is the most popular open-source service mesh today. It consists of a control plane and a data plane, as shown in the architecture below, image sourced from &lt;a href="https://istio.io/"&gt;istio official website&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cn.dubbo.apache.org/imgs/docs3-v2/golang-sdk/concept/mesh/proxyless_service_mesh/service-mesh.svg" alt="After using Istio"&gt;&lt;/p&gt;
&lt;p&gt;The control plane located at the bottom half of the image is responsible for the distribution of resources like configurations, service information, and certificates. The data plane, located at the upper half, focuses on the communication traffic between services; traditional service meshes intercept all business network traffic through proxies, which need to be aware of the configuration resources issued by the control plane to manage traffic directions as required.&lt;/p&gt;</description></item></channel></rss>