當前位置:首頁 » 文件管理 » 京東架構師緩存經驗

京東架構師緩存經驗

發布時間: 2025-01-13 15:33:00

1. 一個五年架構師為什麼基本年薪酬可以達到50萬

架構師,我想很多人都知道,其實該職位頭銜在最早的IT領域是沒有的,它是近些年來由互聯網的發展所引發的需求,因為現階段的數據量及高並發的活躍好動,引起了不少傳統的技術人員的力不從心,企業愈發關注到了系統架構的重要性,所以不同行業開始招募架構技術人員,架構師就誕生了。

架構設計的條件

以下三個條件不適合做架構設計

對架構不感興趣,但又迫於需求;

入IT行業,年限小於4年的;

主觀能動性弱,又安於現狀的;

架構設計的優勢

更好的梳理業務的結構體系;

更好的拓展、維護及性能優化;

更好的適應企業業務靈活的推進;

更好的適應大數據的沖洗和應對;

更好的穩定性、低成本及快速迭代;

架構設計時候需要注意的地方

架構設計需要注意的地方,不是怎麼把架構搭建起來,而是必須根據業務需求,嚴格分析,實現該需求需要什麼技術會更好及更長遠發展的考慮;

另外,構建好的架構雖然可以運行,但是性能需要跟起來,否則架構設計會適得其反,增加不必要的工作量,那麼下面就詳細介紹下架構設計的策略。

平台的需求

客戶需求

在線購物、在線支付或貨到付款;

購買商品後,客戶可以與客服溝通;

購買商品過程,物流的管理及跟蹤;

收取到商品後,商品、物流評價打分;

客戶的需求為最高,也代表了企業的核心需求,當然,企業需求還包括其它很多非功能性需求,具體請查看需求梳理部分。

平台的業務架構

根據業務的需求進行子系統模塊劃分,可以劃分為商品子系統、購物子系統、支付子系統、物流子系統、客服子系統、評論子系統;而非核心需求可拆分出客服子系統、評論子系統及介面子系統。另外,根據各個子系統的核心等級,可拆分出核心子系統和非核心子系統,前者包括商品子系統、購物子系統、支付子系統及物流子系統;後者,則包括評論子系統、客服子系統及介面子系統。需要注意的是一般大型電商平台的物流系統是單獨分離出來的系統(入庫、出庫、庫存管理、配送管理及貨品管理),而這里劃分為子系統的主要目的是為演示核心架構,本架構中物流子系統一般作為對接和管理獨立子系統的對接模塊哦。

1、業務拆分目的

為了解決各個模塊子系統間的耦合、維護及拓展性;

方便單獨部署子系統,避免集中部署導致一個出問題,全部不能用;

分配專門的團隊,負責具體的子系統,最大化工作效率安排;

應對大數據,高壓力時,保護核心子系統正常使用;

2、業務的架構圖

在上面的業務架構圖中,將核心和非核心業務進行拆分,同時每個系統都要獨立部署實現,做到大數據量壓下,各個系統獨立運作,提高可用性,必要時可以暫停掉非核心系統的資源開銷,保證核心業務正常為用戶服務。

平台的技術架構

在上面業務架構圖基礎上,我們需要一個技術架構的演變過程,一切只為滿足用戶的體驗和支撐為前提,所以技術架構的搭建不是一蹴而就的,而是隨著業務的不斷衍變,系統的架構會逐漸完善更新,以實現應對業務數據量的沖擊。

1、基本的架構設計

記得很早的時候,很多中小企業所採用的架構設計十分簡單,基本使用一台伺服器來滿足一切需求部署,比如:一台伺服器同時用作應用部署、資料庫存儲以及圖片存儲等,不料的是待用戶數據達到50萬以上,系統出現很多性能問題,盡管對資料庫和程序做個各種性能優化,結果仍無明顯改善,架構如下:

後來,IT程序猿發現圖片的讀寫嚴重影響了系統性能,並將圖片單獨存放在獨立伺服器中,並且在架構中引入了Cache中間件,比如:Memcache,這種做法是可取的,而且比原來性能提高了1-2個性能級別,架構設計如下:

