1. 程式人生 > >分布式思維筆記

分布式思維筆記

之間 上架 ng- 區別 集群模式 依據 修改 做的 事務

一、java語言的主流方向

java編程裏,兩個難點:高並發/高可用

java語言 ,後期主要就是學習 java架構,

二、計算機與互聯網的發展

apache 第web服務器:靜態網頁服務器----1995年。

lamp組合,開啟互聯網的大門。

三、互聯網的行業變遷

web1.0:少數人員發布信息,大眾接收信息。資訊類,主要是靜態的網頁,推送信息的,沒有與用戶的互動

web2.0:rss訂閱。用戶和服務器有互動。

客戶端與服務器的交互模式:

b/s結構,服務方式。

c/s方式:

四、集群與分布式的區別

集群:復制模式,每臺機器做一樣的事情。

分布式:兩臺機器分工合作,每臺機器做的事情不一樣。 業務流:A-->B--->C

五、瀏覽器請求服務器的過程

1、先請求DNS解析域名得到ip,再通過ip請求目標服務器。

例如:

更改本地host:-------》達到更改目標機器:欺騙瀏覽器,讓以為我指定機器是DNS機器

自己做試驗:

HOTS: 127.0.0.1 www.baidu.com

2、瀏覽器渲染出一個頁面的過程:

瀏覽器----》解析本地html文件

解析服務器返回的網站內容。

對瀏覽器解析渲染頁面來,上述兩種方式得到的結果,是沒有區別的。

六、網站開發的模式變遷

1、數據庫開發網站:

數據庫表user -----》 html模板裏。

jsp開發:頁面級/request/session/全局。 -------》 jsp頁面 ${name}

2、數據庫的操作,主要:增刪改查。

主要壓力來自查詢:多個表聯合,數據量膨脹。

如: select * from A,B.

A表 B表

1 4

2 5

2 6

上述的一條sql,其結果是A/B兩表記錄的笛卡爾乘積。

此時,A表若新增一條數據,整體查詢計算量是幾何級上升的:查詢量 = A 表量 * B表量

3、 服務器的集群拓展

如果商品服務抗不住,----》集群解決:把整個服務復制一份。

七、java項目的分布式的拓展方案:

1、早期是一個war包,現在把service層壓力大的service獨立成單獨出來,成為獨立服務部署(jar包啟動)

2、單獨出來的服務,可以以集群模式復制拓展,這樣的復制性價比較高。

3、大量的服務被獨立出來後,這些獨立的服務,就成為一個服務層網絡。

八、微服務模式的拓展:

1、早期是一個war包,現把商品服務的control和service和dao全拆出,獨立為一個服務。商品表也從數據庫獨立出來,成為一個獨立商品數據庫。

2、此時的商品服務,能夠直接接收http請求,為前臺服務。這樣的一個完整服務,稱之為微服務。

3、微服務易於上架下架,而不與其它模塊邏輯遷連。

九、服務治理:

1、無論是分布式拆分,還是微服務拆分,最後形成的服務層應用,都需要相互之間調用。

2、這種服務間調用是跨系統的。跨系統調用rpc有很多協議: RMI,webservice,http請求,網絡達到服務間訪問。

dubbo:很多,dubbo協議

springcloud:使用http協議通信

3、服務集群,有負載路由。需要服務發現--zookeeper。

4、數據積累大:訂單服務---積累。

-------分庫/分表 -----需要修改業務sql語句。(有侵入性)-----------》mycat中間件

+ /分區。 -------》對sql語是沒有侵入性。------------》對庫沒辦法減壓。

十、架構一個系統依據:

1、系統目標是並發數(tps)多少:tomcat的安全連接數在500tps上下

2、系統要承受的數據量級:mysql --- 單表到達 700W,性能會急劇下降。

3、並發數(tps) transation per seconds:每秒鐘的訪問---每秒處理事務數

十一、前端發展:

1、一個url ---------------- 一個html頁面 ---------》點擊按鈕跳轉 --------》頁面跳轉。

2、頁面,ajax方式刷新頁面。

3、mvvm的開發流程

a、前端人員開發的程序包放在靜態服務器裏

b、瀏覽器訪問靜態服務器,得到前端html

c、html頁面發起ajax請求到後臺服務器,得到業務數據,渲染出頁面。

十二、全網站搜索:

不指定業務表的搜索,任何一個中數據 like 匹配。

es/solr搜索中間件。

十三、架構方案:

1、首先考慮緩存方案解決性能問題

2、集群模式------比較重的模式:浪費成本

3、用分布式

十四、緩存解決方案

a、緩存服務器:redis、memcache,可以查詢一下他倆的區別

十四、集群引起的負載問題方案,如何session共享:

1、tomcat自己插件,能夠session共享

2、spring-session插件,實現session共享。

十五、空間換時間的方案

有一個模式:jdk有一個future模式,自帶高並發的輪詢模式。

十六、大數據量的切片方案

數據分片:數據的路由保持不變

1、設置數據片數量,比如100個柱

2、當前庫,均分這100個柱

3、當加庫擴容時,這100個柱動態遷移

100萬的用戶,

張三,數據查詢時,------redis集群,----此時路由層知道張三的數據存在哪個柱上。

----- 數據和柱的對應關系,擴容時,此關系不變

1、微服務裏的數據庫,是私有庫,對外不開放的。

2、微服務與分布式,是相輔相成的,不互拆。相互之間rpc調用,是無障礙的。

分布式思維筆記