新聞中心
在這一系列文章中,我們將從架構(gòu)、設(shè)計等不同方面來探討,在云的可移植性方面,具體都需要考慮哪些細(xì)節(jié)問題,如何最大限度避免云時代的技術(shù)鎖定,充分發(fā)揮云的靈活性優(yōu)勢。

成都創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為察布查爾錫伯企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),察布查爾錫伯網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
延伸閱讀,了解 Akamai cloud-computing
出海云服務(wù),選擇Akamai cloud-computing!
下文將簡要探討云原生和容器技術(shù)。歡迎點擊這里回顧上篇內(nèi)容,了解云原生和容器技術(shù)在云可移植性方面的注意事項。
微服務(wù)應(yīng)該是可擴展的,并且是專注于單一職能的,由每個自包含的模塊化單元負(fù)責(zé)處理一個更大規(guī)模系統(tǒng)中的一個特定功能,而大型應(yīng)用程序往往就可以由這種模塊化的組件或服務(wù)(如容器或無服務(wù)器計算)構(gòu)建而成。
我們可以將微服務(wù)看作由不同部門、預(yù)算和要求組成的業(yè)務(wù)。每年,這些要求都會根據(jù)公司需求的變化而變。隨著時間推移,我們的應(yīng)用程序也會面對不斷變化的要求,其中的某些方面可能會產(chǎn)生更多需求,有些方面則需要我們投入更多關(guān)注。此外,應(yīng)用程序中的不同方面可能還需要進(jìn)行不同程度的擴展或縮放。微服務(wù)可以幫助我們在不影響其他方面的情況下,以獨立的方式對應(yīng)用程序中的某些方面進(jìn)行縮放或擴展。
相信大家都還記得編程領(lǐng)域所謂的“單一職責(zé)原則”(Single responsibility principle)。微服務(wù)在這方面也是一樣的。微服務(wù)應(yīng)該只負(fù)責(zé)做一件事,并且做好這件事。當(dāng)然,通過使用微服務(wù),我們還能在彈性和容錯能力方面獲得一些固有的好處。微服務(wù)架構(gòu)旨在通過將故障約束到單個服務(wù)來防止出現(xiàn)影響整個系統(tǒng)的故障。如果出現(xiàn)特定故障,我們將知道故障位于哪里,并能在不影響其他東西的情況下解決這種故障。
另外還要注意可發(fā)現(xiàn)(Discoverable)問題。通過使用諸如HashiCorp的Consul這種服務(wù)網(wǎng)絡(luò)解決方案,我們將能知道新服務(wù)何時上線,并能使用一個集中的系統(tǒng)充當(dāng)服務(wù)目錄,從而定義這些服務(wù)的用途以及服務(wù)之間的通信方式。
為何使用微服務(wù)
- 更快的上市時間:微服務(wù)可以并行開發(fā)和部署多個組件,從而加速整體開發(fā)流程,縮短交付新功能所需的時間。
- 提高可擴展性:微服務(wù)可以獨立擴展,從而讓企業(yè)更高效地分配資源,同時更高效地處理不同工作負(fù)載或流量模式。
- 增強彈性:微服務(wù)去中心化的本質(zhì)特性降低了系統(tǒng)范圍內(nèi)故障的風(fēng)險,保證了持續(xù)的服務(wù)可用性以及更高的系統(tǒng)整體可靠性。
- 靈活性和適應(yīng)性:微服務(wù)可以讓企業(yè)為不同組件使用不同技術(shù)和框架,從而更容易適應(yīng)不斷變化的需求或融入新技術(shù)。
- 簡化維護(hù)和更新:微服務(wù)的模塊化設(shè)計簡化了系統(tǒng)的維護(hù)和更新,因為每個組件都可以在不影響整體系統(tǒng)的前提下單獨升級或替換。
微服務(wù)最佳實踐
保持微服務(wù)規(guī)模小巧、專注于負(fù)責(zé)單一業(yè)務(wù)能力,這一點至關(guān)重要。這樣我們才能輕松添加額外的功能并避免蔓延。然而,每個微服務(wù)的理想規(guī)模是多少,這并沒有什么明確標(biāo)準(zhǔn),這需要我們根據(jù)具體應(yīng)用及實際需求來決定。
我們還需要針對失敗進(jìn)行相關(guān)設(shè)計。雖然多個服務(wù)和微服務(wù)運行過程中,按照設(shè)計本身就具備與生俱來的容錯能力,但額外的設(shè)計可以增加額外的彈性,例如重試機制、斷路器以及隔板。想象一下船舶為什么會安裝隔板。這些隔板可以保證船舶的結(jié)構(gòu)完整性,而如果船艙漏水,隔板關(guān)閉,也可以保證船不會沉沒。很多基于事件驅(qū)動的架構(gòu)使用了一種所謂的死信隊列(Dead letter queue),如果某條消息無法傳遞,就會被放入一個特殊的隊列,接下來就可以檢查該隊列中的消息來確定失敗原因。
微服務(wù)應(yīng)該圍繞領(lǐng)域驅(qū)動(Domain-driven)的設(shè)計原則來設(shè)計,這意味著要基于業(yè)務(wù)能力對服務(wù)建模,并使用通用語言來保障服務(wù)符合業(yè)務(wù)需求。領(lǐng)域驅(qū)動的設(shè)計側(cè)重于圍繞對業(yè)務(wù)的深入理解來打造軟件系統(tǒng),其原則有助于指導(dǎo)設(shè)計過程,確保軟件與領(lǐng)域保持一致且能為業(yè)務(wù)提供價值。這些原則共同促進(jìn)了對業(yè)務(wù)領(lǐng)域的深入理解,有助于確保開發(fā)工作能與業(yè)務(wù)需求和不斷變化的要求緊密契合。
采取以API為先的方法進(jìn)行設(shè)計并實現(xiàn)API網(wǎng)關(guān),借此即可提供中央連接點,從而促進(jìn)微服務(wù)和第三方子系統(tǒng)之間的通信。API網(wǎng)關(guān)負(fù)責(zé)處理大部分路由工作,以及身份驗證、認(rèn)證、速率限制等工作。API的設(shè)計模式對于微服務(wù)的模塊化和可復(fù)用能力至關(guān)重要。
此外對于微服務(wù),還有下列這些最佳實踐:
- 自動化測試和部署:使用持續(xù)集成和持續(xù)部署(CI/CD)管道等自動化工具測試和部署微服務(wù),從而降低錯誤風(fēng)險,確保以快速、一致的方式部署服務(wù)。
- 使用容器:容器提供了一種輕量級、可移植的方式來打包和部署微服務(wù)。使用容器有助于簡化部署流程,改善應(yīng)用程序的可擴展性和可移植性。
- 監(jiān)視和觀察:微服務(wù)需要不斷監(jiān)視和記錄,以確保按照預(yù)期運行,并及時發(fā)現(xiàn)存在的問題或錯誤。日志聚合器和應(yīng)用程序性能監(jiān)視(APM)工具可以幫助我們做到這一切。通過跟蹤,我們還可以進(jìn)一步了解分布式系統(tǒng)中的數(shù)據(jù)流。這三大能力有助于針對性能獲得端到端的可見性。
- 保護(hù)服務(wù):應(yīng)通過身份驗證、認(rèn)證授權(quán)、加密等最佳實踐措施保護(hù)微服務(wù)的安全,當(dāng)然,容器本身的安全性也不容忽略!為減小整體攻擊面,我們應(yīng)該通過強制執(zhí)行的策略來定義微服務(wù)能與其他服務(wù)通信的內(nèi)容。安全性應(yīng)該成為所有設(shè)計工作的一部分,并且需要在開發(fā)過程的每個階段進(jìn)行徹底的檢查,這樣才能獲得更安全的應(yīng)用程序,并妥善保護(hù)敏感數(shù)據(jù)。
這篇文章的內(nèi)容感覺還行吧?有沒有想要立即在 Linode 平臺上親自嘗試一下?別忘了,現(xiàn)在注冊可以免費獲得價值 100 美元的使用額度,快點自己動手體驗本文介紹的功能和服務(wù)吧↓↓↓
出海云服務(wù),Akamai是您的不二之選!
歡迎關(guān)注Akamai ,第一時間了解高可用的MySQL/MariaDB參考架構(gòu),以及豐富的應(yīng)用程序示例
網(wǎng)站標(biāo)題:有關(guān)云可移植性的三個考量:二微服務(wù)架構(gòu)?
URL網(wǎng)址:http://m.fisionsoft.com.cn/article/coidodg.html


咨詢
建站咨詢
