負載均衡,分散式,集群的理解,多台伺服器代碼如何同步

来源:https://www.cnblogs.com/it-3327/archive/2019/10/26/11745836.html
-Advertisement-
Play Games

集群 我們的項目如果跑在一臺機器上,如果這台機器出現故障的話,或者用戶請求量比較高,一臺機器支撐不住的話。我們的網站可能就訪問不了。那怎麼解決呢?就需要使用多台機器,部署一樣的程式,讓幾個機器同時的運行我們的網站。那怎麼怎麼分發請求的我們的所有機器上。所以負載均衡的概念就出現了。 負載均衡 負載均衡 ...


集群

我們的項目如果跑在一臺機器上,如果這台機器出現故障的話,或者用戶請求量比較高,一臺機器支撐不住的話。我們的網站可能就訪問不了。那怎麼解決呢?就需要使用多台機器,部署一樣的程式,讓幾個機器同時的運行我們的網站。那怎麼怎麼分發請求的我們的所有機器上。所以負載均衡的概念就出現了。

負載均衡

負載均衡是指基於反向代理能將現在所有的請求根據指定的策略演算法,分發到不同的伺服器上。常用實現負載均衡的可以用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 選項被啟用,並且當前請求周期內執行過 「寫」 操作,那麼任何 「讀」 操作都將使用 「寫」 連接。這樣可確保同一個請求周期內寫入的數據可以被立即讀取到,從而避免主從延遲導致數據不一致的問題。不過是否啟用它,取決於應用程式的需求。

如果我們的代碼怎麼同步到多台伺服器上呢?

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到遠程的伺服器上。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、Java 反射技術 Java反射技術應用廣泛,它能夠配置:類的全限定名、方法和參數,完成對象的初始化,甚至是反射某些方法。這樣可以大大增強Java的可配置性,如Spring IoC 的基本原理也是反射,當然Spring IoC 的代碼要復炸得多,還有其他的技術結合。 Java 的反射內容繁多, ...
  • 2019-10-26-22:40:09 目錄: 1.多態的概念 2.多態的分類 3.實現多態的三個必要條件 4.多態的格式 5.多態成員變數的使用特點 6.多態成員方法的使用特點 7.多態的好處 8.多態的向上和向下轉型 1.多態的概念: 多態性是面向對象編程的又一個重要特征,它是指在父類中定義的屬 ...
  • 一、Java語言中假設一個類沒有顯式的繼承任何類,那麼該類預設繼承Java SE庫中提供的java.lang.Object類 1.快捷鍵:Ctrl + shift + T:可以在Myeclipse中查找類 2.快捷鍵:Ctrl + shift + R:可以在Myeclipse中查找資源 繼承類舉例: ...
  • title: 【學習】深入理解JVM之類載入.mddate: 2019-10-20 22:20:06tags: JVM 類載入 Java類的載入,連接,初始化都是在程式運行期間執行的 ## Java 虛擬機與程式的生命周期 1. 執行 System.exit()方法2. 程式正常結束3. 遇到異常或 ...
  • 解決方案:IntelliJ IDEA安裝lombok插件可以解決以上問題 。步驟:1.找到IDEA 上方的菜單欄 點擊File =>Settings,或者按快捷鍵Ctrl+Alt+S。 2.如圖所示,搜索Plugins 3.在彈出的框中,找到如圖相應的插件,點擊安裝,重新啟動即可解決問題 原文鏈接: ...
  • 恢復內容開始 素描作為一種近乎完美的表現手法有其獨特的魅力,隨著數字技術的發展,素描早已不再是專業繪畫師的專利,今天這篇文章就來講一講如何使用python批量獲取小姐姐素描畫像。文章共分兩部分: 第一部分介紹兩種使用python生成素描畫的思路 第二部分介紹如何批量獲取素描畫 第一部分介紹兩種使用p ...
  • 先說面向過程 面向過程主要考慮的是怎麼做 把完成摸個需求的 所有步驟 從頭到尾 逐步實現 根據開發需求,將某些功能獨立的代碼封裝成一個又一個的函數 最後完成的代碼就是順序的調用不同的函數. 特點是: 註重不准走與過程,不註重職責分工. 如果需求複雜,代碼會變的很複雜 開發複雜項目,沒有固定套路,開發 ...
  • 操作系統 : windowns10_x64Python版本:3.6.8virtualenv版本:16.7.7virtualenvwrapper版本:1.2.5 方式一:直接使用virtualenv 1、安裝pip install virtualenv 2、創建虛擬環境virtualenv -p d: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...