成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用 Gearman 實現(xiàn)系統(tǒng)錯誤報警功能

IntMain / 1377人閱讀

摘要:文件分發(fā)針對用戶上傳的文件,進行多臺服務器分發(fā)。系統(tǒng)報警當系統(tǒng)出現(xiàn)問題的時候,第一時間通知相關人。這篇文章主要講解系統(tǒng)報警場景在開發(fā)系統(tǒng)的過程中,往往程序會出現(xiàn)這樣,那樣的問題。所以,使用實現(xiàn)短信,郵件的異步發(fā)送。也可以用來實現(xiàn)上面的需求。

Gearman 是什么?

Gearman是一個用來把工作委派給其他機器、分布式的調用更適合做某項工作的機器、并發(fā)的做某項工作在多個調用間做負載均衡、或用來在調用其它語言的函數(shù)的系統(tǒng)。

Gearman 工作原理

Client(客戶端):創(chuàng)建一個Job。

Server(服務):找到合適的Worker,把 Job 交給 Worker。

Worker(工人):執(zhí)行Job。

Web 中常用的場景。

裁剪圖片,生成縮略圖。

文件分發(fā)(針對用戶上傳的文件,進行多臺服務器分發(fā))。

視頻轉碼(對上傳的視頻,進行轉碼存儲)。

系統(tǒng)報警(當系統(tǒng)出現(xiàn)問題的時候,第一時間通知相關人)。

這篇文章主要講解 系統(tǒng)報警 場景

在開發(fā)系統(tǒng)的過程中,往往程序會出現(xiàn)這樣,那樣的問題。

我們要第一時間獲取錯誤問題,通知短信,郵件通知給相關人員。

因為,短信、郵件的發(fā)送比較耗時,并發(fā)量大的情況下,會出現(xiàn)延時現(xiàn)象。

所以,使用 Gearman 實現(xiàn)短信,郵件的異步發(fā)送。

Gearman 安裝的兩種方式

方式一:官網(wǎng)推薦安裝方法

官網(wǎng)地址:http://gearman.org/getting-st...

yum install gearmand

方式二:自定義安裝

安裝libevent:

wget get https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz

tar zxvf libevent-2.0.22-stable.tar.gz

./configure --prefix=/usr

make && make install

安裝Gearman server and library:

wget get https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz

tar zxvf gearmand-1.1.12.tar.gz

cd gearmand-1.1.12

./configure

如果報錯:configure: error: could not find boost

yum install -y boost boost-devel

如果報錯:configure: error: could not find gperf

yum install gperf

如果報錯:configure: error: Unable to find libuuid

yum install libuuid-devel

make && make install

安裝成功后,執(zhí)行 gearmand -V 查詢版本號。

gearmand -d 開啟服務。

溫馨提示:
僅供參考,遇到不可預測的問題,請進行Google。

安裝Gearman PHP extension:

wget get http://pecl.php.net/get/gearman-1.1.2.tgz

tar zxvf gearman-1.1.2.tgz

cd gearman-1.1.2

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-gearman

如果報錯:configure: error: Please install libgearman

yum install -y libgearman-devel.x86_64

案例(系統(tǒng)報警)

開啟服務

gearmand -d

執(zhí)行Worker

php worker.php

client.php

addServer("127.0.0.1", 4730);
    $client->doNormal("send_mail", $strEmailInfo);
    if ($is_fatal_error == 1) {
        $client->doNormal("send_sms", $strSmsInfo);
    }
}

/**
 * 捕捉致命錯誤
 * @return string
 */
function fatalErrorHandler() {
    $e = error_get_last();
    switch ($e["type"]) {
        case 1:
            errorHandler($e["type"], $e["message"], $e["file"], $e["line"], 1);
            break;
    }
}

worker.php

