搜尋
首頁頭條php高級技術分享:為什麼看起來不是很複雜的網站,淘寶、騰訊卻需要大量頂尖高手來開發?

為什麼看起來不是很複雜的網站,淘寶、騰訊卻需要大量頂尖高手來開發?就拿淘寶來說說,當作給新人一些科普。


php高級技術分享:為什麼看起來不是很複雜的網站,淘寶、騰訊卻需要大量頂尖高手來開發?


先說你看到的頁面上,最重要的幾個:

【搜尋商品】

這個功能,如果你有幾千條商品,完全可以用select * from tableXX where title like %XX%這樣的操作來搞定。但是-當你有10000000000(一百億)商品的時候,任何一個資料庫都無法存放了,請問你怎麼搜尋?這裡需要用到分散式的資料儲存方案,另外這個搜尋也不可能直接從資料庫裡來取數據,必然要用到搜尋引擎(簡單來說搜尋引擎更快)。好,能搜出商品了,是否大功告成可以啵一個了?早點呢,誰家的商品出現在第一頁?這裡需要用到巨複雜的排序演算法。要是再根據你的購買行為做一些個人化的推薦——這夠一幫牛叉的演算法工程師奮鬥了終生。

##########

【商品詳情】就是搜尋完畢,看到你感興趣的,點擊查看商品的頁面,這個頁面有商品的屬性、詳細描述、評價、賣家資訊等等,這個頁面的每天展示次數在30億以上,同樣的道理,如果你做一個網站每天有10個人訪問,你絲毫感覺不到服務器的壓力,但是30億,要解決的問題就多了去了。首先,這些請求不能直接壓到資料庫上,任何單機或分散式的資料庫,承受30億每天的壓力,都將崩潰到完全沒有幸福感,這種情況下要用到的技術就是大規模的分散式緩存,所有的賣家資訊、評價資訊、商品描述都是從緩存裡面來取到的,甚至更加極致的一點「商品的瀏覽量」這個信息,每打開頁面一次都要刷新,你猜能夠從緩存裡面來取嗎?淘寶做到了,整個商品的詳情都在緩存裡面。


【商品圖片】一個商品有5張圖片,商品描述裡面有更多圖片,你猜淘寶有多少張圖片要儲存? 100億以上。這麼多圖片要是在你的硬碟裡面,你怎麼去找其中的一張?要是你的同學想拷貝你的圖片,你需要他準備多少個硬碟?你需要配置多少大的頻寬?你們的網卡是否能夠承受?你需要多長時間拷貝給他?這樣的規模,很不幸市面上已經沒有任何商業的解決方案,最終我們必須自己來開發一套儲存系統,如果你聽過google的GFS,我們跟他類似,叫TFS。順便說一下,騰訊也有這樣的一套,也叫TFS。


【廣告系統】淘寶上有很多廣告,什麼,你不知道?那表示我們的廣告做的還不錯,居然很多人不認為它是廣告,賣家怎麼出價去買淘寶的廣告位?廣告怎麼展示?怎麼查看廣告成效?這又是一套演算法精奇的系統。


【BOSS系統】淘寶的工作人員怎麼去管理這麼龐大的一個系統,例如某時刻突然宣告某位作家的作品全部從淘寶消失,從資料庫到搜尋引擎到廣告系統,裡面的相關數據在幾分鐘內全部消失,這又需要一個牛叉的後台支撐系統。


【运维体系】支持这么庞大的一个网站,你猜需要多少台服务器?几千台?那是零头。这么多服务器,上面部署什么操作系统,操作系统的内核能否优化?Java虚拟机能否优化?通信模块有没有榨取性能的空间?软件怎么部署上去?出了问题怎么回滚?你装过操作系统吧,优化过吧,被360坑过没,崩溃过没?这里面又有很多门道。


不再多写了,除了上面提到的这些,还有很多很多需要做的技术,当然并不是这些东西有多么高不可攀,任何复杂的庞大的东西都是从小到大做起来的,里面需要牛叉到不行的大犇,也需要充满好奇心的菜鸟,最后这一句,你当我是别有用心好了。



forecho :


