這29個微服務面試題基本涵蓋了方方面,但願對你有所幫助!web
在微服務中,SpringCloud是一個提供與外部系統集成的系統。它是一個敏捷的框架,能夠短平快構建應用程序。與有限數量的數據處理相關聯,它在微服務體系結構中起着很是重要的做用。 如下爲 Spring Cloud 的核心特性:面試
Spring boot是微服務面試問題的主要話題。 隨着新功能的加入,Spring變得愈來愈複雜。不管什麼時候啓動新項目,都必須添加新的構建路徑或Maven依賴項。簡而言之,你須要從頭開始作每件事。Spring Boot是一種幫助您避免全部代碼配置的解決方案。spring
這能夠經過在application.properties文件中指定屬性來完成。 例如,在Spring MVC應用程序中,您必須指定後綴和前綴。這能夠經過在application.properties文件中輸入下面提到的屬性來完成。數據庫
它是最重要的功能之一,可幫助您訪問在生產環境中運行的應用程序的當前狀態。有多個指標可用於檢查當前狀態。它們還爲RESTful Web服務提供端點,能夠簡單地用於檢查不一樣的度量標準。api
實施須要最少的配置。您須要作的就是spring-boot-starter-security在pom.xml文件中添加starter。您還須要建立一個Spring配置類,它將覆蓋所需的方法,同時擴展 WebSecurityConfigurerAdapter 應用程序中的安全性。這是一些示例代碼:安全
package com.gkatzioura.security.securityendpoints.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/welcome").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.permitAll()
.and()
.logout()
.permitAll();
}
}
複製代碼
不管什麼時候建立Java應用程序,均可以經過兩種方法進行部署: 使用外部的應用程序容器。 將容器嵌入jar文件中。 Spring Boot包含Jetty,Tomcat和Undertow服務器,全部服務器都是嵌入式的。 Jetty - 用於大量項目,Eclipse Jetty能夠嵌入到框架,應用程序服務器,工具和集羣中。 Tomcat - Apache Tomcat是一個開源JavaServer Pages實現,能夠很好地與嵌入式系統配合使用。 Undertow - 一個靈活而突出的Web服務器,它使用小型單一處理程序來開發Web服務器。bash
端到端測試 驗證工做流中的全部流程,以檢查一切是否按預期工做。它還確保系統以統一的方式工做,從而知足業務需求。服務器
它結合了對整個應用程序的監控以及自動化測試。語義監控的主要好處是找出對您的業務更有利可圖的因素。 從業務角度來看,語義監控以及服務層監控能夠監控微服務。一旦檢測到問題,它們就能夠實現更快的隔離和 錯誤分類,從而減小修復所需的主要時間。它對服務層和事務層進行分類,以肯定受可用性或性能不佳影響的事務。架構
有多種方法能夠設置服務發現。我將選擇我認爲效率最高的那個,Netflix的Eureka。這是一個簡單的程序,不會對應用程序形成太大影響。此外,它支持多種類型的Web應用程序。 Eureka配置包括兩個步驟 - 客戶端配置和服務器配置。mvc
使用屬性文件能夠輕鬆完成客戶端配置。在clas spath中,Eureka搜索一個eureka-client.properties文件。它還搜索由特定於環境的屬性文件中的環境引發的覆蓋。
對於服務器配置,您必須首先配置客戶端。完成後,服務器啓動一個客戶端,該客戶端用於查找其餘服務器。。默認狀況下,Eureka服務器使用客戶端配置來查找對等服務器。
這是一個很是常見的微服務面試問題,你應該準備好了!微服務架構提供了許多優勢。這裏有幾個:
報告和儀表板主要用於監視和維護微服務。有多種工具能夠幫助實現此目的。報告 和儀表板可用於: 找出哪些微服務公開了哪些資源。 找出組件發生變化時受影響的服務。 提供一個簡單的點,只要須要文檔,就能夠訪問它。 部署的組件的版本。
我見過許多開發者在這個問題上摸索。畢竟,在面試微服務架構師角色時,他們會被問到這個問題,因此認可它的缺點可能有點棘手。如下是一些很好的答案:
它們須要大量協做 - 微服務須要大量的合做。不一樣的微服務模塊,可能分散在不一樣的團隊,團隊之間須要始終保持良好的同步。
他們須要創建繁重的架構 - 系統是分佈式的,架構涉及不少。 他們須要過多的計劃來處理操做開銷 - 若是您計劃使用微服務架構,則須要爲操做開銷作好準備。 須要熟練的專業人員,他們能夠支持異構分佈的微服務。
PACT是一個開源工具。它有助於測試消費者和服務提供商之間的互動。消費者服務開發人員首先編寫一個測試,該測試定義了與服務提供者的交互模式。測試包括提供者的狀態,請求正文和預期的響應。基於此,PACT建立了一個針對其執行測試的存根。輸出存儲在JSON文件中。
主要關注核心領域邏輯。基於領域的模型檢測複雜設計。這涉及與公司層面領域方面的專家按期合做,以解決與領域相關的問題並改進應用程序的模型。在回答這個微服務面試問題時,您還須要說起DDD的核心基礎知識。他們是:
組件之間依賴關係強度的度量被認爲是耦合。一個好的設計老是被認爲具備高內聚力和低耦合性。 面試官常常會問起凝聚力。它也是另外一個測量單位。更像是一個模塊內部的元素保持結合的程度。 必須記住,設計微服務的一個重要關鍵是低耦合和高內聚的組合。當低耦合時,服務對其餘服務的依賴不多。這樣能夠保持服務的完整性。在高內聚性中,將全部相關邏輯保存在服務中成爲可能。不然,服務將嘗試彼此通訊,從而影響總體性能。
開放受權協議,這容許經過在HTTP服務上啓用客戶端應用程序(例如第三方提供商Facebook,GitHub等)來訪問資源全部者的資源。所以,您能夠在不使用其憑據的狀況下與另外一個站點共享存儲在一個站點上的資源。
OAuth容許像Facebook這樣的第三方使用最終用戶的賬戶信息,同時保證其安全(不使用或暴露用戶的密碼)。它更像是表明用戶的中介,同時爲服務器提供訪問所需信息的令牌。
要管理基於微服務的應用程序,容器是最簡單的選擇。它幫助用戶單獨部署和開發。您還可使用Docker將微服務封裝到容器的鏡像中。沒有任何額外的依賴或工做,微服務可使用這些元素。
另外一個常常被問到的微服務面試問題是如何訪問RESTful微服務?你能夠經過兩種方法作到這一點:
說到缺點,這裏是另外一個微服務面試問題,將圍繞測試微服務時面臨的挑戰。
不只在開發上,並且在方面流程也常常發生錯誤。一些常見錯誤是:
這多是最多見的微服務面試問題之一。在回答這個問題時,你須要記住如下內容:
WebMvcTest註釋用於單元測試Spring MVC應用程序。咱們只想啓動ToTestController。執行此單元測試時,不會啓動全部其餘控制器和映射。
@WebMvcTest(value = ToTestController.class, secure = false):
複製代碼
有界上下文是域驅動設計的核心模式。DDD戰略設計部門的重點是處理大型模型和團隊。DDD經過將大型模型劃分爲不一樣的有界上下文並明確其相互關係來處理大型模型。
執行雙因素身份驗證須要三種類型的憑據:
客戶端系統用於向遠程服務器發出通過身份驗證的請求的一種數字證書稱爲客戶端證書。客戶端證書在許多相互認證設計中起着很是重要的做用,爲請求者的身份提供了強有力的保證。
康威定律指出,「設計系統的組織,其產生的設計等同於組織以內、組織之間的溝通結構。」 面試官可能會問反微服務面試問題,好比康威定律與微服務的關係。一些鬆散耦合的api造成了微服務的體系結構。這種結構很是適合小團隊實現自治組件的方式。這種體系結構使組織在重組其工做流程時更加靈活。
Spring Boot附帶了對Log4J2,Java Util Logging和Logback的支持。它一般預先配置爲控制檯輸出。能夠經過僅在application.properties文件中指定logging.level來配置它們。
logging.level.spring.framework=Debug
複製代碼
您須要獨立測試各個部分。有三種常見的程序:
冪等性指的是這樣一種場景:您重複執行一項任務,但最終結果保持不變或相似。 冪等性主要用做數據源或遠程服務,當它接收一組以上指令時,它只處理一組指令。