微服务相关面试题
1、什么是微服務
將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底的去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事
從技術角度看,就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啟動或銷毀,擁有自己獨立的數據庫
每一個微服務都可以使用不同的語言編寫服務,也可以使用不同的數據存儲
2、微服務之間是如何獨立通訊的
3、Spring Cloud和Dubbo有哪些區別
①通訊機制不同,Dubbo是RPC,Cloud是Restful API;
②Dubbo不支持多語言,Cloud支持多語言
③Cloud支持配置服務(Netflix Archaius和Spring Cloud Config)
④Cloud支持服務調用鏈監控(Zuul)
⑤服務跟蹤(SpringCloudSleuth)、消息總線(Spring Cloud Bus)、任務流(Spring Cloud Stream)、批量任務(Spring Cloud Task),以上這些Dubbo都不支持
4、對Spring boot和Spring Cloud的理解
Spring Cloud基于Spring boot提供了一套微服務解決方案,包括服務注冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基于Netflix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。
SpringCloud利用Springboot的開發便利性巧妙的簡化了分布式系統基礎設施的開發,SpringCloud為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等,它們都可以利用Spring boot的開發風格做到一鍵啟動和部署
Springboot并沒有重復造輪子,它只是將各家公司開發的比較成熟,經得起實際考驗的服務框架組合起來,通過Springboot風格進行再封裝,屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂,易部署和易維護的分布式系統開發工具包
Spring boot專注于快速方便的開發單個個體微服務
SpringCloud是關注全局的微服務協調治理框架,它將Spring boot開發的一個個單體微服務整合管理起來,為各個微服務之間提供配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務
Springboot可以離開Spring Cloud獨立使用開發項目,但是SpringCloud離不開Spring boot,屬于依賴關系
5、什么是服務熔斷?什么是服務降級?
6、微服務的優缺點是什么?說下你在項目中碰到的坑
優點:
每個服務足夠內聚,足夠小,代碼容易理解,這樣能聚焦一個指定的業務功能和業務需求
開發簡單,開發效率提高,一個服務可能就是專一的只干一件事
能夠被小團隊單獨開發
解耦合
能使用不同的語言開發
微服務只是業務邏輯的代碼,不會和HTML、CSS或者其它界面組件混合
每個微服務都有自己的儲存能力,可以有自己的數據庫,也可以有統一的數據庫
缺點:
開發人員要處理分布式系統的復雜性
多服務運維難度大
系統部署依賴
服務間通訊成本
數據一致性
系統繼承測試
性能監控
7、你所知道的微服務技術棧有哪些?請列舉一二
| 服務開發 | Springboot、Spring、SpringMVC | |
| 服務配置與管理 | Netflix公司的Archaius、阿里的Diamond等 | |
| 服務注冊與發現 | Eureka、Consul、Zookeeper | |
| 服務調用 | Rest、RPC、gRPC | |
| 服務熔斷器 | Hystric、Envoy等 | |
| 負載均衡 | Ribbon、Nginx | |
| 服務接口調用(客戶端調用服務的簡化工具) | Foreign | |
| 消息隊列 | Kafka、Rabbit MQ、Active MQ | |
| 服務配置中心管理 | SpringCloudConfig、Chef等 | |
| 服務路由(API網關) | Zuul | |
| 服務監控 | Zabbix、Nagios、Metrics、Spectator等 | |
| 全鏈路追蹤 | Zipkin、Brave、Dapper等 | |
| 服務部署 | Docker、OpenStack、Kubernetes等 | |
| 數據流操作開發包 | SpringCloud Stream(封裝與Redis、Rabbit、Kafka等發送接收消息) | |
| 事件消息總線 | Spring Cloud Bus |
8、eureka和zookeeper都可以提供服務注冊與發現的 功能,請說說兩個的區別?
在著名的CAP理論中,一個分布式系統不可能同時滿足C(一致性)、A(可用性)、P(分區容錯性),由于分區容錯性P在分布式系統中是必須要保證的,因此我們必須要在A和C之間權衡
Zookeeper保證的是CP,
Eureka保證的是AP
因此Eureka可以很好的應對因網絡故障導致部分節點失去聯系的情況,而不會像Zookeeper那樣使整個注冊服務癱瘓
總結
- 上一篇: Oracle RMAN备份与还原
- 下一篇: 【Linux常用服务器配置——Vsftp