分布式服務器集群架構方案思考

jopen 10年前發布 | 62K 次閱讀 分布式 集群/負載均衡

分布式服務器集群架構方案思考
nginx-reverse-proxy-conf

 

研究了一套完整的分布式服務器集群架構方案。

 



0x01.大型網站演化

簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

集群主要分為:高可用集群(High Availability Cluster),負載均衡集群(Load Balance Cluster,nginx即可實現),科學計算集群(High Performance Computing Cluster)。

分布式是指將不同的業務分布在不同的地方;而集群指的是將幾臺服務器集中在一起,實現同一業務。分布式中的每一個節點,都可以做集群。 而集群并不一定就是分布式的。

之前在網上看到一篇關于大型網站演化的博客。http://www.cnblogs.com/leefreeman/p/3993449.html

每個大型網站都會有不同的架構模式,而架構內容也就是在處理均衡負載,緩存,數據庫,文件系統等,只是在不同的環境下,不同的條件下,架構的模型不一樣,目的旨在提高網站的性能。

最初的架構只有應用程序,數據庫,文件服務。

分布式服務器集群架構方案思考應用程序、數據庫、文件服務架構

 

到后來,分布式服務、集群架設。

分布式服務器集群架構方案思考分布式服務器集群

 



0x02.關于均衡負載方案

在上一篇,《Nginx反向代理實現均衡負載》討論過過的nginx現實均衡負載方案,這里選擇另一種HAProxy+Keepalived雙機高可用均衡負載方案。

HAProxy是免費、極速且可靠的用于為TCP和基于HTTP應用程序提供高可用、負載均衡和代理服務的解決方案,尤其適用于高負載且需要持久連接或7層處理機制的web站點。

不論是Haproxy還是Keepalived甚至是上游服務器均提高生產力并增強可用性,也就是如下架構中Haproxy,Keepalived,Httpd服務器任意宕機一臺服務還是可以正常運行的。

HAProxy的優點:

1、HAProxy是支持虛擬主機的,可以工作在4、7層(支持多網段);

2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作;

3、支持url檢測后端的服務器;

4、本身僅僅就只是一款負載均衡軟件;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的;

5、HAProxy可以對Mysql讀進行負載均衡,對后端的MySQL節點進行檢測和負載均衡;

分布式服務器集群架構方案思考HAProxy+Keepalive 均衡負載方案

 



0x03.關于Redis緩存方案

緩存分為服務器緩存和應用程序緩存。

關于應用程序內緩存,已經在Jue后臺框架里面做了模塊處理了。

關于服務器緩存,主要緩存服務器文件,減少服務器和php交互,減少均衡負載服務器和應用程序服務器交互。

緩存里面有一種典型的memcached,現在用的多的是redis輕量級緩存方案。

關于memcached與redis,看這篇 《Memcached vs Redis?》

Redis主要將數據存儲在各種格式:列表,數組,集合和排序集,一次能接受多個命令,阻塞讀寫,等待直到另一個進程將數據寫入高速緩存。

分布式服務器集群架構方案思考Redis Cache 方案

 

一篇關于Reids緩存方案。《高可用、開源的Redis緩存集群方案》

 



0x04.關于搜索引擎Sphinx方案

(第一期不做,后期需求時候考慮)**

Sphinx是俄羅斯人開發的,號稱是很吊啦,千萬級數據檢索,每秒10MB/s,搭過環境。

Sphinx和MySQL是基于數據庫的全文引擎,創建索引是B+樹和hash key-value的方式。

原理類似于用底層C檢索MySQL,然后弄出一個sphinx.conf配置文件,索引與搜索均以這個文件為依據進行,要進行全文檢索,首先就要配 置好sphinx.conf,告訴sphinx哪些字段需要進行索引,哪些字段需要在where,orderby,groupby中用到。

Sphinx中文

 



0x05.關于NoSQL快速存儲方案

NoSQL在這里的使用價值是處理一些瑣事,比如用戶個人網站的一些css值,height,width,color等等的小而繁多的數據,采用NoSQL旨在提升數據庫速度,減少對MySQL的SELECT請求。

關于NoSQL的方案很多了,選一個簡單的MongDB好了。

 



0x06.關于分布式MySQL方案

(做分布式MySQL還沒嘗試過,初期也不清楚mysql所需要的壓力,所以第一期不打算做分布式MySQL)

《標準MySQL數據庫外的5個開源兼容方案》

 



0x07.分布式集群方案

綜合起來,大致就是如下模型,初探分布式架構,還有很多要修改的,待續,時時更新中。。。

分布式服務器集群架構方案思考一個網站架構

 



本文出自 夏日小草,轉載請注明出處:http://homeway.me/2014/12/10/think-about-distributed-clusters/
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!