本文為阿裡雲容器服務spring cloud應用開發系列文章的第九篇。前文讨論了如何開發基于spring cloud微服務應用,所有代碼通過标準的dockerfile建構成為不同的鏡像,我們還要寫docker-compose.yml來描述容器啟動參數和容器之間的關系,這個檔案也就是我們常說的部署模版檔案。
九、服務的部署和釋出政策(本文)
在示例代碼中有兩個docker compose檔案,一個是<code>docker-compose.yml</code>,另外一個是<code>docker-compose.acs.yml</code>。它們兩者的差別是<code>docker-compose.yml</code>中的資料庫是mysql容器,<code>docker-compose.acs.yml</code>中服務連接配接的是阿裡雲的<code>rds</code>。
兩個eureka server組成的叢集,容器名分别為<code>discovery1</code>和<code>discovery2</code>,對于所有使用eureka的其它服務來說,啟動時的環境變量<code>eureka_server_list</code>設定成這兩個eureka server的url,eureka client需要這個資訊決定連接配接那個eureka server。
discovery1通過<code>aliyun.routing.port_8761</code>聲明為對外可以通路,通路端點可以在控制台界面中的discovery1頁面看到。
foo的<code>mysql:mysql</code>links聲明将mysql(容器)和mysql(foo代碼使用的dns位址)綁定起來,而且是跨主機的綁定。
模版部署檔案中的其它内容已經都在前文中介紹過了,這裡就不再重複了。
部署的過程在前面的文章已經讨論過了,這裡把僅輸入部署模版檔案内容的部分再簡單介紹一下。

點選<code>建立并部署</code>按鈕,在對話框中輸入負載均衡id,确認後建立應用。
部署成功的應用如果鏡像發生了變化,需要在對應用<code>重新部署</code>,如果docker-compose.yml内容發生了變化,需要執行<code>變更配置</code>。
阿裡雲容器服務提供了多種釋出政策,我們介紹一下這其中最簡明的一種方式:<code>rolling update</code>釋出,意思是在更新的服務時按順序更新,隻有目前一個服務更新成功後再做下一個服務的更新。這裡的要求時需要用<code>aliyun.scale</code>标簽聲明容器執行個體數量,并且通過<code>aliyun.probe</code>聲明了健康檢查方式。
在本系列文章中我們讨論了如何利用springcloud建構一個微服務應用,以及如何在阿裡雲容器服務上部署微服務應用。阿裡雲容器服務在完全相容docker api的前提提供了服務治理能力,這些服務治理能力都是和語言無關的,比如服務的注冊、發現和綁定,服務健康檢查,高可用保證,服務接入路由,多重服務釋出政策,服務的管控等。
後續會有相關的文章詳細介紹這些功能。
容器技術的應用隔離和一緻性傳遞能力使得它成為微服務架構的最佳實踐之一。由于封裝了網際網路級别的netfix開源産品,spring cloud成為java語言實作微服務應用的成熟架構。
阿裡雲的容器服務不但提供了語言無關的服務治理能力,同時對spring cloud應用也有很好的支援,還有很多對雲應用動态管理的很多擴充。所有這些因素都使得阿裡雲容器服務部署運作微服務應用的一個完美平台。