學Java分佈式和高架構,必懂的知識點

Java 編程語言 軟件 程序員 穩穩地幸福y 穩穩地幸福y 2017-09-13

第一部分:分佈式

1:三步變成:分佈式

1、將你的整個軟件視為一個系統(不管它有多複雜)

2、將整個系統分割為一系列的 Process(進程), 每個 Process 完成一定的功能

3、將這些 Process 分散到不同的機器上。分散後,選擇若干種(沒錯一種可能不夠)通信協議把他們連接起來

2:端正認識:分佈式不等於並行計算

分佈式系統和並行計算一定可以並行嗎?實際上並不一定,這是很多人在認識上的誤區。舉個簡單的例子:

某軟件,功能如下:

1、提示用戶輸入兩個數 A 和 B

2、在內部,對 A 和 B 執行某數學運算,獲得 C

3、輸出 C

這個三個步驟是無法並行的,需要依次執行。

3:認識本質:拆分+鏈接是分佈式系統的本質

所謂分佈式,無非就是”將一個系統拆分成多個子系統並散佈到不同設備“的過程而已。

本質上而言,實現一個分佈式系統,最核心的部分無非有兩點:

如何拆分——可以有很多方式,核心依據一是業務需求,二是成本限制。這是實踐中構建分佈式系統時最主要的設計依據。

如何連接——光把系統拆開成 Process 還不夠,關鍵是拆開後的 Process 之間還要能通信,因此涉及通信協議設計的問題,需要考慮的因素很多,好消息是這部分其實成熟方案很多。

4:分佈式的作用

1、擴展性能。系統負載高,單臺機器無法承載,希望通過多臺機器來提高系統地負載能力,這個時候分佈式就可以發揮作用了。

2、增強可靠性。軟件,網絡,機器隨時都可能會出錯,為了避免故障,需要將業務分散開。增強可靠性。

實現分佈不難,難的在於如何選擇正確分佈方案

通常會有很多種分佈方案擺在你面前,為了正確解決問題,你需要對每一種方案進行了解,評估,從而選擇最大程度符合需求的方案。比如你對數據的一致性要求很高,就不得不容忍一些其他缺陷,如規模伸縮困難等,如果你放棄數據高一致性,就可以避免其他缺陷,而承擔數據不一致帶來的風險。選擇不同的方案,有時對整個系統影響不大,有時會影響系統其他部分的工作方式甚至用戶界面中用戶操作的流程。

5:分佈式入門學習要點

分佈式入門學習主要包括以下知識點:

1、Process(進程)。進程是分佈式系統中的基本單元。

2、通信協議。進程間需要配合來完成工作,所以通信協議就成為了最基本要解決的問題。這部分涉及面很廣,但是核心就有兩點:一是存在哪些需求;二是各協議如何滿足這些需求;

3、協作。為什麼要通信?因為要協作,協作最基本的問題是同步問題,而聊同步問題就會聊到“鎖”,這裡又包括了鎖的實現,加鎖,解鎖等問題,這裡就不一一展開了;

4、命名法。通信當然需要有名字稱呼,就像人和人之間的交流一樣,所以進程需要有名字,可以是數字,也可以是結構化的符串;

以上幾點是最基礎的知識,瞭解了這些就算入門了,如果要進階,就需要接著瞭解下面的知識點:

1、一致性。數據存儲時最基本的問題。

2、容錯。冗餘是容錯的基礎,但並不是全部,分佈式本身為實現容錯提供了一些便利,這也是設計系統時常常需要考慮的問題。

6:分佈式學習書單

1、《大型分佈式網站架構設計與實踐》

2、《大型網站技術架構:核心原理與案例分析》

3、《大型網站系統與Java中間件實踐》

4、《分佈式Java應用:基礎與實踐》

5、《分佈式Java應用:基礎與實踐》

7:幾個Java分佈式緩存框架

1、Ehcache – Java分佈式緩存框架

Ehcache是一個Java實現的開源分佈式緩存框架,EhCache 可以有效地減輕數據庫的負載,可以讓數據保存在不同服務器的內存中,在需要數據的時候可以快速存取。

2、Cacheonix – 高性能Java分佈式緩存系統

Cacheonix同樣也是一個基於Java的分佈式集群緩存系統,它同樣可以幫助你實現分佈式緩存的部署。

3、ASimpleCache – 輕量級Android緩存框架

ASimpleCache是一款基於Android的輕量級緩存框架,它只有一個Java文件,ASimpleCache基本可以緩存常用的Android對象,包括普通字符串、JSON對象、經過序列化的Java對象、字節數組等。

4、JBoss Cache – 基於事物的Java緩存框架

JBoss Cache是一款基於Java的事務處理緩存系統,它的目標是構建一個以Java框架為基礎的集群解決方案,可以是服務器應用,也可以是Java SE應用。

5、Voldemort – 基於鍵-值(key-value)的緩存框架

Voldemort是一款基於Java開發的分佈式鍵-值緩存系統,像JBossCache一樣,Voldemort同樣支持多臺服務器之間的緩存同步,以增強系統的可靠性和讀取性能。

第二部分:高架構

1. 工程化專題

(團隊大於3個人之後,你需要去考慮團隊合作,科學管理)

學Java分佈式和高架構,必懂的知識點

2. 源碼分析專題

(好的程序員,一行代碼一個設計就能看出來,源碼分析帶你品味代碼,感受架構)

學Java分佈式和高架構,必懂的知識點

3.高性能及分佈式專

(跟上技術節奏,擴寬技術視野,程序員要往上提升,要有自己的技術工具箱和技術認知。)

學Java分佈式和高架構,必懂的知識點

4.技術架構專題

(真實案例分享,帶你領略大型項目風采)

學Java分佈式和高架構,必懂的知識點

5.性能調優

(追求高效、科學調優,不靠碰運氣)

學Java分佈式和高架構,必懂的知識點

好了同學們,我能介紹的也都全部介紹完給你們了,以上這兩大部分就是我想說的內容,如果你也想在IT行業拿高薪,可以參加我們的訓練營課程,選擇最適合自己的課程學習,技術大牛親授,7個月後,進入名企拿高薪。我們的課程內容有:Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點。如果你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優勢的,想進阿里面試但擔心面試不過的,你都可以來,群號為:636532962

注:加群要求

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

6.小號或者小白之類加群一律不給過,謝謝。

目標已經有了,下面就看行動了!記住:學習永遠是自己的事情,你不學時間也不會多,你學了有時候卻能夠使用自己學到的知識換得更多自由自在的美好時光!時間是生命的基本組成部分,也是萬物存在的根本尺度,我們的時間在那裡我們的生活就在那裡!我們價值也將在那裡提升或消弭!Java程序員,加油吧!

相關推薦

推薦中...