kubernetes微服務擴容與新功能版本的發佈

微服務不須要像普通服務那樣成爲一種獨立的功能或者獨立的資源。定義中稱,微服務是須要與業務能力相匹配,這種說法徹底正確。不幸的是,仍然意味着,若是能力模型粒度的設計是錯誤的,那麼,咱們就必須付出不少代價。若是你閱讀了Fowler的整篇文章,你會發現,其中的指導建議是很是實用的。在決定將全部組件組合到一塊兒時,開發人員須要很是確信這些組件都會有所改變,而且規模也會發生變化。服務粒度越粗,就越難以符合規定原則。服務粒度越細,就越可以靈活地下降變化和負載所帶來的影響。然而,利弊之間的權衡過程是很是複雜的,咱們要在配置和資金模型的基礎上考慮到基礎設施的成本問題。前端

接下來結合咱們的k8s進行對咱們的微服務項目進行演示
啓動副本自己是無狀態的應用,無需考慮服務是否帶來的影響
擴容根據副本自己的模版再去建立新的副本
replicas是整個副本的數量,而不是在原基礎的副本增長3git

[root@k8s-master k8s]# kubectl scale --replicas=3 deployment stock -n ms
deployment.extensions/stock scaled
[root@k8s-master k8s]# kubectl get pod -n ms
NAME                       READY   STATUS    RESTARTS   AGE
eureka-0                   1/1     Running   0          21m
eureka-1                   1/1     Running   0          19m
eureka-2                   1/1     Running   0          18m
gateway                    1/1     Running   0          16m
gateway                    1/1     Running   0          16m
order                         1/1     Running   0          11m
portal                         1/1     Running   0          9m31s
product                      1/1     Running   0          11m
stock                          1/1     Running   0          6s
stock                          1/1     Running   0          11m
stock                          1/1     Running   0          6s

新功能上線模擬
在product這個模塊下,這裏-dev.yml是本地的一個測試環境,修改某個功能好比,那麼咱們就須要從新構建一下jar包,好比修復bug或者添加代碼,咱們就得從新構建鏡像,可是在k8s中咱們只須要對某個模塊進行構建就能夠了,無需再所有構建,進入分支選擇改動的模塊,k8s用新的鏡像docker

[root@k8s-master simple-microservice-dev3]# vim product-service/product-service-biz/src/main/resources/application-dev.yml

開發把代碼更新完以後,提交到git、gitlab倉庫,咱們就須要git clone 拉取目標項目代碼到本地
而後構建vim

[root@k8s-master simple-microservice-dev3]# cd product-service/
[root@k8s-master product-service]# ls
pom.xml  product-service-api  product-service-biz
[root@k8s-master product-service]# mvn clean package -D maven.test.skip=true

爲何能夠在這個目錄下也能夠執行?api

[root@k8s-master product-service]# ls
pom.xml  product-service-api  product-service-biz

由於這裏有這個pom.xml,描述了所需的依賴包,都在這裏面定義的app

而後推送到咱們的k8s中,執行這個腳本,將會替換咱們新的模塊,把新功能推送上去
微服務的新功能發佈也不會影響前端等其餘模塊的使用maven

[root@k8s-master k8s]# ./docker_build.sh product-service
[root@k8s-master k8s]# kubectl get pod -n ms
NAME                       READY   STATUS    RESTARTS   AGE
eureka-0                   1/1     Running   0          70m
eureka-1                   1/1     Running   3          69m
eureka-2                   1/1     Running   3          68m
gateway                    1/1     Running   0          65m
gateway                    1/1     Running   0          65m
order                         1/1     Running   0          60m
portal                         1/1     Running   0          58m
product                      1/1     Running   0          115s
stock                          1/1     Running   0          61m
相關文章
相關標籤/搜索