>  기사  >  PHP 고급 기술 공유: 타오바오와 텐센트는 왜 별로 복잡해 보이지 않는 웹사이트를 개발하기 위해 수많은 최고 전문가를 필요로 할까요?

PHP 고급 기술 공유: 타오바오와 텐센트는 왜 별로 복잡해 보이지 않는 웹사이트를 개발하기 위해 수많은 최고 전문가를 필요로 할까요?

PHPz
PHPz원래의
2017-04-12 13:47:134160검색

타오바오와 텐센트는 왜 복잡해 보이지 않는 웹사이트를 개발하기 위해 수많은 최고 전문가를 필요로 할까요? 신규 이민자에게 대중 과학을 제공하는 방법으로 Taobao를 예로 들어 보겠습니다.


PHP 고급 기술 공유: 타오바오와 텐센트는 왜 별로 복잡해 보이지 않는 웹사이트를 개발하기 위해 수많은 최고 전문가를 필요로 할까요?


보이는 페이지에서 가장 중요한 것부터 시작해 보겠습니다.


[상품 검색]이 기능은, 수천 개의 항목이 있으므로 tableXX에서 *를 선택하세요. 이렇게 하면 %XX%와 같은 제목을 만들 수 있습니다. 하지만 - 10000000000(100억)개의 제품이 있는 경우 어떤 데이터베이스에도 해당 제품을 저장할 수 없습니다. 여기에는 분산 데이터 저장 솔루션이 필요합니다. 또한 이 검색은 데이터베이스에서 데이터를 직접 가져올 수 없으며 검색 엔진을 사용해야 합니다(간단히 말하면 검색 엔진이 더 빠릅니다). 좋습니다. 이제 제품을 찾을 수 있게 되었으니 이제 구매해도 될까요? 이른 시간인데, 첫 페이지에 누구의 제품이 등장할까요? 여기에는 매우 복잡한 정렬 알고리즘이 필요합니다. 귀하의 구매 행동을 기반으로 개인화된 추천을 할 수 있다면, 이는 훌륭한 알고리즘 엔지니어들이 평생 동안 일하기에 충분할 것입니다.


【상품 상세정보】 검색 후 관심 있는 상품이 있으면 클릭하여 상품 페이지를 확인하세요. 이 페이지에는 상품 속성, 상세 설명, 리뷰, 판매자 정보 등이 포함되어 있습니다. 이 페이지의 일일 노출수는 30억이 넘습니다. 마찬가지로 매일 10명이 방문하는 웹사이트를 구축하면 서버에 대한 부담이 전혀 느껴지지 않습니다. 해결해야 할 문제가 많습니다. 우선 이러한 요청은 데이터베이스에 직접 입력할 수 없습니다. 단일 머신이든 분산 데이터베이스이든 하루에 30억 개의 압력을 견디면 전혀 행복감이 없을 정도로 무너질 것입니다. 이 경우에는 대규모 분산 캐시를 사용하므로 모든 판매자 정보, 평가 정보, 제품 설명은 캐시에서 얻어지며, 페이지를 열 때마다 "제품 조회수"와 같은 더 극단적인 정보도 새로 고쳐야 합니다. . 캐시에서 얻을 수 있다고 생각하셨나요? Taobao가 이를 수행했으며 전체 제품 세부정보가 캐시에 있습니다.


[상품 사진]상품 사진은 5장이며, 상품 설명에 사진이 더 많이 있습니다. , Taobao에는 얼마나 많은 사진을 저장해야 합니까? 100억 개가 넘습니다. 하드 드라이브에 사진이 너무 많으면 그 중 하나를 어떻게 찾나요? 당신의 반 친구가 당신의 사진을 복사하고 싶다면 몇 개의 하드 드라이브를 준비해야 합니까? 얼마나 많은 대역폭을 구성해야 합니까? 네트워크 카드가 이를 처리할 수 있습니까? 그 사람에게 복사하는 데 시간이 얼마나 걸리나요? 이 규모에서는 불행히도 시장에 상용 솔루션이 없습니다. 결국 Google의 GFS에 대해 들어보신 적이 있다면 우리는 TFS라고 하는 것과 유사한 스토리지 시스템을 개발해야 합니다. 그런데 Tencent에는 TFS라고도 하는 이러한 시스템이 있습니다.


[광고 시스템]타오바오에 광고가 많은데 뭐 모르시나요? 이는 우리 광고가 꽤 훌륭하다는 것을 보여줍니다. 하지만 많은 사람들은 그것이 광고라고 생각하지 않습니다. 판매자는 타오바오에서 광고 공간을 구매하기 위해 어떻게 입찰할 수 있나요? 광고는 어떻게 표시되나요? 광고효과는 어떻게 확인하나요? 이것은 정교한 알고리즘을 갖춘 또 다른 시스템입니다.