刚看了一篇很有意思的文章,讲的很清楚——《你刚才在淘宝上买了一件东西》


你發現快要過年了,於是想給你的女朋友買一件毛衣,你打開了http://www.taobao.com。這時你的瀏覽器先查詢DNS伺服器,將http://www.taobao.com轉換成ip位址。不過首先你會發現,你在不同的地區或不同的網路(電信、聯通、移動)的情況下,轉換後的IP位址很可能是不一樣的,這首先涉及到負載平衡的第一步,透過DNS解析網域名稱時將你的訪問分配到不同的入口,同時盡可能保證你所訪問的入口是所有入口中可能較快的一個 (這和後文的CDN不一樣)。


你透過這個入口成功的訪問了http://www.taobao.com的實際的入口IP位址。這時你產生了一個PV,也就是Page View,頁面存取。每日每個網站的總PV量是形容一個網站規模的重要指標。淘寶網全網在平日(非促銷期間)的PV大概是16-25億之間。同時作為獨立的用戶,你這次造訪淘寶網的所有頁面,均算是一個UV(Unique Visitor使用者存取)。最近臭名昭著的http://12306.cn的日PV量最高峰在10億左右,而UV量卻遠小於淘寶網十餘倍,這其中的原因我相信大家都會知道。


因為同一時刻造訪http://www.taobao.com的人數過於巨大,所以即使是產生淘寶首頁頁面的伺服器,也不可能僅一台。僅用於生成http://www.taobao.com首頁的伺服器就可能有成百上千台,那麼你的一次造訪時生成頁面給你看的任務便會被分配給其中一台伺服器完成。這個過程要確保公正、公平、平均(暨這成百上千台伺服器每台負擔的用戶數要差不多),這一很複雜的過程是由幾個系統配合完成,其中最關鍵的便是LVS( Linux Virtual Server),世界上最受歡迎的負載平衡系統之一,正是由目前在淘寶網任職的章文嵩博士開發的。


經過一系列複雜的邏輯運算和資料處理,用於這次給你看的淘寶網首頁的HTML內容便生成成功了。對web前端稍微有點常識的童鞋都應該知道,下一步瀏覽器會去載入頁面中用到的css、js、圖片、腳本和資源檔。但可能相對較少的同學才會知道,你的瀏覽器在同一個網域下並發載入的資源數量是有限制的,例如IE6-7是兩個,IE8是6個,Chrome各版本不大一樣,一般是4-6個。我剛剛看了一下,我訪問淘寶網首頁需要加載126個資源,那麼如此小的並發連接數自然會加載很久。所以前端開發人員往往會將上述這些資源檔案分佈在好多個網域下,變相的繞過瀏覽器的這個限制,同時也為下文的CDN工作做準備。


據不可靠消息,在雙十一當天高峰,淘寶的訪問流量最巔峰達到871GB/S。這個數字意味著需要178萬個4Mb頻寬的家庭寬頻才能負擔的起,也完全有能力拖垮一個中小城市的全部網路頻寬。那麼顯然,這些訪問流量不可能集中在一起。而且大家都知道,不同地區不同網路(電信、聯通等)之間互訪會非常緩慢,但是你卻發現很少發現淘寶網訪問緩慢。這便是CDN(Content Delivery Network),即內容傳遞網路的角色。淘寶在全國各地建立了數十上百個CDN節點,利用一些手段保證你訪問的(這裡主要指js、css、圖片等)地方是離你最近的CDN節點,這樣便保證了大流量分散在各地訪問的加速節點上。


這便出現了一個問題,那就是假若一個賣家發布了一個新的寶貝,上傳了幾張新的寶貝圖片,那麼淘寶網如何確保全國各地的CDN節點中都會同步的存在這幾張圖片供用戶使用呢?這裡邊就涉及了大量的內容分發與同步的相關技術。淘寶開發了分散式檔案系統TFS(Taobao File System)來處理這類問題。


