您好,登錄后才能下訂單哦!
本篇內容主要講解“大型網站的java架構技巧是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“大型網站的java架構技巧是什么”吧!
一、寫在前面
“架構”一詞,是一個非常大命題,通常很難用語言來描述這個東西,我們先不談“架構“這個詞,我們先來看一些現象。
1、對于真正做實事的開發者來說,通常會有類似的感覺,架構師通常就畫畫ppt,代碼也寫不了,畫的各種ppt也就看看,也解不了什么實際問題。
2、每次開會,就會大聊各種概念,又無法落地。
3、什么技術都能夸夸奇談,你問細節,怎么實現,他不知道,總是表示自己不關心細節。
4、總是以高屋建瓴的姿態來標榜自己。
諸如上面的現象其實非常多,我不過多的評價,只能說他們并非熱愛軟件這個行業,至少內心是排斥這個行業的。但我覺得,一個樸素的技術人,應該是有追求的,把”傳到授業解惑“當成一種責任,剖開技術的華麗包裝,還原技術想告訴人們的真相。
注:上面并非想批判什么。
二、原由
回顧這些年的技術生涯,感觸還是非常深的,從Java web開發,到大數據,再到機器學習,再到深度學習這一路走來,都源于我想要揭示技術的真相。也慢慢想通一些事情,程序本質上所做的事情可以這樣描述,有一個黑箱子,你給它一個input,它給一個output。那么得到這個”黑箱子“,有兩種辦法,硬編碼和機器學習,那么這樣便可以描述所有技術的真相了。程序和機器學習,本質上做的事情并沒有什么不同,只是得到這個黑箱子的辦法不同而已,請看下圖。ps:大數據技術到底解了什么,我從”冷眼”的視角,也總結了一些話,后面再寫成文章。
上面有點扯遠了,最近又重新翻了一遍李智慧的《大型網站技術架構》一書,這是一本非常簡潔而充滿智慧的書。總結一個大型網站所具備的核心要素。本片博客將結合這本書,寫一些東西。
三、架構
再說架構之前,我們先來說說一個B/S結構想解的核心問題是什么?它想解的核心問題是,數據任何時候高速、準確的讀或者寫的問題。圍繞著這個問題,我們得對設計做一些考量,這種設計,它應該叫架構。架構是最高層次的一種規劃,一旦規劃好,便難以改變,就像人生的規劃一樣,走過的路,不能重新走。
1、核心要求
高性能:任何時候操作網站,都能馬上響應
高可用:任何時候都是可以訪問的
擴展性:可以隨意擴展業務,并不對原業務造成影響
伸縮性:可以任意橫向、或者縱向擴展服務器,當然也能隨意縮減
安全性:抵御攻擊
2、架構模式
圍繞著上述要求,我們有哪些設計思想是可以用的?
分層:分層這種思想其實是計算機里非常樸素的一種設計思想,例如網絡7層模型,5層模型等,當然對于web系統而言,視圖層、服務層、數據層,這是最基礎的分層。
分割:將業務進行合理的切分
分布式:不同的業務,分而治之
集群:單一應用橫向擴展
緩存:前端、后端緩存,多級緩存等等
異步:多階段拆分業務,消息驅動
冗余:web節點冗余、數據冗余,異地容災等等
3、高性能
衡量指標:響應時間、并發數、吞吐量(TPS、QPS、HPS)
web前端優化:減少http請求、使用瀏覽器緩存、壓縮、減少cookie傳輸、CDN加速
服務端優化:分布式緩存、異步、集群、代碼優化(多線程、資源復用、減少fullgc)
存儲性能:機械硬盤、固態硬盤,索引技術(B+樹、LSM)
4、高可用
高可用應用:無狀態服務集群、有狀態的session服務集群
高可用服務:集群(分級管理、超時設置、異步調用、服務降級、冪等設計)
高可用數據:CAP理論、數據一致性、數據備份(冷熱備份)、失效轉移
5、伸縮性
伸縮性設計:不同功能進行物理分離、單一功能集群
分布式緩存
數據伸縮:分庫分表、主從備份
6、擴展性
事件驅動:通過消息隊列解耦合,用事件驅動的思想擴展
服務化:用interface的手段解耦合,橫向擴展
7、安全性
xss、注入攻擊、CSRF
當然,有了deeplearning,可以用Gan的思想,找到攻擊流量的邊界。
到此,相信大家對“大型網站的java架構技巧是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。