0x01.大型網(wǎng)站演化簡單說,分布式是以縮短單個(gè)任務(wù)的執(zhí)行時(shí)間來提升效率的,而集群則是通過提高單位時(shí)間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。 集群主要分為:高可用集群(High Availability Cluster),負(fù)載均衡集群(Load Balance Cluster,nginx即可實(shí)現(xiàn)),科學(xué)計(jì)算集群(High Performance Computing Cluster)。 分布式是指將不同的業(yè)務(wù)分布在不同的地方;而集群指的是將幾臺(tái)服務(wù)器集中在一起,實(shí)現(xiàn)同一業(yè)務(wù)。分布式中的每一個(gè)節(jié)點(diǎn),都可以做集群。 而集群并不一定就是分布式的。 之前在網(wǎng)上看到一篇關(guān)于大型網(wǎng)站演化的博客。http://www.cnblogs.com/leefreeman/p/3993449.html 每個(gè)大型網(wǎng)站都會(huì)有不同的架構(gòu)模式,而架構(gòu)內(nèi)容也就是在處理均衡負(fù)載,緩存,數(shù)據(jù)庫,文件系統(tǒng)等,只是在不同的環(huán)境下,不同的條件下,架構(gòu)的模型不一樣,目的旨在提高網(wǎng)站的性能。 最初的架構(gòu)只有應(yīng)用程序,數(shù)據(jù)庫,文件服務(wù)。 到后來,分布式服務(wù)、集群架設(shè)。 0x02.關(guān)于均衡負(fù)載方案在上一篇,《Nginx反向代理實(shí)現(xiàn)均衡負(fù)載》討論過過的nginx現(xiàn)實(shí)均衡負(fù)載方案,這里選擇另一種HAProxy+Keepalived雙機(jī)高可用均衡負(fù)載方案。 HAProxy是免費(fèi)、極速且可靠的用于為TCP和基于HTTP應(yīng)用程序提供高可用、負(fù)載均衡和代理服務(wù)的解決方案,尤其適用于高負(fù)載且需要持久連接或7層處理機(jī)制的web站點(diǎn)。 不論是Haproxy還是Keepalived甚至是上游服務(wù)器均提高生產(chǎn)力并增強(qiáng)可用性,也就是如下架構(gòu)中Haproxy,Keepalived,Httpd服務(wù)器任意宕機(jī)一臺(tái)服務(wù)還是可以正常運(yùn)行的。 HAProxy的優(yōu)點(diǎn): 1、HAProxy是支持虛擬主機(jī)的,可以工作在4、7層(支持多網(wǎng)段); 2、能夠補(bǔ)充Nginx的一些缺點(diǎn)比如Session的保持,Cookie的引導(dǎo)等工作; 3、支持url檢測后端的服務(wù)器; 4、本身僅僅就只是一款負(fù)載均衡軟件;單純從效率上來講HAProxy更會(huì)比Nginx有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于Nginx的; 5、HAProxy可以對(duì)Mysql讀進(jìn)行負(fù)載均衡,對(duì)后端的MySQL節(jié)點(diǎn)進(jìn)行檢測和負(fù)載均衡; 0x03.關(guān)于Redis緩存方案緩存分為服務(wù)器緩存和應(yīng)用程序緩存。 關(guān)于應(yīng)用程序內(nèi)緩存,已經(jīng)在Jue后臺(tái)框架里面做了模塊處理了。 關(guān)于服務(wù)器緩存,主要緩存服務(wù)器文件,減少服務(wù)器和php交互,減少均衡負(fù)載服務(wù)器和應(yīng)用程序服務(wù)器交互。 緩存里面有一種典型的memcached,現(xiàn)在用的多的是redis輕量級(jí)緩存方案。 關(guān)于memcached與redis,看這篇 《Memcached vs Redis?》 Redis主要將數(shù)據(jù)存儲(chǔ)在各種格式:列表,數(shù)組,集合和排序集,一次能接受多個(gè)命令,阻塞讀寫,等待直到另一個(gè)進(jìn)程將數(shù)據(jù)寫入高速緩存。 一篇關(guān)于Reids緩存方案。《高可用、開源的Redis緩存集群方案》 0x04.關(guān)于搜索引擎Sphinx方案(第一期不做,后期需求時(shí)候考慮) Sphinx是俄羅斯人開發(fā)的,號(hào)稱是很吊啦,千萬級(jí)數(shù)據(jù)檢索,每秒10MB/s,搭過環(huán)境。 Sphinx和MySQL是基于數(shù)據(jù)庫的全文引擎,創(chuàng)建索引是B+樹和hash key-value的方式。 原理類似于用底層C檢索MySQL,然后弄出一個(gè)sphinx.conf配置文件,索引與搜索均以這個(gè)文件為依據(jù)進(jìn)行,要進(jìn)行全文檢索,首先就要配置好sphinx.conf,告訴sphinx哪些字段需要進(jìn)行索引,哪些字段需要在where,orderby,groupby中用到。 0x05.關(guān)于NoSQL快速存儲(chǔ)方案NoSQL在這里的使用價(jià)值是處理一些瑣事,比如用戶個(gè)人網(wǎng)站的一些css值,height,width,color等等的小而繁多的數(shù)據(jù),采用NoSQL旨在提升數(shù)據(jù)庫速度,減少對(duì)MySQL的SELECT請(qǐng)求。 關(guān)于NoSQL的方案很多了,選一個(gè)簡單的MongDB好了。 0x06.關(guān)于分布式MySQL方案(做分布式MySQL還沒嘗試過,初期也不清楚mysql所需要的壓力,所以第一期不打算做分布式MySQL) 《標(biāo)準(zhǔn)MySQL數(shù)據(jù)庫外的5個(gè)開源兼容方案》 0x07.分布式集群方案綜合起來,大致就是如下模型,初探分布式架構(gòu),很多模塊將就形勢做調(diào)整,時(shí)時(shí)更新中,待續(xù)。。。 本文出自 夏日小草,轉(zhuǎn)載請(qǐng)注明出處:http:///2014/12/10/think-about-distributed-clusters/-by小草 2014-12-10 23:27:01 |
|
|