好了,這時你終於加載了淘寶首頁,那麼你習慣性的在首頁搜尋框中輸入了'毛衣'二字並敲回車,這時你又產生了一個PV,然後,淘寶網的主搜尋系統便開始為你服務了。它首先對你輸入的內容是基於一個分詞庫進行分詞操作。眾所周知,英文是以詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則為:「我是一個學生」。電腦可以很簡單透過空格知道student是一個單詞,但是不能很容易明白「學」、「生」兩個字合起來才表示一個詞。把中文的漢字序列切分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學生,分詞的結果是:我 是 一個學生。


#

進行分詞之後,還需要根據你輸入的搜尋字詞進行你的購物意圖分析。用戶進行搜尋時常有以下幾類意圖:(1)瀏覽型:沒有明確的購物對象和意圖,邊看邊買,用戶比較隨意和感性。 Query例如:”2010年10大香水排行”,”2010年流行毛衣”, “zippo有多少種類?”;(2)查詢型:有一定的購物意圖,體現在對屬性的要求上。 Query例如:”適合老人用的手機”,”500元 手錶」;(3)對比型:已經縮小了購物意圖,具體到了某幾個產品。Query例如:」NokiaE71 E63″,」akg k450 px200″;(4)確定型:已經做了基本決定,重點考察某個物件。

之後的數個步驟後,主搜尋系統便根據上述以及更多複雜的條件列出了搜尋結果,這一切是由一千多台搜尋伺服器完成。點擊瀏覽搜尋出的寶貝。的寶貝'查看當時的快照。的事情。 其中又涉及數套系統的共同協作,其中較為重要的是Tair,淘寶自行研發的分散式KV儲存方案。

然後無論你是否真正進行了交易,你的這些訪問行為便忠實的被系統記錄下來,用於後續的業務邏輯和數據分析。這些記錄中存取日誌記錄便是最重要的記錄之一, 但是前邊我們得知,這些訪問是分佈在各個地區很多不同的伺服器上的,並且由於用戶眾多,這些日誌記錄都非常龐大,達到TB級別非常正常。那麼為了快速及時 傳輸同步這些日誌數據,淘寶研發了TimeTunnel,用於進行即時的數據傳輸,交給後端系統進行計算報表等操作。

你的瀏覽資料、交易資料以及其它很多很多的資料記錄都會被保留下來。

#

讓淘寶儲存的歷史資料輕鬆的便達到了十數甚至更多個PB(1PB=1024TB=1048576GB)。如此龐大的資料量經過淘寶系統1:120的極限壓縮儲存在淘寶的資料倉儲中。並且透過一個叫做雲梯的,由2000多台伺服器組成的超大規模資料系統不斷的進行分析與挖掘。


從這些數據中淘寶能夠知道小到你是誰,你喜歡什麼,你的孩子幾歲了,你是否在談戀愛,喜歡玩魔獸世界的人喜歡什麼樣的飲料等,大到各行各業的零售情況、各類商品的興衰消亡等等海量的信息。


說了這麼多,其實也只是敘述了淘寶上正在運作的成千上萬個系統中的寥寥幾個。即使是你僅僅造訪一次淘寶的首頁,所涉及到的技術和系統規模都是你完全無法想像的,是淘寶2000多名頂級的工程師們的心血結晶,其中甚至包括長江學者、國家科學技術最高獎得主等眾多大牛。同樣,百度、騰訊等的業務系統也絕不比淘寶簡單。 你需要知道的是,你每天使用的網路產品,看似簡單易用,背後卻凝聚著難以想像的智慧與勞動。

相關文章推薦:

  1. #php網站效能優化實戰:淘寶首頁載入速度優化實務

  2. 還有比這更賤的php影片教學嗎? php中文網《獨孤九賤》系列教學

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何学习PHP开发?如何学习PHP开发?Jun 12, 2023 am 08:09 AM

随着互联网的发展,动态网页的需求越来越大。而PHP作为一种主流的编程语言,被广泛应用于Web开发中。那么,对于初学者来说,如何学习PHP开发呢?一、了解PHP的基础知识PHP是一种脚本语言,可以直接嵌入HTML代码中,通过Web服务器进行解析运行。因此,在学习PHP之前,可以先了解HTML、CSS、JavaScript等前端技术基础,以便更好地理解PHP的作

PHP学习笔记:网络爬虫与数据采集PHP学习笔记:网络爬虫与数据采集Oct 08, 2023 pm 12:04 PM

