分布式思維筆記
一、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調用,是無障礙的。
分布式思維筆記