2、初級的架構設計

前幾年,一般的電商網站的做法是選用三台伺服器,一台部署應用,一台部署資料庫,一台部署NFS文件系統,做到將各個規模龐大並耗用性能的部分剝離到不同伺服器設備,再配備必要的緩存中間件,基本可以滿足近1000萬的數據量,具體的架構圖如下:

但是,目前主流使用的網站架構已經不同,大多採用集群的方式來實現負載均衡和高可用性,架構可以是下面的樣子:

注意:

如果涉及到多台網站伺服器的話,就會存在Session如何同步的問題,一般也是最為常用的做法,就是使用Cache中間件來存儲和管理Session信息。

3、優化的架構設計

這里為解決高並發,高可用的大型電商網站的架構設計方案,主要採用了分布式、集群、負載均衡、反向代理、消息隊列及多級緩存技術。該架構設計方案,是現今比較流程的大型電商網站採用的架構模式,比如:淘寶、京東等,也許會有細微不同的地方,但大同小異哦!具體的架構圖方案如下:

平台架構的總結

這里主要總結的是優化架構,架構按層次結構羅列組織,共分為四層,層次分工明確,高拓展,低耦合,負載均衡、集群、分布式及緩存等技術的使用,架構如下:

好了,電商平台的架構設計就介紹到這里,本篇主要是介紹架構設計的思路及應用的核心技術,供在架構設計的同學參考借鑒哦!有想了解更多的可以關注我

2. 京東亦庄一年60萬的啥職位

高級存儲工程師/架構師。根據查詢京東招聘信息的昌腔相關資料顯示,京東亦庄一年60萬的是高級存儲工程師/架耐拆衫構師的職位,京東新總部大樓是京東集團打造的獨立御猛辦公大樓,其位於北京市亦庄經濟開發區(北京經濟技術開發區),總面積約28萬平方米。

3. 如何搭建大型網站系統

程序員們都希望能通過自己的努力學習,技術提升,拿到更好的收入,技術提升和高收入雖然不是輕易就能實現的,但總是有章可循。

一個成熟的大型網站(如淘寶、京東等)的系統架構並不是開始設計就具備完整的高性能、高可用、安全等特性,它總是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。所以成熟的系統架構是隨業務擴展而完善出來的,並不是一蹴而就;不同業務特徵的系統,會有各自的側重點,例如淘寶,要解決海量的商品信息的搜索、下單、支付,例如騰訊,要解決數億的用戶實時消息傳輸,網路它要處理海量的搜索請求,他們都有各自的業務特性,系統架構也有所不同。盡管如此我們也可以從這些不同的網站背景下,找出其中共用的技術,這些技術和手段可以廣泛運行在大型網站系統的架構中,下面就通過介紹大型網站系統的演化過程,來認識這些技術和手段。

一、最開始的網站架構

最初的架構,應散基用程序、資料庫、文件都部署在一台伺服器上,如圖:

二、應用、數據、文件分離

隨著業務的擴展,一台伺服器已經不能滿足性能需求,故將應用程序、資料庫、文件各自部署在獨立的伺服器上,並且根據伺服器的用途配置不同的硬體,達到最佳的性能效果。

三、利用緩存改善網站性能

在硬體優化性能的同時,同時也通過軟體進行性能優化,在大部分的網站系統中,都會利用緩存技術改善系統的性能,使用緩存主要源於熱點數據的存在,大部分網站訪問都遵循28原則(即80%的訪問請求,最終落在20%的數據上),所以我們可以對熱點數據進行緩存,減少這些數據的訪問路徑,提高用戶體驗。

緩存實現常見的方式是本地緩存、分布式緩存。當然還有CDN、反向代理等,這個後面再講。本地緩存,顧名思義是將數據緩存在應用伺服器本地,可以存在內存中,也可以存在文件,OSCache就是常用的本地緩存組件。本地緩存的特點是速度快,但沖薯謹因為本地空間有限所以緩存數據量也有限。分布式緩存的特點是,可以緩存海量的數據,並且擴展非常容易,在門戶類網站中常常被使用,速度按理沒有本地緩存快,常用的分布式緩存是Memcached、Redis。

