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

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.分布式集群方案

綜合起來,大致就是如下模型,初探分布式架構,很多模塊將就形勢做調整,時時更新中,待續。。。

一個網站架構

轉載于:https://www.cnblogs.com/gxbk629/p/4832725.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287518.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287518.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287518.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

交互式 .Net 容器版

1背景介紹 在之前的文章 - 交互式 .Net 中已經介紹了什么是 交互式 .Net,文中是通過 Visual Studio Code 插件的方式實現 交互式 .Net 的。現在,我們將使用容器的方式實現 交互式 .Net。2鏡像構建 1. DockerfileFROM mcr.microsoft.com/dotn…

Java 集合練習——3

創建Map集合,創建Emp對象,并將創建的Emp對象添加到集合中,并將id為005的對象從集合中移除 創建Emp類: package jihe;public class Emp {private String id;public String getId() {return id;}public void setId(String id) {this…

[python opencv 計算機視覺零基礎到實戰] 十一找到圖片中指定內容

一、學習目標 了解圖片內容定位方法matchTemplate使用了解minMaxLoc方法使用 上一篇《[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃》 如有錯誤歡迎指出~ 二、了解從一張圖片中找到指定內容的方法 2.1 使用matchTemplate函數對圖片中的指定內容進行查找 有…

Linq 實現 DataTable 行轉列

前幾天寫了一篇sqlserver 行轉列,http://www.cnblogs.com/li-peng/archive/2012/02/01/2334973.html 由于工作需要,要把查出來的DataTable實現 行轉列, 正好這一陣子在用Linq 就做了一個行轉列的小例 子 轉換前的table: 轉換后的table: 代碼…

Android Studio之編譯提示\app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容

1 問題 Android Studio新建立的項目運行莫名其妙提示錯誤如下 app\src\main\res\values\colors.xml:1:1 Error:前言有不允許的內容 然后我把res目錄下面的colors.xml文件打開看如下 <?xml version"1.0" encoding"utf-8"?> <resources>&l…

python順序執行 toggle_編寫腳本在Python中運行多個腳本

我正在建一個鬧鐘項目。誰能告訴我如何編寫一個腳本來調用所有其他腳本嗎。例如&#xff0c;我在我的樹莓派上有三個腳本叫做LCDTESTFORPI.py&#xff0c;另一個叫做“ex 7”分段.py“還有一個叫”報警pi.py”. 我希望能夠運行一個名為“alarmpi”的腳本_初始py“它將運行所有其…

AndroidService 深度分析(2)

AndroidService 深度分析&#xff08;2&#xff09; 上一篇文章我們Service的生命周期進行了測試及總結。這篇文章我們介紹下綁定執行的Service的實現。 綁定執行的Service可能是僅為本應用提供服務&#xff0c;稱為本地Service。也可能為其它應用提供跨進程服務&#xff0c;即…

Hello Playwright:(3)基本概念

下面介紹一下 Playwright 中的基本概念&#xff1a;Headless 瀏覽器Playwright 需要特定版本的瀏覽器二進制文件才能運行。這些瀏覽器都支持 2 種 運行模式&#xff1a;Headless&#xff0c;無瀏覽器 UI&#xff0c;運行速度較快&#xff0c;常用于自動化運行Headed&#xff0c…

[python opencv 計算機視覺零基礎到實戰] 十二 直方圖

一、學習目標 了解matplotlib繪圖庫的使用了解如何通過折線圖或者直方圖對圖表進行繪制了解了通過圖標對圖片內容進行直觀判斷 如有錯誤歡迎指出~ 二、了解圖像直方圖及其應用 2.1 了解matplotlib庫 在了解圖像直方圖前我們需要了解一個matplotlib庫&#xff0c;matplotli…

建造者模式之項目運用

1 問題 建造者模式&#xff0c;我們也許不陌生&#xff0c;因為我們看到很多開源框架或者Android源碼里面用到&#xff0c;類似這樣的代碼結構 A a new A.builder().method1("111").method2("222").build(); 很明顯&#xff0c;一般這里的結構有builde…

專題三--1005

題目 A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks. If the monkey is clever enough, it shall be able to reach the …

shell中的數字

shell中的數字 author :headsen chen date :2017-10-18 15:01:42 個人原創&#xff0c;轉載請注明作者&#xff0c;出處&#xff0c;否則依法追究法律責任 1,生成隨機數&#xff08;范圍&#xff1a;0-32767&#xff09;&#xff0c;用特殊變量&#xff1a;RANDOM 2&#xff…

serviceloader java_【java編程】ServiceLoader使用看這一篇就夠了

轉載:https://www.jianshu.com/p/7601ba434ff4想必大家多多少少聽過spi&#xff0c;具體的解釋我就不多說了。但是它具體是怎么實現的呢&#xff1f;它的原理是什么呢&#xff1f;下面我就圍繞這兩個問題來解釋&#xff1a;實現: 其實具體的實現類就是java.util.ServiceLoader…

.NET7 Preview4 之OpenAPI swagger改進

在MiniAPI系列中&#xff0c;《.NET6之MiniAPI(十八)&#xff1a;OpenAPI swagger》介紹了swagger在MiniAPI框架中的使用&#xff0c;當時留下很多不足&#xff0c;隨著.NET7 Preview4的推出&#xff0c;這方面得到了很大的改進&#xff0c;我還是使用“十八”這篇文章的案例。…

Swift - 自定義單元格實現微信聊天界面

1&#xff0c;下面是一個放微信聊天界面的消息展示列表&#xff0c;實現的功能有&#xff1a; &#xff08;1&#xff09;消息可以是文本消息也可以是圖片消息&#xff08;2&#xff09;消息背景為氣泡狀圖片&#xff0c;同時消息氣泡可根據內容自適應大小&#xff08;3&#x…

[python opencv 計算機視覺零基礎到實戰] 十三 直方圖顏色提鮮

一、學習目標 了解了均衡化的作用是什么了解灰度、YUV、彩色圖片均衡化的方法是使用什么方法了解了合并通道的方法是什么了解了分離通道的方法是什么 如有錯誤歡迎指出~ 二、了解圖像均衡化 2.1 了解直方圖均衡化 圖像直方圖均衡化主要是對圖像中的少數灰度進行壓縮&#…

java 中字符串比較方法_java中常用的字符串的比較方法(兩種)

比較字符串比較常用的兩個方法是運算符“”和String的equals方法。使用“”比較兩個字符串&#xff0c;是比較兩個對象的的“地址”是否一致&#xff0c;本質就是判斷兩個變量是否指向同一個對象&#xff0c;如果是則返回true&#xff0c;否則返回的是false。而String類的equal…

Android之稍微靠譜點的透明Activity(不獲取觸摸事件)

1 問題 實現透明的Activity(不獲取觸摸事件),就行什么也看不到,打開了透明activity,也不影響其他頁面的滑動和點擊,就行什么事情都沒發生一樣。 2 代碼實現 1)配置樣式 <style name="TestTheme" parent="Theme.AppCompat.Light"><item na…