1、soa和微服務架構之間的主要區別是什麼?
soa(service oriented architecture)面向服務的架構:他是一種設計方法,其中包含多個服務, 服務之間通過相互依賴最終提供一系列的功能。乙個服務 通常以獨立的形式存在與作業系統程序中。各個服務之間通過網路呼叫。
微服務架構:其實和soa架構類似,微服務是在soa上做的昇華,微服務架構強調的乙個重點是「業務需要徹底的元件化和服務化」,原有的單個業務系統會拆分為多個可以獨立開發、設計、執行的小應用。這些小應用之間通過服務完成互動和整合。
微服務架構 = 80%的soa服務架構思想 + 100%的元件化架構思想 + 80%的領域建模思想
功能soa
微服務元件大小
大塊業務邏輯
單獨任務或小塊業務邏輯
耦合通常松耦合
總是松耦合
公司架構
任何型別
小型、專注於功能交叉團隊
管理著重**管理
著重分散管理
目標確保應用能夠互動操作
執行新功能、快速拓展開發團隊
soa微服務
遵循「盡可能多的共享」架構方法
遵循「盡可能少分享」的架構方法
重要性在於業務功能重用
重要性在於「有界背景」的概念
他們有共同的治理和標準
他們專注於人們的合作和其他選擇的自由
使用企業服務匯流排esb進行通訊
簡單的訊息系統
它們支援多種訊息協議
他們使用輕量級協議,如 http / rest 等。
多執行緒,有更多的開銷來處理i/o
單執行緒,通常使用event loop功能進行非鎖定i/o處理
最大化應用程式服務可重用性
專注於解耦
傳統的 關聯式資料庫 更常用
現代 關聯式資料庫 更常用
系統的變化需要修改整體
系統的變化是創造一種新的服務
devops/continuous delivery正在變得流行,但還不是主流
專注於devops/持續交付
2、什麼是領域驅動設計(ddd)?
domain driven design 領域驅動設計,是一種軟體設計思想。專注於核心領域邏輯、在模型上找到綜合的設計、不斷與領域專家合作。
3、什麼是rest/restful?它的用途是什麼?
rest:是一種軟體架構設計風格,提供了一組設計原則和約束條件,而不是標準。(英文:representational state transfer,簡稱rest)即表述性狀態傳遞是:roy fielding博士在2023年他的博士**中提出來的一種軟體架構風格。它是一種針對網路應用的設計和開發方式,可以降低開發的複雜性,提高系統的可伸縮性。
restful:基於rest構建的api就是restful風格。
總結:url定位資源,http動詞(get,post,put,delete)描述操作。
4、你能否給出關於rest和微服務的要點?
rest:雖然可以通過多種方式實現微服務,但rest over http是實現微服務的一種方式。rest還可用於其他應用程式,如web應用程式,api設計和mvc應用程式,以提供業務資料。
微服務:是一種體系結構,其中系統的所有元件都被放入單獨的元件中,這些元件可以單獨構建,部署和擴充套件。微服務的某些原則和最佳實踐有助於構建彈性應用程式。
5、什麼是不同型別的微服務測試?
單元測試、端到端(系統)測試、整合測試、消費者驅動的合同測試(cdc測試)
在底層,我們有面向技術的測試,單元測試和效能測試。
在中間層,我們有探測性測試,如壓力測試和可用性測試。
在頂級,我們有很少的驗收測試。這些驗收測試有助於利益相關者理解和驗證軟體功能。
6、pact在微服務架構中的用途是什麼?
pact:是乙個開源cdc測試框架。允許測試服務提供者和消費者之間的互動,與契約隔離,從而提高微服務整合的可靠性。
1.定義消費者端服務的預期結果
2.生成pact檔案
3.與提供者服務共享生成的pact檔案
7、什麼是端到端微服務測試?
端到端測試:即對待測功能在各服務、元件完全正常執行的情況進行測試,這裡更類似於功能測試或者uat測試。
端到端測試:驗證了工作流中的每個流程都正常執行。這可確保系統作為乙個整體協同工作並滿足所有要求。
8、容器在微服務中的用途是什麼?
容器:是管理基於微服務的程式以便單獨開發和部署它們的好方法。你可以將微服務封裝在容器映象及其依賴項中,然後可以用它來滾動開發按需例項的微服務而無需任何額外的工作。
9、微服務架構中的dry是什麼?
dry:代表不要重複自己。它基本上促進了重用**的概念。這導致開發並共享庫,但是反過來導致緊耦合。
10、你對微服務架構中的語義監控有何了解?
語義監控,也稱為綜合監控,將自動化測試與監控程式相結合,以檢測業務失敗的因素。
11、微服務中的反應性擴充套件是什麼?
reactive extensions也稱為rx。這是一種設計方法,我們通過呼叫多個服務來收集結果,然後編譯組合響應。這些呼叫可以是同步或非同步,阻塞或非阻塞。rx 是分布式系統中非常流行的工具,與傳統流程相反。
12、mock 與 stub 有什麼區別?
mock:關注行為驗證。細粒度的測試,即**的邏輯,多數情況下用於單元測試。
stub:關注狀態驗證。粗粒度的測試,在某個依賴系統不存在或者還沒實現或者難以測試的情況下使用,例如訪問檔案系統,資料庫連線,遠端協議等。
區別mock
stub樁
優點執行速度快
測試覆蓋率高
容易實現且可以形成良好的測試文件
能彌補mock的不足
能夠模擬複雜的測試環境
缺點不是銀彈,對於整合測試等粗粒度且耗時的測試不太適用
stub往往比較複雜難以實現,而且需要經常性的除錯它。
stub模擬的都是難以測試的環境依賴,其複雜性導致它難以維護。
stub並不能提供細粒度的單元測試。
不同的情況需要不同的stub實現策略。
13、kubernetes與docker有什麼關係?
docker:是乙個開源的應用容器引擎,開發者可以打包他們的應用及依賴到乙個可移植的容器中,發布到流行的linux機器上,也可實現虛擬化。
k8s:是乙個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
14、虛擬機器和容器之間的區別是什麼?
容器:是輕量級的虛擬化,主要是利用namespace的隔離,容器內部有獨立的檔案系統,但是和主機共享記憶體空間。
虛擬機器:是一套完全的虛擬化,他虛擬了計算機執行的所有部分。
通過了解技術的實現,與主機作業系統的隔離級別是評估的主要方面
程序:是在作業系統層面預設隔離程度很低,主要只有隔離的記憶體位址空間和使用者許可權。 容器:是乙個程序(或一組程序),但是與作業系統間的隔離程度比普通的程序高,但比vm低,安全性也更差。
虛擬機器:是在作業系統中完全隔離,這意味著他們在主機硬體頂層建立了完整的新的作業系統。完全的獨立伴隨的是更多的資源使用來執行虛擬機器。
15、什麼是pod?什麼是部署?什麼是有狀態集?
pod:是由一組緊耦合的容器組成的容器組。
16、如何在不停機的情況下更新應用程式?
master/worker模式:應用容器實現不停機發布特性,最常見是master/worker模式。容器中常駐乙個master程序和多個work程序,master程序只負責引導程式和分發請求,由fork出來的worker程序完成具體工作。
Oracle常見問題彙總
1 如果建立了多個oracle例項,那麼訪問em的時候預設訪問的是第乙個例項的,如何訪問第二個呢?看下這個檔案就會明白了 oracle home install portlist.ini enterprise manager console http 埠 shili1 1158 enterprise...
ab常見問題彙總
測試伺服器ab 被測試伺服器apache apache版本2.2.25 問題一 socket too many open files 24 解決 在測試伺服器操作 1 檢視當前系統設定 open files n 1024為1024 root localhost ulimit a core file ...
knn常見問題彙總
knn演算法又稱為k最近鄰 k nearest neighbor class ification 分類演算法。所謂的k最近鄰,就是指最接近的k個鄰居 資料 即每個樣本都可以由它的k個鄰居來表達。knn演算法的核心思想是,在乙個含未知樣本的空間,可以根據離這個樣本最鄰近的k個樣本的資料型別來確定樣本的...