[BOSS 시스템]갑자기 특정 발표를 하는 등 이렇게 거대한 시스템을 타오바오 직원들은 어떻게 관리하는 걸까요? 한 작가가 타오바오에서 사라졌습니다. 데이터베이스부터 검색 엔진, 광고 시스템까지 모든 관련 데이터가 몇 분 안에 사라졌기 때문에 뛰어난 백엔드 지원 시스템이 필요했습니다.


[운영 및 유지관리 시스템]이렇게 큰 웹사이트를 지원하려면 몇 대의 서버가 필요하다고 생각하시나요? 수천 단위? 그것은 분수입니다. 서버가 이렇게 많은데 어떤 운영 체제가 배포되고, 운영 체제의 커널을 최적화할 수 있습니까? Java 가상 머신을 최적화할 수 있습니까? 통신모듈의 성능을 짜낼 여지가 있나요? 소프트웨어를 배포하는 방법은 무엇입니까? 문제가 발생하면 어떻게 롤백하나요? 운영체제를 설치하고 최적화하셨나요? 360에 속았거나 크래쉬되셨나요? 여기에는 많은 출입구가 있습니다.


위에서 언급한 것 외에도 아직 구현해야 할 기술이 많습니다. , 이런 것들이 그렇게 복잡하다는 것이 아닙니다. 복잡하고 거대한 것은 작은 것부터 큰 것까지 엄청난 노력이 필요하며 마지막에는 호기심이 가득한 신인도 필요합니다. 그렇다면 당신은 나에게 숨은 동기가 있다고 생각해야 합니다.



앞초:


방금 매우 흥미로운 기사를 읽었는데, 아주 명확하게 설명되어 있습니다. "방금 Taobao에서 구매하셨군요. 》


설날이 곧 다가온다는 것을 알고 여자친구에게 스웨터를 사주고 싶어 http://www.taobao.com을 엽니다. 이때 귀하의 브라우저는 먼저 DNS 서버에 쿼리하여 http://www.taobao.com을 IP 주소로 변환합니다. 하지만 먼저 다른 지역이나 다른 네트워크(Telecom, China Unicom, China Mobile)에 있을 때 변환된 IP 주소가 다를 수 있다는 것을 알게 됩니다. 먼저 DNS가 도메인을 확인할 때를 통한 로드 밸런싱의 첫 번째 단계가 필요합니다. 이름을 지정하면 여러 입구에 대한 액세스를 할당하고 방문하는 입구가 모든 입구 중에서 가장 빠른 입구인지 확인하려고 노력합니다. (이것은 나중에 언급되는 CDN과 다릅니다.)


이 입구를 통해 실제 입구 IP주소 http://www.taobao.com에 접속하는데 성공하셨습니다. 이때 PV, 즉 페이지 조회, 페이지 방문이 생성됩니다. 각 웹사이트의 일일 총 PV량은 웹사이트의 규모를 설명하는 중요한 지표입니다. 평일(프로모션 기간이 아닌 기간) 전체 타오바오 네트워크의 PV는 16억~25억 사이입니다. 동시에, 독립 사용자로서 이번에 Taobao에서 방문하는 모든 페이지는 UV(Unique 방문자 사용자 액세스). 최근 악명 높은 http://12306.cn의 일일 최대 PV 볼륨은 약 10억이지만 UV 볼륨은 Taobao의 10배에 훨씬 못 미치는 수준입니다.


http://www.taobao.com에 동시에 접속하는 사람이 너무 많기 때문에, 타오바오 홈페이지는 하나만 있을 수 없습니다. http://www.taobao.com 홈페이지를 생성하는 데만 사용되는 서버가 수백 또는 수천 개가 있을 수 있으므로, 귀하가 방문하는 동안 페이지를 생성하는 작업은 서버 중 하나에 할당됩니다. 이 프로세스는 공정하고 공평해야 하며 균등해야 합니다(수백 또는 수천 대의 서버 각각의 사용자 수는 거의 동일해야 함). 이 매우 복잡한 프로세스는 여러 시스템에 의해 완료되며 그 중 가장 중요한 것은 Linux입니다. Virtual Server)는 세계에서 가장 인기 있는 로드 밸런싱 시스템 중 하나이며 현재 Taobao에서 근무하고 있는 Zhang Wensong 박사가 개발했습니다.