四、使用集群改善應用伺服器性能

應用伺服器作為網站的入口,會承擔大量的請求,我們往往通過應用伺服器集群來分擔請求數。應用伺服器前面部署負載均衡伺服器調度用戶請求,根據分發策略將請求分發到多個應用伺服器節點。

常用的負載均衡技術硬體的有F5,價格比較貴,軟體的有LVS、Nginx、HAProxy。LVS是四層負載均衡,根據目標地址和埠選擇內部伺服器,Nginx是七層負載均衡和HAProxy支持四層、七層負載均衡,可以根據報文內容選擇內部伺服器,因此LVS分發路徑優於Nginx和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來做動靜分離(根據請求報文特徵,選擇靜態資源伺服器還是應用伺服器)。

五、資料庫讀寫分離和分庫分表

隨著用戶量的增加,資料庫成為最大的瓶頸,改善資料庫性能常用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個資料庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務不同來切換,如用戶業務、商品業務相關的表放在不同的資料庫中。

六、使用CDN和反向代理提高網站性能

假如我們的伺服器都部署在成都的機房,對於四川的用戶來說訪問是較快的,而對於北京的用戶訪問是較慢的,這是由於四川和北京分別屬於電信和聯通的不同發達地區,北京用戶訪問需要通過互聯路由器經過較長的路徑才能訪問到成都的伺服器,返迴路徑也一樣,所以數據傳輸時間比較長。對於這種情況,常常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網路訪問的路徑。比較專業的CDN運營商有藍汛、網宿。

而反向代理,則是部署在網站的機房,當用戶請求達到時首先訪問反向代理伺服器,反向代理伺服器將緩存的數據返回給用戶,如果沒有沒有緩手冊存數據才會繼續走應用伺服器獲取,也減少了獲取數據的成本。反向代理有Squid,Nginx。

七、使用分布式文件系統

用戶一天天增加,業務量越來越大,產生的文件越來越多,單台的文件伺服器已經不能滿足需求。需要分布式的文件系統支撐。常用的分布式文件系統有NFS。

八、使用Nosql和搜索引擎

對於海量數據的查詢,我們使用nosql資料庫加上搜索引擎可以達到更好的性能。並不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

九、將應用伺服器進行業務拆分

隨著業務進一步擴展,應用程序變得非常臃腫,這時我們需要將應用程序進行業務拆分,如網路分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過消息進行通信或者同享資料庫來實現。

十、搭建分布式服務

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。淘寶的Dubbo是一個不錯的選擇。

大型網站的架構是根據業務需求不斷完善的,根據不同的業務特徵會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段。

如果你還有這些疑問,成熟的網站架構師需要學什麼核心技能?java程序員如何晉升為互聯網架構師?Java語言在架構搭建中扮演什麼角色?怎樣成為年收入幾十萬的架構師?歡迎來電來訪昌平北大青鳥java培訓。

熱點內容
系列影視廣告文案腳本 發布:2025-01-13 17:31:57 瀏覽:791
防盜器編程 發布:2025-01-13 17:24:39 瀏覽:898
聯通電信伺服器怎麼不卡頓 發布:2025-01-13 17:21:30 瀏覽:820
科沃茲低配可以升級哪些配置 發布:2025-01-13 17:09:26 瀏覽:329
android判斷資料庫是否存在 發布:2025-01-13 17:08:17 瀏覽:333
ie腳本運行錯誤 發布:2025-01-13 17:08:05 瀏覽:622
python中或者怎麼表示 發布:2025-01-13 16:32:33 瀏覽:288
易達加密鎖 發布:2025-01-13 16:27:23 瀏覽:516
前端編譯工具配置 發布:2025-01-13 16:26:43 瀏覽:585
資料庫百度雲 發布:2025-01-13 16:19:38 瀏覽:541