PHP学习笔记:网络爬虫与数据采集引言:网络爬虫是一种自动从互联网上抓取数据的工具,它可以模拟人的行为,浏览网页并收集所需的数据。PHP作为一种流行的服务器端脚本语言,在网络爬虫和数据采集领域也发挥了重要的作用。本文将介绍如何使用PHP编写网络爬虫,并提供实际的代码示例。一、网络爬虫的基本原理网络爬虫的基本原理是通过发送HTTP请求,接收并解析服务器响应的H

PHP学习笔记:模块化开发与代码复用PHP学习笔记:模块化开发与代码复用Oct 10, 2023 pm 12:58 PM

PHP学习笔记:模块化开发与代码复用引言:在软件开发中,模块化开发与代码复用是相当重要的概念。模块化开发可以将复杂的系统分解成可管理的小模块,提高开发效率和代码可维护性;而代码复用则可以减少冗余代码,提高代码的重用性。在PHP开发中,我们可以通过一些技术手段来实现模块化开发和代码复用。本篇文章将介绍一些常用的技术和具体代码示例,帮助读者更好地理解和应用这些概

PHP学习笔记:性能分析与调优PHP学习笔记:性能分析与调优Oct 08, 2023 pm 03:21 PM

PHP学习笔记:性能分析与调优引言:在Web开发中,性能是一个非常关键的因素。一个高性能的网站能够提供更好的用户体验,提高用户留存率,增加业务收入。而在PHP开发中,性能的优化是一个常见且重要的问题。本文将介绍PHP中性能分析与调优的方法,并提供具体的代码示例,帮助读者更好地理解和运用这些技巧。一、性能分析的工具Xdebug扩展Xdebug是一款功能强大的P

2023年,学习PHP的最佳途径是什么?2023年,学习PHP的最佳途径是什么?Sep 10, 2023 pm 09:16 PM

2023年,学习PHP的最佳途径是什么?随着互联网的快速发展,计算机编程成为了一项具有极高就业前景的技能。而在众多的编程语言中,PHP是一门被广泛应用于网络开发的语言。想要学习PHP,了解最佳的学习途径是非常重要的。PHP是一种开源的、服务器端脚本语言,它被用于开发动态网站和应用程序。相比于其他语言,PHP具有较低的学习曲线和广泛的应用领域,使其成为初学者的

学习PHP中的视频特效和滤镜处理函数方法学习PHP中的视频特效和滤镜处理函数方法Aug 07, 2023 pm 11:53 PM

学习PHP中的视频特效和滤镜处理函数方法PHP是一种强大的编程语言,广泛应用于Web开发领域。随着网站设计的发展,视频特效和滤镜处理越来越受欢迎。本文将介绍如何使用PHP实现视频特效和滤镜处理,以及一些常用的函数方法。一、安装ffmpeg扩展要处理视频,我们需要安装ffmpeg扩展。通过该扩展,我们可以在PHP中直接调用ffmpeg命令进行视频处理。安装过程

PHP学习笔记:表单处理与数据验证PHP学习笔记:表单处理与数据验证Oct 09, 2023 am 08:52 AM

PHP学习笔记:表单处理与数据验证在网页开发中,表单是用户与网站进行交互的重要组件之一。当用户在网站上填写表单并提交数据时,网站需要对提交的数据进行处理和验证,确保数据的准确性和安全性。本文将介绍如何使用PHP来处理表单和进行数据验证,并提供具体的代码示例。表单提交和数据预处理在HTML中,我们需要使用<form>标签来创建一个表单,并指定表单的

PHP学习笔记:前后端分离与API设计PHP学习笔记:前后端分离与API设计Oct 08, 2023 am 09:42 AM

PHP学习笔记:前后端分离与API设计概述:随着互联网的不断发展和用户需求的不断增加,前后端分离的开发模式越来越受到开发者的重视。前后端分离是指将前端和后端的开发分离开来,通过API进行数据交互,实现开发的高效性和灵活性。本文将介绍前后端分离的概念,以及如何设计API。前后端分离的概念:传统的Web开发模式是前后端耦合的,即前端和后端的开发是在同一个项目中进

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版