일련의 복잡한 논리연산과 데이터 처리를 거쳐 이번에 보여드리는 타오바오 홈페이지의 HTML 콘텐츠가 성공적으로 생성되었습니다. 웹 프런트 엔드에 대해 약간의 지식이 있는 사람이라면 다음 단계에서 브라우저가 페이지에 사용되는 CSS, JS, 이미지, 스크립트 및 리소스 파일을 로드한다는 것을 알아야 합니다. 그러나 브라우저가 동일한 도메인 이름으로 동시에 로드할 수 있는 리소스 수에 제한이 있다는 것을 아는 학생은 상대적으로 적습니다. 예를 들어 IE6-7에는 2개의 리소스가 있고 IE8에는 6개의 리소스가 있으며 각 Chrome 버전은 보통 4~6개가 다릅니다. 방금 살펴봤는데, 타오바오 홈페이지에 접속하면 126개의 리소스를 로드해야 하므로 이렇게 적은 수의 동시 연결은 당연히 로드하는 데 오랜 시간이 걸립니다. 따라서 프런트엔드 개발자들은 위의 리소스 파일을 여러 도메인 이름으로 배포하는 경우가 많아 이 브라우저 제한을 위장하여 우회하고 다음 CDN 작업도 준비합니다.


신뢰할 수 없는 소식에 따르면 Double Eleven이 최고조에 달했을 때 Taobao의 액세스 트래픽은 871GB/S로 최고치를 기록했습니다. 이 수치는 178만 개의 4Mb 대역폭 홈 광대역이 필요하다는 것을 의미하며, 이는 중소 도시의 전체 인터넷 대역폭을 완벽하게 압도할 수 있습니다. 따라서 분명히 이러한 액세스 트래픽은 함께 집중될 수 없습니다. 그리고 서로 다른 지역에 있는 서로 다른 네트워크(통신, 차이나 유니콤 등) 간의 상호 접속은 매우 느리다는 것을 모두가 알고 있지만, Taobao에 대한 접속이 느리다는 것을 거의 느끼지 못할 것입니다. CDN(콘텐츠 Delivery Network), 콘텐츠 유통 네트워크의 역할. Taobao는 전국에 수십 또는 수백 개의 CDN 노드를 구축했으며 몇 가지 수단을 사용하여 귀하가 방문하는 장소(여기서는 주로 js, ​​css, 사진 등을 나타냄)가 가장 가까운 CDN 노드인지 확인하여 보장합니다. 그 큰 트래픽은 곳곳에 분산되어 있습니다.


문제가 발생합니다. 즉, 판매자가 새 아기를 출시하고 새 아기 사진을 여러 장 업로드하면 타오바오는 이러한 사진을 어떻게 보장합니까? 사용자가 사용할 수 있도록 전국 CDN 노드에 동기화되어 있습니까? 여기에는 수많은 콘텐츠 배포 및 동기화 관련 기술이 포함됩니다. 타오바오는 이러한 문제를 해결하기 위해 분산 파일 시스템 TFS(Taobao File System)를 개발했습니다.


자 이제 드디어 타오바오 홈페이지가 로딩되었으니 홈페이지 검색창에 습관적으로 '스웨터'라는 단어를 입력하셨군요. Enter를 누르면 또 다른 PV가 생성되고 Taobao의 주요 검색 시스템이 서비스를 시작합니다. 먼저 단어 분할 데이터베이스를 기반으로 입력한 내용에 대해 단어 분할 작업을 수행합니다. 우리 모두 알고 있듯이 영어는 단어를 기반으로 하고 단어는 공백으로 구분되는 반면, 중국어는 단어를 기반으로 하며 문장의 모든 단어가 연결되어 의미를 설명할 수 있습니다. 예를 들어, 영어 문장 I 나는 학생입니다. 중국어로 "나는 학생입니다"라는 뜻입니다. 컴퓨터는 공백을 통해 학생이라는 단어를 쉽게 알 수 있지만, 'learn'과 '生'을 합친 단어가 하나의 단어라는 것을 쉽게 이해할 수 없습니다. 한자 순서를 의미 있는 단어로 분할하는 것이 중국어 단어 분할이며, 일부 사람들은 이를 단어 분할이라고도 합니다. 나는 학생이고 분사의 결과는 다음과 같습니다. 나는 학생입니다.


