第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

更新 Go Web 應(yīng)用程序的最佳實(shí)踐

更新 Go Web 應(yīng)用程序的最佳實(shí)踐

Go
SMILET 2021-09-10 16:52:36
我想知道將更新部署到 (MVC) Go web 應(yīng)用程序的最佳實(shí)踐是什么。想象一下以下場(chǎng)景:1) 為我的 Go Web 應(yīng)用程序編寫(xiě)代碼并測(cè)試一些更改2) 在沒(méi)有任何人當(dāng)前使用先前版本被中斷的情況下部署更新。我不知道如何確保第 2) 點(diǎn)可以被覆蓋 - 當(dāng)有人向服務(wù)器發(fā)送請(qǐng)求并且我就在此時(shí)重建/重新啟動(dòng)它時(shí),他會(huì)收到錯(cuò)誤 - 即使請(qǐng)求只使用了一部分我沒(méi)有接觸的代碼或向后兼容的代碼,或者我剛剛添加了一個(gè)新的請(qǐng)求處理程序。也許我錯(cuò)過(guò)了一些瑣碎或眾所周知的模式,因?yàn)槲抑皇窃趯W(xué)習(xí) go 的過(guò)程中,而我以前的 Web 應(yīng)用程序是 ASP.NET 或 php 應(yīng)用程序,這沒(méi)有問(wèn)題,因?yàn)槲也恍枰匦聠?dòng)代碼更改的網(wǎng)絡(luò)服務(wù)器。
查看完整描述

1 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

這不僅僅是 Go 的問(wèn)題,但總的來(lái)說(shuō),我們可以將問(wèn)題分為兩個(gè)獨(dú)立的問(wèn)題:

  1. 確保當(dāng)前請(qǐng)求不會(huì)被終止并影響用戶體驗(yàn)。

  2. 確保沒(méi)有無(wú)法處理新請(qǐng)求的停機(jī)時(shí)間。

第一個(gè)更容易解決:你只是不要猛烈地殺死你的服務(wù)器,而是告訴它退出,導(dǎo)致“排水階段”,在這個(gè)階段它不接受新請(qǐng)求,只完成當(dāng)前正在運(yùn)行的請(qǐng)求,然后退出。例如,這可以通過(guò)偵聽(tīng)信號(hào)并將應(yīng)用程序進(jìn)入特殊狀態(tài)來(lái)完成。

Go 并不簡(jiǎn)單,因?yàn)槟J(rèn)的 http 服務(wù)器不支持關(guān)閉它,但是您可以使用 啟動(dòng)服務(wù)器net.Listener,然后保留對(duì)它的引用并在時(shí)間到期時(shí)關(guān)閉它。

現(xiàn)在,只執(zhí)行一種方法然后再次啟動(dòng)服務(wù)將導(dǎo)致在此過(guò)程中不接受新請(qǐng)求,我們都知道在極端情況下這可能需要幾秒鐘。

所以我們需要的是另一個(gè)已經(jīng)運(yùn)行新代碼的服務(wù)器實(shí)例,在舊代碼沒(méi)有響應(yīng)新請(qǐng)求的那一刻,對(duì)吧?這可以通過(guò)多種方式完成:

  1. 擁有多個(gè)服務(wù)器,并且在它們之上有一個(gè)負(fù)載平衡器,允許一個(gè)(或多個(gè))服務(wù)器在我們重新啟動(dòng)另一臺(tái)服務(wù)器時(shí)承擔(dān)負(fù)載。這是最簡(jiǎn)單的方法,也是大多數(shù)人的做法。如果您需要 N 個(gè)服務(wù)器來(lái)承擔(dān)您的用戶的負(fù)載,只需保留 N+1 并一次重新啟動(dòng)一個(gè)。

  2. 使用套接字共享技巧。在較新的 Linux 內(nèi)核中,許多進(jìn)程可以在同一個(gè)端口上偵聽(tīng)和接受。您所做的只是啟動(dòng)新實(shí)例,然后告訴舊實(shí)例完成并退出。這樣就沒(méi)有停頓。這是通過(guò)設(shè)置SO_REUSEPORT偵聽(tīng)套接字來(lái)完成的。

  3. 以上可以通過(guò)準(zhǔn)備交付的解決方案自動(dòng)化,例如 Einhorn,為您處理所有細(xì)節(jié),請(qǐng)參閱https://github.com/stripe/einhorn

  4. 這篇博文中記錄了另一種方法:http : //blog.nella.org/?p=879


查看完整回答
反對(duì) 回復(fù) 2021-09-10
  • 1 回答
  • 0 關(guān)注
  • 298 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)