Java面試 微服務與分布式

2021-09-13 10:57:53 字數 2506 閱讀 6302

專案中如何區分兩個資料來源

1、註解。2、包名、分模組

高併發解決方案

業務資料庫 -》 資料水平分割(分區分表分庫)、讀寫分離、sql優化

資料快取

業務應用 -》 邏輯**優化(演算法優化)、

**不要又迴圈。**重構。

應用伺服器 -》 反向靜態**、配置優化、負載均衡(apache分發,多tomcat例項)

系統環境:jvm調優

頁面優化:減少頁面連線數、頁面尺寸**

1、動態資源和靜態資源分離;

2、cdn;

3、負載均衡;

4、分布式快取;

5、資料庫讀寫分離或資料切分(垂直或水平);

6、服務分布式部署。

前後端分離是如何做的

參考:實現前後端分離的心得

微服務哪些框架

springcloud、dubbo、hsf等

分布式和微服務區別

微服務是分服務,分布式是分專案。

為什麼把系統服務化

做服務化的好處,就是把共同的**抽取出來做成介面,方便別人呼叫。拓展,重複使用。

微服務與soa的區別

soa實現

微服務架構實現

企業級,自頂向下開展實施

團隊級,自定向上開展實施

服務由多個子系統組成

乙個系統被拆分成多個服務

整合式服務(esb、ws、soap)

整合方式簡單(http、rest、json)

可以把微服務當做去除了esb的soa。esb是soa架構中的中心匯流排,設計圖形應該是星形的,而微服務是去中心化的分布式軟體架構。

soasoa的提出是在企業計算領域,就是要將緊耦合的系統,劃分為面向業務的,粗粒度,松耦合,無狀態的服務。服務發布出來供其他服務呼叫,一組互相依賴的服務就構成了soa架構下的系統。

基於這些基礎的服務,可以將業務過程用類似bpel流程的方式編排起來,而bpel反映的是業務處理的過程,這些過程對於業務人員更為直觀,調整也比hardcode的**更容易。

當然企業還需要對服務治理,比如服務註冊庫,監控管理等。

我們知道企業計算領域,如果不是交易系統的話,併發量都不是很大的,所以大多數情況下,一台伺服器就容納將許許多多的服務,這些服務採用統一的基礎設施,可能都執行在乙個應用伺服器的程序中。雖然說是面向服務了,但還是單一的系統。

微服務而微服務架構大體是從網際網路企業興起的,由於大規模使用者,對分布式系統的要求很高,如果像企業計算那樣的系統,伸縮就需要多個容納續續多多的服務的系統例項,前面通過負載均衡使得多個系統成為乙個集群。

但這是很不方便的,網際網路企業迭代的週期很短,一周可能發布乙個版本,甚至可能每天乙個版本,而不同的子系統的發布週期是不一樣的。

而且,不同的子系統也不像原來企業計算那樣採用集中式的儲存,使用昂貴的oracle儲存整個系統的資料,二是使用mongodb,hbase,cassandra等nosql資料庫和redis,memcache等分布式快取。

那麼就傾向採用以子系統為分割,不同的子系統採用自己的架構,那麼各個服務執行自己的web容器中,當需要增加計算能力的時候,只需要增加這個子系統或服務的例項就好了,當公升級的時候,可以不影響別的子系統。這種組織方式大體上就被稱作微服務架構。

微服務與soa相比,更強調分布式系統的特性,比如橫向伸縮性,服務發現,負載均衡,故障轉移,高可用。網際網路開發對服務治理提出了更多的要求,比如多版本,比如灰度公升級,比如服務降級,比如分布式跟蹤,這些都是在soa實踐中重視不夠的。

docker容器技術的出現,為微服務提供了更便利的條件,比如更小的部署單元,每個服務可以通過類似node.js或spring

boot的技術跑在自己的程序中。可能在幾十台計算機中執行成千上萬個docker容器,每個容器都執行著服務的乙個例項。隨時可以增加某個服務的例項數,或者某個例項崩潰後,在其他的計算機上再建立該服務的新的例項。

什麼是soa?為什麼要採用soa與soap區別是什麼?

soa是一種面向服務架構(面相介面),是將相同業務邏輯抽取出來組成單獨服務。提供介面,暴露出來讓別的系統呼叫。

把大系統分成小系統,通過該rpc遠端呼叫。

soap是webservice面向服務協議, 採用xml,因為比較中,現在不是特別流行。

rpc遠端呼叫有哪些框架?

springcloud、dubbo、dubbox、hessian、httpclient、thrift等。

什麼是rpc遠端呼叫?

rpc的目的是讓你在本地呼叫遠端的方法,而對你來說這個呼叫是透明的,你並不知道這個呼叫的方法是部署**。通過rpc能解耦服務,這才是使用rpc的真正目的。

rpc 的全稱是 remote procedure call 是一種程序間通訊方式。

它允許程式呼叫另乙個位址空間(通常是共享網路的另一台機器上)的過程或函式,而不用程式設計師顯式編碼這個遠端呼叫的細節。即無論是呼叫本地介面/服務的還是遠端的介面/服務,本質上編寫的呼叫**基本相同。

比如兩台伺服器a,b,乙個應用部署在a伺服器上,想要呼叫b伺服器上應用提供的函式或者方法,由於不在乙個記憶體空間,不能直接呼叫,這時候需要通過就可以應用rpc框架的實現來解決

分布式 集群 微服務

微服務是架構設計方式 分布式是系統部署工作方式 集群是個物理形態 微服務是啥?這裡不引用書本上的複雜概論了,簡單來說微服務就是很小的服務,小到乙個服務只對應乙個單一的功能,只做一件事。這個服務可以單獨部署執行,服務之間可以通過rpc來相互互動,每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責...

分布式 微服務面試

分布式 微服務面試 為什麼要拆分成多個微服務?微服務架構與傳統架構的優缺點?我們為什麼要使用分布式?分布式事物問題出現場景?如何解決分布式事物的問題?tcc是什麼?實現原理是怎麼樣的?2pc,3pc的概念是什麼?實現原理是怎樣的?訊息的最終一致性是什麼意思?如何實現訊息的最終一致性?訊息的最大努力通...

微服務 分布式服務框架

spring cloud rest與rpc比較 dubbo 和 spring cloud 對比 通訊協議 傳輸的格式都屬於協議 服務路由 分布式服務上線時都是集群組網部署,集群中會存在某個服務的多例項,消費者如何從服務列表中選擇合適的服務提供者進行呼叫,這就涉及到服務路由。分布式服務框架需要能夠滿足...