단어 분할 후에는 입력한 검색어를 바탕으로 쇼핑 의도도 분석해야 합니다. 사용자는 검색할 때 다음과 같은 유형의 의도를 갖는 경우가 많습니다. (1) 탐색 유형: 명확한 쇼핑 대상과 의도가 없습니다. 사용자는 검색하면서 구매할 때 더 캐주얼하고 감정적입니다. 예를 들어 쿼리: "2010년 상위 10개 향수 순위", "2010년 인기 스웨터", "지포 종류는 몇 가지입니까?" (2) 쿼리 유형: 특정 쇼핑 의도가 반영됩니다. 속성 요구 사항에서. 쿼리 예: "고령자에게 적합한 휴대폰", "500위안" "시계"; (3) 비교 유형: 쇼핑 의도가 특정 제품으로 좁혀졌습니다. 예: "Nokia E71 E63", "akg k450 px200" (4) 확인 유형: 기본 결정이 이루어졌습니다. , 특정 개체를 조사합니다. "Nokia N97", "IBM T60". 쇼핑 의도를 분석하면 기본 검색 결과가 완전히 달라집니다.

메인 검색 시스템은 위와 더 복잡한 조건을 기반으로 검색 결과를 나열하며, 이는 모두 천 개 이상의 검색 서버에 의해 완료되며, 클릭하면 검색된 제품을 보기 시작합니다. 상품 상세 페이지 온라인 쇼핑을 자주 하시는 분들은 상품 구매 후 판매자가 상품 상세 페이지를 여러 번 수정하더라도 당시의 상품 상세 페이지 모습을 확인할 수 있습니다. 매년 수백억 건의 거래에 대한 상품 세부정보 스냅샷을 저장하고 빠르게 불러오는 것은 판매자가 상품 세부정보에서 약속한 내용을 거부하는 것을 방지하기 위한 것입니다. 또한 여러 시스템의 협력이 필요하며, 그 중 더 중요한 것은 Taobao에서 개발한 분산형 KV 스토리지 솔루션인 Tair입니다.

그러면 실제로 거래를 수행하는지 여부에 관계없이 후속 비즈니스 로직 및 데이터 분석을 위해 시스템에 액세스 동작이 충실하게 기록됩니다. 이러한 기록 중 접속 로그 기록은 가장 중요한 기록 중 하나입니다. 그러나 앞서 우리는 이러한 접속이 다양한 지역의 여러 서버에 분산되어 있고, 사용자 수가 많기 때문에 이러한 로그 기록의 양이 매우 크다는 것을 앞서 배웠습니다. 결핵 수준은 매우 정상입니다. 이러한 로그 데이터를 신속하고 적시에 전송하고 동기화하기 위해 Taobao는 실시간 데이터 전송에 사용되고 보고서 계산 및 기타 작업을 위해 백엔드 시스템으로 전달되는 TimeTunnel을 개발했습니다.

검색 데이터, 거래 데이터 및 기타 다양한 데이터 기록이 유지됩니다.

타오바오에 저장된 과거 데이터는 쉽게 10PB(1PB=1024TB=1048576GB) 이상에 도달할 수 있습니다. 이러한 엄청난 양의 데이터는 타오바오 시스템에 의한 1:120의 극단적인 압축을 통해 타오바오의 데이터 웨어하우스에 저장됩니다. 그리고 2,000개 이상의 서버로 구성된 Yunlai라는 초대형 데이터 시스템을 통해 지속적으로 분석되고 채굴됩니다.


Taobao는 이 데이터를 통해 귀하가 누구인지, 무엇을 좋아하는지, 자녀가 몇 살인지, 연애 중인지 여부를 알 수 있습니다. , 월드 오브 워크래프트를 좋아하는 사람들은 어떤 음료를 좋아하는지 등 다양한 산업의 소매 상황, 각종 상품의 상승 및 하락 등 엄청난 양의 정보를 제공합니다.


너무 많이 말했지만 사실 저는 Taobao에서 실행되는 수천 개의 시스템 중 몇 가지만 설명했습니다. 타오바오 홈페이지를 한 번만 방문해도 관련된 기술과 시스템 규모는 전혀 상상할 수 없습니다. 이는 양쯔강 학자, 국가 과학 기술 최고상 수상자를 포함해 2,000명이 넘는 최고의 타오바오 엔지니어들이 만든 작품입니다. 좋은 이름. 마찬가지로 Baidu, Tencent 등의 비즈니스 시스템은 결코 Taobao보다 간단하지 않습니다. 당신이 알아야 할 것은 우리가 매일 사용하는 인터넷 제품은 겉으로는 단순하고 사용하기 쉬워 보이지만, 그 이면에는 상상을 초월하는 지혜와 노력이 숨어 있다는 사실이다.

추천 관련 기사:

  1. PHP 웹사이트 성능 최적화 실습: 타오바오 홈페이지 로딩 속도 최적화 실습

  2. 이 것보다 더 저렴한 PHP 비디오 튜토리얼이 있나요? PHP 중국어 웹사이트 "Dugu Jiujian" 튜토리얼 시리즈

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.