久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Service之間如何通信

共計(jì) 1521 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。

Service 之間如何通信,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

微服務(wù)架構(gòu)的應(yīng)用由若干 service 組成。比如有運(yùn)行 httpd 的 web 前端,有提供緩存的 memcached,有存放數(shù)據(jù)的 mysql,每一層都是 swarm 的一個(gè) service,每個(gè) service 運(yùn)行了若干容器。在這樣的架構(gòu)中,service 之間是必然要通信的。

服務(wù)發(fā)現(xiàn)

一種實(shí)現(xiàn)方法是將所有 service 都 publish 出去,然后通過(guò) routing mesh 訪問(wèn)。但明顯的缺點(diǎn)是把 memcached 和 mysql 也暴露到外網(wǎng),增加了安全隱患。

如果不 publish,那么 swarm 就要提供一種機(jī)制,能夠:

讓 service 通過(guò)簡(jiǎn)單的方法訪問(wèn)到其他 service。

當(dāng) service 副本的 IP 發(fā)生變化時(shí),不會(huì)影響訪問(wèn)該 service 的其他 service。

當(dāng) service 的副本數(shù)發(fā)生變化時(shí),不會(huì)影響訪問(wèn)該 service 的其他 service。

這其實(shí)就是服務(wù)發(fā)現(xiàn)(service discovery)。Docker Swarm 原生就提供了這項(xiàng)功能,通過(guò)服務(wù)發(fā)現(xiàn),service 的使用者不需要知道 service 運(yùn)行在哪里,IP 是多少,有多少個(gè)副本,就能與 service 通信。下面我們開(kāi)始實(shí)踐。

創(chuàng)建 overlay 網(wǎng)絡(luò)

要使用服務(wù)發(fā)現(xiàn),需要相互通信的 service 必須屬于同一個(gè) overlay 網(wǎng)絡(luò),所以我們先得創(chuàng)建一個(gè)新的 overlay 網(wǎng)絡(luò)。

docker network create --driver overlay myapp_net

直接使用  ingress  行不行?

很遺憾,目前  ingress  沒(méi)有提供服務(wù)發(fā)現(xiàn),必須創(chuàng)建自己的 overlay 網(wǎng)絡(luò)。

部署 service 到 overlay

部署一個(gè) web 服務(wù),并將其掛載到新創(chuàng)建的 overlay 網(wǎng)絡(luò)。

docker service create --name my_web --replicas=3 --network myapp_net httpd

部署一個(gè) util 服務(wù)用于測(cè)試,掛載到同一個(gè) overlay 網(wǎng)絡(luò)。

docker service create --name util --network myapp_net busybox sleep 10000000

sleep 10000000  的作用是保持 busybox 容器處于運(yùn)行的狀態(tài),我們才能夠進(jìn)入到容器中訪問(wèn) service my_web。

驗(yàn)證

通過(guò)  docker service ps util  確認(rèn) util 所在的節(jié)點(diǎn)為 swarm-worker1。

登錄到 swarm-worker1,在容器 util.1 中 ping 服務(wù)  my_web。

可以看到  my_web  的 IP 為  10.0.0.2,這是哪個(gè)副本的 IP 呢?

其實(shí)哪個(gè)副本的 IP 都不是。10.0.0.2  是  my_web service 的 VIP(Virtual IP),swarm 會(huì)將對(duì) VIP 的訪問(wèn)負(fù)載均衡到每一個(gè)副本。

我們可以執(zhí)行下面的命令查看每個(gè)副本的 IP。

docker exec util.1.bpon0vvbgve6lz3fp08sgana6 nslookup tasks.my_web

10.0.0.3、10.0.0.4、10.0.0.5  才是各個(gè)副本自己的 IP。不過(guò)對(duì)于服務(wù)的使用者(這里是 util.1),根本不需要知道  my_web 副本的 IP,也不需要知道  my_web  的 VIP,只需直接用 service 的名字  my_web  就能訪問(wèn)服務(wù)。

看完上述內(nèi)容,你們掌握 Service 之間如何通信的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計(jì)1521字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 垦利县| 太原市| 鄂温| 永州市| 体育| 哈尔滨市| 潼关县| 清河县| 尖扎县| 太白县| 平南县| 广东省| 铁岭市| 开鲁县| 和政县| 永顺县| 扶余县| 佛坪县| 汉寿县| 襄垣县| 旬阳县| 龙南县| 长寿区| 原平市| 唐河县| 图片| 嘉定区| 班戈县| 隆林| 浑源县| 定襄县| 玉树县| 荥经县| 安顺市| 读书| 贵港市| 涞源县| 南开区| 合江县| 赣州市| 中山市|