摘要:當(dāng)企業(yè)的運(yùn)維團(tuán)隊(duì)去維護(hù)一個(gè)彈性的容器集群時(shí),傳統(tǒng)的軟件部署方式需要向容器遷移,這個(gè)過(guò)程中需要有風(fēng)險(xiǎn)預(yù)判和規(guī)避之道。但是這樣會(huì)有些問(wèn)題,就是大部分鏡像都是基于構(gòu)建的,這會(huì)和樹(shù)莓派的很不兼容。多次嘗試后狀態(tài)被破壞刪庫(kù)重試,重啟大法好。
當(dāng)前技術(shù)世界的發(fā)展形勢(shì)就是讓開(kāi)發(fā)人員從繁瑣的應(yīng)用配置和管理中解放出來(lái),使用容器鏡像來(lái)處理復(fù)雜的程序運(yùn)行依賴庫(kù)的需求,保證代碼運(yùn)行環(huán)境的一致性。既然這樣的好處是如此清晰,但為什么企業(yè)中的基礎(chǔ)設(shè)施環(huán)境沒(méi)有往容器集群切換呢?關(guān)鍵問(wèn)題還是風(fēng)險(xiǎn),新技術(shù)意味著未經(jīng)檢驗(yàn)的技術(shù)和實(shí)踐經(jīng)驗(yàn)的缺乏,這就會(huì)帶來(lái)很多不可預(yù)知的風(fēng)險(xiǎn)。
當(dāng)企業(yè)的運(yùn)維團(tuán)隊(duì)去維護(hù)一個(gè)彈性的容器集群時(shí),傳統(tǒng)的軟件部署方式需要向容器遷移,這個(gè)過(guò)程中需要有風(fēng)險(xiǎn)預(yù)判和規(guī)避之道。而Docker和Rancher正是提供了解決這些風(fēng)險(xiǎn)問(wèn)題的解決方案,比如基于Rancher的Catalog功能就能快速的完成一些基礎(chǔ)軟件的部署(比如ElasticSearch)。在風(fēng)險(xiǎn)管理方面,我們可以看看基于Docker和Rancher來(lái)運(yùn)行彈性集群的五個(gè)關(guān)鍵點(diǎn):
運(yùn)行Rancher高可用模式 (本文將介紹)
Rancher中使用負(fù)載均衡服務(wù)
Rancher中的服務(wù)監(jiān)控和監(jiān)控檢查
開(kāi)發(fā)者自定義針對(duì)Rancher的安裝部署
討論利用Convoy對(duì)數(shù)據(jù)的管理
我原本希望展現(xiàn)一下用一臺(tái)老式筆記本部署Rancher Server,然后用docker-machine加入幾個(gè)樹(shù)莓派節(jié)點(diǎn)部署Rancher Agent,這樣來(lái)構(gòu)建一個(gè)Rancher集群。但是這樣會(huì)有些問(wèn)題,就是大部分Docker鏡像都是基于Intel CPU構(gòu)建的,這會(huì)和樹(shù)莓派的ARM CPU很不兼容。所以我還是老老實(shí)實(shí)的用AWS的虛機(jī)來(lái)構(gòu)建Rancher集群吧。
初始安裝,我們暫時(shí)先部署一臺(tái)Rancher Server和一臺(tái)Rancher Agent,然后再部署一個(gè)簡(jiǎn)單的多實(shí)例應(yīng)用。
上面這張圖展現(xiàn)了我的整個(gè)集群的設(shè)置,我選擇AWS是因?yàn)槲覀€(gè)人比較熟悉,當(dāng)然你完全可以選擇你擅長(zhǎng)的云提供商。
我們可以嘗試創(chuàng)建一個(gè)Wordpress,順帶來(lái)檢測(cè)一下Rancher是否正確部署了。
這樣我們的應(yīng)用就運(yùn)行起來(lái)了,試想,如果Rancher Server所在服務(wù)器出現(xiàn)故障,或者有網(wǎng)絡(luò)中斷問(wèn)題發(fā)生,會(huì)對(duì)應(yīng)用產(chǎn)生什么影響,Wordpress還能繼續(xù)接受請(qǐng)求么?
為了確認(rèn)我們的疑問(wèn),我將會(huì)按照下面的步驟執(zhí)行,然后記錄一下其中的運(yùn)行結(jié)果:
阻斷Rancher Server和Rancher Agent間的網(wǎng)絡(luò)
停止Rancher Server的容器
瞧一瞧Rancher Server的容器里面到底有什么
最終我們要解決這些問(wèn)題,那就要看看Rancher HA來(lái)怎樣解決這些風(fēng)險(xiǎn)。
阻斷Rancher Server和Rancher Agent間的網(wǎng)絡(luò)進(jìn)入AWS,然后看我各種犀利的操作:
阻斷Rancher Server和Rancher Agent間的訪問(wèn)
記錄一下發(fā)生了什么
干掉幾個(gè)WordPress的實(shí)例
恢復(fù)原先的網(wǎng)絡(luò)
觀察結(jié)果首先,網(wǎng)絡(luò)阻斷后沒(méi)過(guò)多久Rancher Host就出現(xiàn)了reconnecting狀態(tài)
此時(shí)我依然可以正常訪問(wèn)Wordpress的地址,服務(wù)沒(méi)有中斷,IPSec隧道網(wǎng)絡(luò)還存儲(chǔ),Wordpress實(shí)例還是可以正常訪問(wèn)數(shù)據(jù)庫(kù)。
現(xiàn)在我們要停掉一個(gè)Wordpress實(shí)例,看看會(huì)發(fā)生什么?因?yàn)槲覀円呀?jīng)無(wú)法從Rancher UI上管理這些容器了,所以還是到對(duì)應(yīng)的主機(jī)上執(zhí)行docker命令吧。
很遺憾Wordpress容器沒(méi)有重新啟動(dòng),這有點(diǎn)麻煩了。我們還是把Rancher Server弄回來(lái)吧,看看它能不能感知到其中一個(gè)Wordpress容器已經(jīng)被停掉了。
在各種犀利的操作和等待之后,Rancher Server與Agent重新連接了,Wordpress容器就被重新啟動(dòng)了。完美~
所以我們可以看,Rancher Server還是能夠處理間歇性的網(wǎng)絡(luò)問(wèn)題,可以實(shí)現(xiàn)Rancher Server和Agent的故障重連。但是如果要讓網(wǎng)絡(luò)中斷對(duì)Rancher的影響進(jìn)一步減小,那么部署多個(gè)Rancher Server就比較重要了。
我們還是回過(guò)來(lái),按照先前計(jì)劃看看Rancher Server 容器停掉后會(huì)發(fā)生什么?我們會(huì)因此失去對(duì)這些Rancher Host的管理能力么?看看如何!
停掉Rancher Server這次我需要登入到Rancher Server的host上手動(dòng)停止Rancher Server,其實(shí)Rancher Server一般是設(shè)置 –restart=always,所以自己有一定的恢復(fù)能力。但我們可以假設(shè)比如磁盤寫滿了后,Rancher Server真的起不來(lái)了。
觀察結(jié)果執(zhí)行docker stop rancher-server之后,Wordpress還是能夠正常工作,但是Rancher UI是不能訪問(wèn)了,這可不行,得趕緊把Rancher Server弄回來(lái)。
再執(zhí)行docker start rancher-server,Rancher Server啟動(dòng)后又一切恢復(fù)正常,這很酷啊,這是什么魔法?趕緊著,麻溜地分析起來(lái)!
揭開(kāi)Rancher Server的神秘面紗我們來(lái)一次對(duì)Rancher Server的簡(jiǎn)要探究之旅,看一看Rancher Server的Dockerfile。
# Dockerfile contents FROM ... ... ... CMD ["/usr/bin/s6-svscan", "/service"]
我們可以看到使用了s6-svscan,它可以運(yùn)行指定的目錄結(jié)構(gòu)內(nèi)的程序,目錄內(nèi)的主要文件就是Run、Down、Finish。下面這張圖能看到會(huì)運(yùn)行兩個(gè)服務(wù)cattle(Rancher的核心調(diào)度器)和mysql。
其實(shí)在容器內(nèi)部我們也可以看到起了哪些服務(wù)。
PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /usr/bin/s6-svscan /service 7 ? S 0:00 s6-supervise cattle 8 ? S 0:00 s6-supervise mysql 9 ? Ssl 0:57 java -Xms128m -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/cattle/logs -Dlogback.bootstrap.level=WARN -cp /usr/share/cattle/1792f92ccdd6495127a28e16a685da7 135 ? Sl 0:01 websocket-proxy 141 ? Sl 0:00 rancher-catalog-service -catalogUrl library=https://github.com/rancher/rancher-catalog.git,community=https://github.com/rancher/community-catalog.git -refreshInterval 300 142 ? Sl 0:00 rancher-compose-executor 143 ? Sl 0:00 go-machine-service 1517 ? Ss 0:00 bash 1537 ? R+ 0:00 ps x
我們可以看到Rancher的大腦,一個(gè)名叫Cattle的Java應(yīng)用,它需要一個(gè)MySQL來(lái)存儲(chǔ)對(duì)應(yīng)的數(shù)據(jù)。這確實(shí)很方便,但是我們發(fā)現(xiàn)這樣會(huì)有單點(diǎn)故障,所有的數(shù)據(jù)存儲(chǔ)在一個(gè)單點(diǎn)的mysql中。如果對(duì)mysql中的數(shù)據(jù)來(lái)一些不禮貌的操作,會(huì)發(fā)生什么呢?
破壞MySQL存儲(chǔ)數(shù)據(jù)
進(jìn)入容器中執(zhí)行一些MySQL命令,我們一起來(lái)干點(diǎn)壞事:
docker exec -it rancher-server bash $ > mysql mysql> use cattle; mysql> SET FOREIGN_KEY_CHECKS = 0; mysql> truncate service; mysql> truncate network;
結(jié)果是可想而知的,Rancher不記得任何事了,你刪掉一個(gè)Wordpress容器,它也不會(huì)恢復(fù)。
而且我也刪除了network表的數(shù)據(jù),Wordpress也不知道如何找到它的MySQL服務(wù)了。
顯然,若要在生產(chǎn)環(huán)境運(yùn)行Rancher,我們需要一個(gè)方式來(lái)保護(hù)Rancher Server的數(shù)據(jù),既然如此那我們就講一下Rancher HA吧。
Rancher HA安裝過(guò)程首先我們要確保數(shù)據(jù)的安全,我選擇了AWS的RDS服務(wù),RDS可以提供一個(gè)信賴的MySQL服務(wù),數(shù)據(jù)安全是可以保證的。當(dāng)然你也可以使用其他的,我只是對(duì)RDS更熟悉一些。
下面我們繼續(xù)Rancher HA的安裝過(guò)程:
按照我們之前的約定,我是創(chuàng)建了RDS的MySQL實(shí)例,然后把它當(dāng)做外部數(shù)據(jù)庫(kù)和Rancher Server連接。
一旦我們使用了外部數(shù)據(jù)庫(kù)模式,UI上將會(huì)打開(kāi)兩個(gè)選項(xiàng)來(lái)設(shè)置HA。
怎么辦!選擇困難癥??!沒(méi)關(guān)系,我來(lái)解釋一下每個(gè)選項(xiàng)的含義。
Cluster size,注意這里怎么都是奇數(shù)?因?yàn)樵诤蠖耍琑ancher會(huì)設(shè)置一個(gè)ZooKeeper Quorum保證鎖同步,ZooKeeper推薦奇數(shù)集群,因?yàn)榕紨?shù)節(jié)點(diǎn)數(shù)量不能提供額外的容錯(cuò)性。我們這里就選擇3個(gè)Host吧,這是一個(gè)可用和易用的平衡。
Host registration URL,這里是填寫一個(gè)Rancher Cluster入口的FQDN,推薦使用外部負(fù)載均衡服務(wù)或者DNS服務(wù)(round robin策略)。比如圖中我使用的是支持SRV記錄的DNS服務(wù),通過(guò)DNS來(lái)做三個(gè)Rancher Server的負(fù)載均衡:
SSL Certificates是列表中的最后一個(gè)選項(xiàng),如果你有域名的SSL證書可以配置在這里,否則Rancher會(huì)自動(dòng)生成一個(gè)自簽名證書。
所有都填完后,就會(huì)給你提供一個(gè)rancher-ha.sh的腳本來(lái)下載。
有了腳本就可以到每個(gè)Rancher Server節(jié)點(diǎn)上執(zhí)行了,執(zhí)行前還需要注意目前只能支持docker v1.10.3。安裝指定版本的Docker Engine,可以參考下面的方式:
#!/bin/bash apt-get install -y -q apt-transport-https ca-certificates apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list apt-get update apt-get install -y -q docker-engine=1.10.3-0~trusty # run the command below to show all available versions # apt-cache showpkg docker-engine
Docker安裝之后,就要確認(rèn)一下端口開(kāi)放了,需要開(kāi)放哪些端口可以看這里,不過(guò)如果是第一次安裝,我建議你把端口全部開(kāi)放吧,免得坑太深被活埋。
一切準(zhǔn)備妥當(dāng)之后,可以執(zhí)行腳本,執(zhí)行后能看到這樣的輸出:
... ed5d8e75b7be: Pull complete ed5d8e75b7be: Pull complete 7ebc9fcbf163: Pull complete 7ebc9fcbf163: Pull complete ffe47ea37862: Pull complete ffe47ea37862: Pull complete b320962f9dbe: Pull complete b320962f9dbe: Pull complete Digest: sha256:aff7c52e52a80188729c860736332ef8c00d028a88ee0eac24c85015cb0e26a7 Status: Downloaded newer image for rancher/server:latest Started container rancher-ha c41f0fb7c356a242c7fbdd61d196095c358e7ca84b19a66ea33416ef77d98511 Run the below to see the logs docker logs -f rancher-ha
執(zhí)行過(guò)程中會(huì)下載一些額外的鏡像,畢竟要支持HA特性么。另外Host的內(nèi)存建議至少4G,執(zhí)行完畢后通過(guò)docker ps可以看看都啟動(dòng)了什么:
常見(jiàn)的問(wèn)題和解決方案正常來(lái)說(shuō),一般我們會(huì)在日志中能看到各個(gè)成員加入到Rancher HA Cluster中:
time="2016-07-22T04:13:22Z" level=info msg="Cluster changed, index=0, members=[172.30.0.209, 172.30.0.111, ]" component=service ... time="2016-07-22T04:13:34Z" level=info msg="Cluster changed, index=3, members=[172.30.0.209, 172.30.0.111, 172.30.0.69]" component=service
但有時(shí)候會(huì)有意外,比如會(huì)看到一些error信息:
time="2016-07-23T14:37:02Z" level=info msg="Waiting for server to be available" component=cert time="2016-07-23T14:37:02Z" level=info msg="Can not launch agent right now: Server not available at http://172.17.0.1:18080/ping:" component=service
這個(gè)問(wèn)題產(chǎn)生的背后原因有很多,我閱讀了一些Github上的issue和各種論壇的帖子,幫大家整理了一些產(chǎn)生此問(wèn)題的根本原因。
網(wǎng)絡(luò)設(shè)置問(wèn)題有時(shí)候容器自動(dòng)獲取了節(jié)點(diǎn)的錯(cuò)誤的IP,這時(shí)候你需要強(qiáng)制指定正確的IP。
ZooKeeper沒(méi)有正常啟動(dòng)Zookeeper的容器是分布在每個(gè)節(jié)點(diǎn)上的,如果節(jié)點(diǎn)之間的問(wèn)題導(dǎo)致Zookeeper容器不能通信,就會(huì)導(dǎo)致這個(gè)問(wèn)題,如果要確認(rèn)這個(gè)問(wèn)題,可以參考這樣的日志輸出。
目錄/var/lib/rancher/state下有殘留文件如果多次運(yùn)行Rancher-ha.sh這個(gè)腳本,那么你需要運(yùn)行前清理一下這個(gè)目錄下殘留文件。
多次嘗試后HA狀態(tài)被破壞刪庫(kù)重試,重啟大法好。
機(jī)器資源不足內(nèi)存至少需要4GB,此外mysql的連接數(shù)也要足夠,可以按照每個(gè)HA節(jié)點(diǎn)需要50個(gè)連接數(shù)來(lái)計(jì)算。如果你看到下面的錯(cuò)誤,那么此問(wèn)題確信無(wú)疑。
time="2016-07-25T11:01:02Z" level=fatal msg="Failed to create manager" err="Error 1040: Too many connections"rancher/server版本不匹配
rancher-ha.sh執(zhí)行的時(shí)候默認(rèn)是下載rancher/server:latest鏡像,如果你沒(méi)有host上的鏡像不一致會(huì)導(dǎo)致難以想象的問(wèn)題,最好執(zhí)行的時(shí)候指定版本號(hào)。比如:
./rancher-ha.sh rancher/server:docker0返回了錯(cuò)誤的IP
這個(gè)錯(cuò)誤具體就是在HA的安裝過(guò)程中會(huì)去檢查agent健康狀態(tài),此時(shí)它獲取了一個(gè)錯(cuò)誤的docker0 IP地址,因?yàn)槲蚁惹耙呀?jīng)將其設(shè)置成了172.17.42.1。
curl localhost:18080/ping > pong curl http://172.17.0.1:18080/ping > curl: (7) Failed to connect to 172.17.0.1 port 18080: Connection refused
我的解決辦法就是重裝了我的AWS虛機(jī),導(dǎo)致獲取docker0 IP錯(cuò)誤的原因,我感覺(jué)可能是我在虛機(jī)里多次安裝了Docker。重裝之后,一切就正常了,我也看到了期待的日志信息。
HA部署完畢后我們終于看到了夢(mèng)寐以求的正確日志輸出,和美好的UI展現(xiàn):
time="2016-07-24T20:00:11Z" level=info msg="[0/10] [zookeeper]: Starting " time="2016-07-24T20:00:12Z" level=info msg="[1/10] [zookeeper]: Started " time="2016-07-24T20:00:12Z" level=info msg="[1/10] [tunnel]: Starting " time="2016-07-24T20:00:13Z" level=info msg="[2/10] [tunnel]: Started " time="2016-07-24T20:00:13Z" level=info msg="[2/10] [redis]: Starting " time="2016-07-24T20:00:14Z" level=info msg="[3/10] [redis]: Started " time="2016-07-24T20:00:14Z" level=info msg="[3/10] [cattle]: Starting " time="2016-07-24T20:00:15Z" level=info msg="[4/10] [cattle]: Started " time="2016-07-24T20:00:15Z" level=info msg="[4/10] [go-machine-service]: Starting " time="2016-07-24T20:00:15Z" level=info msg="[4/10] [websocket-proxy]: Starting " time="2016-07-24T20:00:15Z" level=info msg="[4/10] [rancher-compose-executor]: Starting " time="2016-07-24T20:00:15Z" level=info msg="[4/10] [websocket-proxy-ssl]: Starting " time="2016-07-24T20:00:16Z" level=info msg="[5/10] [websocket-proxy]: Started " time="2016-07-24T20:00:16Z" level=info msg="[5/10] [load-balancer]: Starting " time="2016-07-24T20:00:16Z" level=info msg="[6/10] [rancher-compose-executor]: Started " time="2016-07-24T20:00:16Z" level=info msg="[7/10] [go-machine-service]: Started " time="2016-07-24T20:00:16Z" level=info msg="[8/10] [websocket-proxy-ssl]: Started " time="2016-07-24T20:00:16Z" level=info msg="[8/10] [load-balancer-swarm]: Starting " time="2016-07-24T20:00:17Z" level=info msg="[9/10] [load-balancer-swarm]: Started " time="2016-07-24T20:00:18Z" level=info msg="[10/10] [load-balancer]: Started " time="2016-07-24T20:00:18Z" level=info msg="Done launching management stack" component=service time="2016-07-24T20:00:18Z" level=info msg="You can access the site at https://" component=service
如果使用了自簽名證書且前端希望通過(guò)HTTPS來(lái)訪問(wèn),那么你需要把你的證書添加到你的受信任證書中。然后再等待數(shù)據(jù)庫(kù)資源約束調(diào)整完畢后,三個(gè)節(jié)點(diǎn)的服務(wù)就完全運(yùn)行起來(lái)了。
結(jié)論這比原來(lái)想象的要多了很多。這就是為什么分布式系統(tǒng)一直是PHD的研究領(lǐng)域。解決所有的故障點(diǎn)后,我認(rèn)為Rancher HA已經(jīng)開(kāi)始向頂尖分布式系統(tǒng)出發(fā)啦。
我最終會(huì)將Rancher HA的腳本配置成Ansible的一個(gè)簡(jiǎn)單任務(wù),敬請(qǐng)關(guān)注!
附錄對(duì)于任何分布式系統(tǒng)來(lái)說(shuō),基本的套路就是統(tǒng)一管理其中產(chǎn)生的狀態(tài)和變化,這意味著多個(gè)服務(wù)需要一個(gè)進(jìn)程來(lái)協(xié)調(diào)更新。
Rancher的處理方式就是把狀態(tài)都放倒數(shù)據(jù)庫(kù)中,需要同步狀態(tài)時(shí)把狀態(tài)信息放入到event中,發(fā)送event就可以向其他組件同步狀態(tài)。所以當(dāng)正在處理一個(gè)事件時(shí),它有一個(gè)鎖,事件未處理完前數(shù)據(jù)庫(kù)中的狀態(tài)是不能被修改的。
在單臺(tái)服務(wù)器設(shè)置中,所有的協(xié)調(diào)都發(fā)生在主機(jī)上的內(nèi)存中。一旦你涉及多服務(wù)器HA配置,像zookeeper和redis是必要的。
報(bào)名11.6成都Docker技術(shù)沙龍
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26758.html
摘要:摘要本篇文章介紹了如何通過(guò)數(shù)人云部署一套標(biāo)準(zhǔn)的日志收集系統(tǒng)。主機(jī)添加完成后,檢查主機(jī)運(yùn)行是否正常,如圖第二步,發(fā)布實(shí)例我們將通過(guò)數(shù)人云將的鏡像以模式部署到我們規(guī)劃的主機(jī)和上。 摘要:本篇文章介紹了如何通過(guò)數(shù)人云部署一套標(biāo)準(zhǔn)的 ELK 日志收集系統(tǒng)。第一步,將主機(jī)組織成集群;第二步,發(fā)布 ElasticSearch 實(shí)例;第三步,發(fā)布 Kibana 實(shí)例;第四步,發(fā)布 Logstash ...
摘要:阿里云容器服務(wù)已經(jīng)發(fā)布了基于容器集群的開(kāi)源區(qū)塊鏈解決方案,利用容器技術(shù)可以在分鐘之內(nèi)部署完成一個(gè)生產(chǎn)級(jí)別安全高可用的區(qū)塊鏈應(yīng)用運(yùn)行環(huán)境,幫助企業(yè)可以加速業(yè)務(wù)創(chuàng)新。對(duì)節(jié)點(diǎn),阿里云服務(wù)會(huì)自動(dòng)開(kāi)啟相應(yīng)調(diào)度能力。 摘要: 阿里云ECS彈性裸金屬服務(wù)器(神龍)已經(jīng)與其容器服務(wù)全面兼容,用戶可以選擇在彈性裸金屬服務(wù)器上直接運(yùn)行容器、管控Kubernetes/Docker容器集群,如此將會(huì)獲得非常出...
摘要:有了分布式數(shù)據(jù)庫(kù)可以使數(shù)據(jù)庫(kù)的性能可以隨著節(jié)點(diǎn)增加線性地增加。分布式數(shù)據(jù)庫(kù)最最下面是,是主備的,通過(guò)的內(nèi)核開(kāi)發(fā)能力,我們能夠?qū)崿F(xiàn)主備切換數(shù)據(jù)零丟失,所以數(shù)據(jù)落在這個(gè)里面,是非常放心的,哪怕是掛了一個(gè)節(jié)點(diǎn),切換完了以后,你的數(shù)據(jù)也是不會(huì)丟的。 此文已由作者劉超授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問(wèn)網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營(yíng)經(jīng)驗(yàn) 三、微服務(wù)化的十個(gè)設(shè)計(jì)要點(diǎn) 微服務(wù)有哪些要點(diǎn)呢?第一張圖是...
閱讀 2503·2021-11-24 09:39
閱讀 3427·2021-11-15 11:37
閱讀 2279·2021-10-08 10:04
閱讀 3986·2021-09-09 11:54
閱讀 1899·2021-08-18 10:24
閱讀 1074·2019-08-30 11:02
閱讀 1811·2019-08-29 18:45
閱讀 1668·2019-08-29 16:33