分佈式 微服務 soa dubbo 一點一點來

集羣:就是不少的服務器來實現一種功能,例如mysql,不少的服務器都安裝mysql,mysql

負載均衡:就是用來調節的,比方說有不少的用戶都在訪問讀取數據,但是讀取a服務器的mysql多,而讀取別的服務器的mysql就少,負載均衡把訪問a的用戶轉給b一部分,防止a因爲訪問量過大形成宕機什麼的。nginx

分佈式:一個系統把不一樣的服務分開來部署,用戶模塊,bbs論壇模塊,內容模塊,支付模塊。對服務的訪問量很大的時候,單臺服務器已經知足不了需求,就把服務分散到幾臺甚至幾十臺幾百天電腦上
好處:每一個模塊只負責本身的事情和請求壓力,開發人員只負責本身的東西
分佈式應用開發簡單的說,是指將用戶界面、控制檯服務、數據庫管理三個層次部署在不一樣的位置上。其中用戶界面是客戶端實現的功能,控制檯服務是一個專門的服務器,數據管理是在一個專門的數據庫服務器上實現的。

算法


面向服務框架SOA,微服務:
sql

soa就是服務化的架構體系,微服務是soa的一種實現方式數據庫

微服務的目的是有效的拆分應用,實現敏捷開發和部署 。api

系統由不一樣的服務構成,緩存

每一個服務做爲獨立的業務開發
每一個服務單獨部署,跑在本身的進程裏
安全

1.客戶端如何調用服務?服務器

api gateway ---- nginx網絡

提供統一服務入口,讓微服務對前臺透明

聚合後臺的服務,節省流量,提高性能

提供安全,過濾,流控等API管理功能


2.服務間如何通訊?

同步-RPC-dubbo

3.這麼多服務,怎麼找?==如何肯定訪問的資源在哪一個服務器上?

在微服務架構中,通常每個服務都是有多個拷貝,來作負載均衡。一個服務隨時可能下線,也可能應對臨時訪問壓力增長新的服務節點。服務之間如何相互 感知?服務如何管理?這就是服務發現的問題了。

基本都是經過zookeeper等相似技術作服務註冊信息的分佈式管理。當 服務上線時,服務提供者將本身的服務信息註冊到ZK(或相似框架),並經過心跳維持長連接,實時更新連接信息。服務調用者經過ZK尋址,根據可定製算法, 找到一個服務,還能夠將服務信息緩存在本地以提升性能。當服務下線時,ZK會發通知給服務客戶端。

4.服務掛了怎麼辦?

5.分佈式系統如何負載均衡?

在分佈式系統中,負載均衡是很是重要的環節,經過負載均衡將請求派發到網絡中的一個或多個節點上進行處理。

負載均衡分爲硬件負載均衡及軟件負載均衡。

硬件負載均衡,顧名思義,在服務器節點之間安裝專門的硬件進行負載均衡的工做,F5便爲其中的佼佼者。

軟件負載均衡則是經過在服務器上安裝的特定的負載均衡軟件或是自帶負載均衡模塊完成對請求的分配派發。

常見的負載均衡策略:

(一).輪詢。每一次來自網絡的請求輪流分配給內部中的服務器,從1N而後從新開始

(二).隨機。請求隨機發給服務器

(三).最小響應時間。負載均衡設備對內部各服務器發出一個探測請求(例如Ping),而後根據內部中各服務器對探測請求的最快響應時間來決定哪一臺服務器來響應客戶端的服務請求

(四). 最少鏈接數:對內部中需負載的每一臺服務器都有一個數據記錄,記錄當前該服務器正在處理的鏈接數量,當有新的服務鏈接請求時,將把當前請求分配給鏈接數最少的服務器,使均衡更加符合實際狀況,負載更加均衡。此種均衡算法適合長時處理的請求服務,如FTP



反向代理: