IT網(wǎng)絡(luò)安全運維端口復(fù)用原理及防范小知識
2020-04-28 17:26 作者:艾銻無限 瀏覽量:
IT網(wǎng)絡(luò)安全運維 | 端口復(fù)用原理及防范
作為
IT運維平時工作會接觸到各種成熟的架構(gòu),下面總結(jié)一下對微服務(wù)架構(gòu)整體的一個淺層次認(rèn)知,主要包括以下9個方面認(rèn)知。供廣大
IT運維參考。
一.微服務(wù)
①什么是微服務(wù)?
微服務(wù)就是一些協(xié)同工作的小而自治的服務(wù),稱之為分布式系統(tǒng),是SOA(面向服務(wù)的架構(gòu))架構(gòu)的一種實現(xiàn)方法。
單個服務(wù)多小合適?應(yīng)該考慮這些因素:服務(wù)越小,服務(wù)架構(gòu)的優(yōu)點和缺點也就越明顯。使用的服務(wù)越小,獨立性帶來的好處越多,但是管理大量的微服務(wù)也會越復(fù)雜。
單個服務(wù)的自治性特點。一個服務(wù)就是一個獨立的實體。每一個服務(wù)暴露出API,服務(wù)之間以網(wǎng)絡(luò)為媒介通過這些API調(diào)用進(jìn)行通信。從而加強(qiáng)了服務(wù)之間的隔離性,避免緊耦合。
②微服務(wù)帶來的好處?
(1)技術(shù)異構(gòu)性。
不同的服務(wù)使用最適合該服務(wù)的技術(shù)。如果系統(tǒng)中的某一部分需要做性能提升,可以使用性能更好的技術(shù)棧重構(gòu)該服務(wù)。如系統(tǒng)中不同的服務(wù)可以使用不同的數(shù)據(jù)庫存儲技術(shù)。微服務(wù)可以幫助我們更快地采用新技術(shù),并降低風(fēng)險。
(2)彈性。
彈性工程學(xué)的一個關(guān)鍵概念是壁艙。如果系統(tǒng)中一個組件不可用了,但并沒有導(dǎo)致級聯(lián)故障,那么系統(tǒng)的其他部分還可以正常運行。服務(wù)的邊界就是一個很顯然的壁艙。微服務(wù)可以很好的處理服務(wù)不可用和功能降級問題。微服務(wù)以網(wǎng)絡(luò)為媒介進(jìn)行RPC通信,網(wǎng)絡(luò)會是瓶頸問題。
(3)易拓展。
微服務(wù)架構(gòu)相比單系統(tǒng)來說更易拓展。
(4)易部署。
微服務(wù)部署風(fēng)險低,效率高。
(5)易管理。
微服務(wù)架構(gòu),更易實現(xiàn)團(tuán)隊自治,開發(fā)效率更高,維護(hù)成本更低。
(6)可重用。
微服務(wù)架構(gòu),對于獨立的服務(wù),可實現(xiàn)可重用,易于組合的目的。
(7)易重構(gòu)。
開發(fā)團(tuán)隊在必要的時候可以輕易實現(xiàn)對單個服務(wù)的重構(gòu)或重寫,或刪除不再使用的服務(wù)。
③相關(guān)術(shù)語。
(1)SOA(Service-Oriented Architecture,面向服務(wù)的架構(gòu))。實施SOA通常要考慮:通信協(xié)議的選擇,第三方中間件的選擇,服務(wù)粒度的劃分等。
(2)OSGI(Open Source Gateway Initiative,開放服務(wù)網(wǎng)關(guān)協(xié)議)。OSGI是一種模塊分解技術(shù),強(qiáng)調(diào)模塊生命周期管理,允許在一個進(jìn)程內(nèi)部進(jìn)行模塊劃分,創(chuàng)建出相對隔離的模塊避免耦合。Java9已加入這個特性。但不推薦這么做。
二.建模微服務(wù)
①好的微服務(wù)特點?
(1)松耦合
服務(wù)之間松耦合,要求能夠做到能夠修改及部署單個服務(wù)而不需要修改系統(tǒng)的其它服務(wù)。一個松耦合的服務(wù)應(yīng)該盡可能少的知道與之協(xié)作的服務(wù)的信息。否則服務(wù)之間過度通信會導(dǎo)致緊耦合。
(2)高內(nèi)聚
把相關(guān)的行為聚集在一起,把不相關(guān)的行為放在別處。達(dá)到這樣的目的,當(dāng)需要修改某個行為時,最好只對一個服務(wù)進(jìn)行修改,而不需修改其它服務(wù),達(dá)到快速發(fā)布,降低風(fēng)險,快速交付。所以找到問題的邊界,確定劃分服務(wù)的粒度是關(guān)鍵。
②建模微服務(wù)
建模微服務(wù),應(yīng)該以服務(wù)所提供的功能為出發(fā)點,進(jìn)行微服務(wù)的建模。
三.集成服務(wù)
微服務(wù),每一個單獨的服務(wù)所提供的功能相對單一,但每一個服務(wù)的的功能實現(xiàn)可能要集成其它服務(wù)的功能。集成是微服務(wù)架構(gòu)中一種常用的手段。
①服務(wù)之間的通信方式-同步/異步
(1)同步
使用同步通信,發(fā)起一個遠(yuǎn)程服務(wù)調(diào)用之后,調(diào)用方會阻塞自己并等待整個遠(yuǎn)程調(diào)用過程的完成,才可以返回。
同步調(diào)用,基于“請求/響應(yīng)”的模式??蛻舳税l(fā)起一個請求,然后等待響應(yīng)。
編排的架構(gòu)風(fēng)格,即采用同步調(diào)用,“請求/響應(yīng)”模式,可以清楚知道每一步的響應(yīng)結(jié)果,卻會導(dǎo)致系統(tǒng)臃腫,響應(yīng)耗時,耦合度高。
(2)異步
使用異步通信,調(diào)用方不需要等待遠(yuǎn)程調(diào)用過程的完成,就可以返回。
異步調(diào)用,基于“事件發(fā)布”的模式??蛻舳瞬皇前l(fā)起請求,而只是發(fā)布一個“事件”,并不知道誰會對此事件作出響應(yīng)。
協(xié)同的架構(gòu)風(fēng)格,即采用異步調(diào)用,“事件發(fā)布”模式,可降低系統(tǒng)耦合度,響應(yīng)更快速;但需要額外的工作對對業(yè)務(wù)流程做跨服務(wù)監(jiān)控。
②同步通信實現(xiàn)技術(shù)-RPC/REST
RPC(Remote Procedure Call)遠(yuǎn)程過程調(diào)用;
REST(Representational State Transfer)表述性狀態(tài)轉(zhuǎn)移。
(1)RPC
遠(yuǎn)程調(diào)用,允許你進(jìn)行一個本地調(diào)用,但事實上結(jié)果是由某個遠(yuǎn)程服務(wù)器產(chǎn)生的。遠(yuǎn)程調(diào)用的協(xié)議種類繁多,如Java RMI,Thrift,Protocol buffers等是使用二進(jìn)制作為消息的傳輸格式;SOAP使用XML作為消息的傳輸格式。
RPC會花費時間對傳輸信息進(jìn)行封裝和解封裝,網(wǎng)絡(luò)通信耗時也是需要考慮的因素;通信雙方對使用的數(shù)據(jù)模型依賴較重,數(shù)據(jù)類型會直接被序列化和反序列化,導(dǎo)致不再使用的字段無法被安全刪除。
RPC可以幫助你生成客戶端樁代碼,可以支持高級的序列化和反序列化機(jī)制,以及更加靈活的通信協(xié)議。
(2)REST
REST是受Web啟發(fā)產(chǎn)生的,能夠使客戶端和服務(wù)端對數(shù)據(jù)模型的依賴弱化,更加靈活。
REST風(fēng)格多用Http協(xié)議,數(shù)據(jù)傳輸格式靈活,JSON,XML及二進(jìn)制格式都可以。
③異步通信實現(xiàn)技術(shù)-MQ
異步通信,基于“事件發(fā)布”機(jī)制。耦合度低,伸縮性好;但編程的復(fù)雜性更高,常用的成熟技術(shù)手段是采用“消息隊列”實現(xiàn)。
④集成微服務(wù)考慮要素
(1)服務(wù)的響應(yīng)延時
(2)服務(wù)不可用,合理安全的功能降級
四.分解單個系統(tǒng)
分解單個臃腫的系統(tǒng),使其拆分成多個微服務(wù)。
①分離數(shù)據(jù)庫
建議先分離數(shù)據(jù)庫結(jié)構(gòu),再分離服務(wù)。
②慎重處理分布式事務(wù)
把單個系統(tǒng)拆分為多個微服務(wù),可能會產(chǎn)生分布式事務(wù)。分布式事務(wù)橫跨多個系統(tǒng),運行在不同系統(tǒng)的不同進(jìn)程中。分布式事務(wù)通常通過重試和補(bǔ)償機(jī)制來達(dá)到最終的一致性。
五.部署
①CI(Continuous Integration)持續(xù)集成。
CI能夠保證新提交的代碼與已有的代碼進(jìn)行集成,從而讓所有人保持同步。通過CI能夠從已部署的構(gòu)建物回溯到響應(yīng)的代碼。把CI構(gòu)建和每個微服務(wù)映射起來,每個服務(wù)獨立于其它服務(wù)進(jìn)行獨立部署。
②CD(Continuous Delivery)持續(xù)交付。
CD能夠檢查每次提交是否達(dá)到了部署到生產(chǎn)環(huán)境的要求,并持續(xù)的把這些信息反饋,它會把每次提交當(dāng)成候選發(fā)布版本來對待。
③實施藍(lán)/綠部署
藍(lán)綠部署時,我們會部署兩份軟件,只有一份接受真正的請求。如把新新版本的服務(wù)用于接受請求,并保留舊版本一段時間,確保發(fā)生錯誤時,能夠快速恢復(fù)到舊的版本。
④金絲雀發(fā)布
金絲雀發(fā)布是指通過將部分生產(chǎn)流量引流到新部署的系統(tǒng),來驗證系統(tǒng)是否按預(yù)期執(zhí)行。金絲雀發(fā)布與藍(lán)綠部署的不同之處在于,新舊版本共存時間更長,而且經(jīng)常會調(diào)整流量。
六.測試
①單元測試
單元測試,通常用來測試函數(shù)和方法調(diào)用。TDD(Test-Driven Design)測試驅(qū)動開發(fā),就屬于單元測試。
②服務(wù)測試
服務(wù)測試,是針對暴露的服務(wù)功能進(jìn)行測試。一個服務(wù)測試只測試其中一個單獨服務(wù)功能。
七.監(jiān)控
微服務(wù)會增加生產(chǎn)系統(tǒng)監(jiān)控的復(fù)雜性。監(jiān)控的的手段是:監(jiān)控單個服務(wù),然后聚合起來看整體。
如,對每一個微服務(wù)進(jìn)行埋點日志,然后聚合日志信息做整體分析;如對每一臺運行的機(jī)器利用輔助監(jiān)控工具,統(tǒng)計的cpu,內(nèi)存等資源使用占比等信息。
八.安全
①身份驗證和授權(quán)
身份驗證和授權(quán)一種實現(xiàn)手段是,使用某種形式的SSO(Single Sign-On)單點登錄解決方案。當(dāng)請求試圖訪問一個資源,它會被定向到一個身份提供者哪里進(jìn)行身份驗證。這個身份提供者要求它提供用戶名和密碼,或是使用雙重身份驗證。當(dāng)身份提供者確認(rèn)請求已通過身份驗證,它會發(fā)消息給服務(wù)
提供者,讓服務(wù)提供者決定是否允許訪問資源。
如常用的SAML和OpenID Connect等解決方案提供了這方面的能力。
②HTTP(S)基本身份驗證
③攜帶密鑰形式的驗證
④數(shù)據(jù)加密傳輸,如采用AES對稱加密算法加密傳輸
⑤深度防御,如防火墻機(jī)制,網(wǎng)絡(luò)隔離等手段
九.微服架構(gòu)指導(dǎo)思想
①4個設(shè)計原則
(1)AKF拆分原則(指“負(fù)載均衡”,“數(shù)據(jù)分區(qū)”,拆分為微服務(wù))
(2)前后端分離
(3)無狀態(tài)服務(wù)
(4)Restful通信風(fēng)格
②一些實踐指導(dǎo)思想
斷路器思想:當(dāng)調(diào)用的服務(wù)失敗率(或由于超時導(dǎo)致,或由于服務(wù)不可用導(dǎo)致)達(dá)到設(shè)定閾值,啟動快速失敗,當(dāng)恢復(fù)健康后,再重新調(diào)用。
冪等:錯誤重試,考慮冪等,如果操作是冪等的,我們對其調(diào)用多次,不必?fù)?dān)心會有不利影響。
數(shù)據(jù)庫的架構(gòu):讀寫分離,主從備份。
合理緩存策略:合理緩存,提升性能,災(zāi)備故障。
CAP架構(gòu)原則:如分布式事務(wù)要滿足CAP原則。
服務(wù)注冊與發(fā)現(xiàn):采用成熟的開源套件構(gòu)建友好的服務(wù)注冊與發(fā)現(xiàn)。
艾銻無限科技專業(yè):IT外包、企業(yè)外包、北京IT外包、桌面運維、弱電工程、網(wǎng)站開發(fā)、wifi覆蓋方案,網(wǎng)絡(luò)外包,網(wǎng)絡(luò)管理服務(wù),網(wǎng)管外包,綜合布線,服務(wù)器運維服務(wù),中小企業(yè)it外包服務(wù),服務(wù)器維保公司,硬件運維,網(wǎng)站運維服務(wù)
以上文章由北京艾銻無限科技發(fā)展有限公司整理