addServer("127.0.0.1", 4730);
  $worker->addFunction("send_mail", "doSendMail");
  $worker->addFunction("send_sms", "doSendSms");
  while ($worker->work());

  /**
   * 執(zhí)行發(fā)送郵件的Job
   * @param $job
   * @return string
   */
  function doSendMail($job)
  {
    $strEmailInfo = $job->workload();

    /**
     * 在這個方法里完善發(fā)送郵件的操作
     * ......
     * Demo是把信息寫入到文件中
     */

    return file_put_contents("gearman.txt", $strEmailInfo."
", FILE_APPEND);
  }

  /**
   * 執(zhí)行發(fā)送短信的Job
   * @param $job
   * @return string
   */
  function doSendSms($job)
  {
    $strSmsInfo = $job->workload();

    /**
     * 在這個方法里完善發(fā)送短信的操作
     * ......
     * Demo是把信息寫入到文件中
     */

    return file_put_contents("gearman.txt", $strSmsInfo."
", FILE_APPEND);
  }

gearman.txt

【警告錯誤】
時間:2016-09-22 23:15:10
錯誤代碼:8
錯誤信息:Undefined variable: b
錯誤文件:/home/www/mi/gearman/client.php
錯誤行號:9

【致命錯誤】
時間:2016-09-22 23:15:10
錯誤代碼:1
錯誤信息:Class "Test" not found
錯誤文件:/home/www/mi/gearman/client.php
錯誤行號:12

[致命錯誤]錯誤代碼:1,錯誤信息:Class "Test" not found,錯誤文件:/home/www/mi/gearman/client.php

溫馨提示

也可以用 Redis Queue 來實現(xiàn)上面的需求。

也可以用 Swoole 來實現(xiàn)上面的需求。

也可以了解下 Gearman 與 Swoole 的區(qū)別。


Thanks ~

來源:https://zhuanlan.zhihu.com/p/...

AD:

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/30471.html

相關文章

  • Gearman的安裝和使用

    摘要:啟動和如下信息則表示成功查看版本安裝擴展從下載最新擴展需下載最新源碼包,并解壓縮安裝安裝成功后信息然后,配置文件增加內(nèi)容重啟后,出現(xiàn)如下信息則表示安裝擴展成功。 首發(fā)于 樊浩柏科學院 Gearman 是一個分布式任務分發(fā)系統(tǒng),通過程序調用(API,跨語言)分布式地把工作委派給更適合做某項工作的機器,且這些機器可以以并發(fā)的、負載均衡的形式來共同完成某項工作。當計算密集型場景時,適合在后...

    U2FsdGVkX1x 評論0 收藏0
  • JAVA通過Gearman實現(xiàn)MySQL到Redis的數(shù)據(jù)同步(異步復制)

    摘要:但是這需要對文件以及有非常深入的理解,同時由于存在多種形式,分析實現(xiàn)同步的工作量是非常大的。因此這里選擇了一種開發(fā)成本更加低廉的方式,借用已經(jīng)比較成熟的,將數(shù)據(jù)首先放入中,然后通過一個自己編寫的,將數(shù)據(jù)同步到。此類連接遠程的。 MySQL到Redis數(shù)據(jù)復制方案 無論MySQL還是Redis,自身都帶有數(shù)據(jù)同步的機制,像比較常用的 MySQL的Master/Slave模式 ,就是由Sl...

    doodlewind 評論0 收藏0
  • Gearman 使用小知識

    摘要:目前項目采用的是來實現(xiàn)異步任務。關于介紹通俗的來說是一個分發(fā)任務的程序框架使用的應用通常有三部分組成一個一個一個任務服務器。的作用是提出一個任務交給任務服務器。請求的調度者,用來負責協(xié)調把發(fā)出的請求轉發(fā)給合適的。 眾所周知,PHP要實現(xiàn)異步任務一般都是通過 Gearman Beanstalkd 等第三方來實現(xiàn)的。目前項目采用的是 Gearman 來實現(xiàn)異步任務。 關于Gearman介紹...

    ideaa 評論0 收藏0
  • 根因分析初探:一種報警聚類算法在業(yè)務系統(tǒng)的落地實施

    摘要:圍繞上面描述的問題,以及對于報警聚類處理的分析假設,本文主要做了以下事情選定聚類算法,簡單描述了算法的基本原理,并給出了針對報警日志聚類的一種具體的實現(xiàn)方案。算法選擇聚類算法采用論文中描述的根因分析算法。聚類算法算法的執(zhí)行,我們以圖來表示。 背景 眾所周知,日志是記錄應用程序運行狀態(tài)的一種重要工具,在業(yè)務服務中,日志更是十分重要。通常情況下,日志主要是記錄關鍵執(zhí)行點、程序執(zhí)行錯誤時的現(xiàn)...

    Loong_T 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<