集群
我們的專案如果跑在一臺機器上,如果這臺機器出現故障的話,或者用戶請求量比較高,一臺機器支撐不住的話,我們的網站可能就訪問不了,那怎么解決呢?就需要使用多臺機器,部署一樣的程式,讓幾個機器同時的運行我們的網站,那怎么怎么分發請求的我們的所有機器上,所以負載均衡的概念就出現了,
負載均衡
負載均衡是指基于反向代理能將現在所有的請求根據指定的策略演算法,分發到不同的服務器上,常用實作負載均衡的可以用nginx,lvs,但是現在也有個問題,如果負載均衡服務器出現問題了怎么辦?所有冗余的概念就出現了,
冗余
冗余其實就是兩個或者多臺服務器 一個主服務器,一個從服務器, 假設一個主服務器的負載均衡服務器出現了問題,從服務器能夠替代主服務器來繼續負載均衡,實作的方式就是使用keepalive來搶占虛擬主機,
分布式
分布式其實就是將一個大專案的拆分出來,單獨運行,
舉個上面的例子,假設我們的訪問量特別大,我們就可以做成分布式,跟cdn一樣的機制,在北京,杭州,深圳三個地方都搭建一個一模一樣的集群,離北京近的用戶就訪問北京的集群,離深圳近的就訪問深圳這邊的集群,這樣就將我們網戰給拆分3個區域了,各自獨立,
再舉個例子比如我們redis分布式,redis分布式是將redis中的資料分布到不同的服務器上面,每臺服務器存盤不同的內容,而mysql集群是每臺服務器都放著一樣的資料,這也就理解了分布式和集群的概念,
mysql 主從
mysql master服務器會把sql操作日志寫入到bin.log 日志里 slave服務器會去讀master的bin.log 日志,然后執行sql陳述句,
主從有以下幾個問題,
1.master服務器能寫又能讀,slave卻只能寫,
slave讀取的資料還沒有寫入,這樣該怎么解決呢?
1.假如快取,從快取中讀取,
2.強制從master讀取,
3.使用pxc集群,任何一個節點都是可讀可寫的,讀寫強一致性,
laravel如何解決資料不一致
在config/database.php mysql配置塊中將sticky設定為true
sticky 是一個 可選值,它可用于立即讀取在當前請求周期內已寫入資料庫的記錄,若 sticky 選項被啟用,并且當前請求周期內執行過 「寫」 操作,那么任何 「讀」 操作都將使用 「寫」 連接,這樣可確保同一個請求周期內寫入的資料可以被立即讀取到,從而避免主從延遲導致資料不一致的問題,不過是否啟用它,取決于應用程式的需求,


鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取碼:x2p5
免費分享,但是X度限制嚴重,如若鏈接失效點擊鏈接或搜索加群 群號518475424,
如果我們的代碼怎么同步到多臺服務器上呢?
laravel為我們提供了擴展包laravel/envoy,它為定義遠程服務器的日常任務,提供了一套簡潔、輕量的語法,Blade 風格語法即可實作部署任務的配置、Artisan 命令的執行等,
composer global require laravel/envoy
Envoy 任務都應在專案根目錄下的 Envoy.blade.php 中定義,寫入一下內容
@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])
@task('deploy', ['on' => ['web-1', 'web-2']])
cd site
git pull origin {{ $branch }}
composer update
php artisan migrate
@endtask
以上代碼意思就是在命令列envoy run deploy時候,我們會ssh到會web-1,web-2 執行
cd site
git pull origin {{ $branch }}
php artisan migrate
當然這個前提是我們已經加入了ssh到遠程的服務器上,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125432.html
標籤:PHP
