如何安裝和使用Beanstalkd工作隊列

2020-12-16 51CTO

介紹

小心翼翼地宣布每一元素的職責部署應用程式棧帶來很多好處,包括簡單的診斷問題時發生,規模迅速的能力,以及更清晰的管理範圍涉及的組件。

在當今世界web服務的工程,一個關鍵的組件實現上述場景涉及利用消息隊列和工作(或任務)。這些通常是彈性和靈活的應用程式很容易實現和設置。他們是完美的分裂的不同部分之間的業務邏輯應用程式包時生產。

在這篇文章中,我們的應用程式級別系列通信解決方案,我們將看看Beanstalkd創建這個片段的分離。

什麼是Beanstalkd

Beanstalkd首先是解決了一個流行的web應用程式的需求(Facebook上的原因)。目前,這是一個絕對可靠,易於安裝的消息傳遞服務,是完美的開始和使用。

如前所述,Beanstalkd的主要用例是管理不同部分和工人之間的工作流應用程式的部署通過工作隊列和消息堆棧,類似於其他受歡迎的解決方案,比如RabbitMQ。然而,創建Beanstalkd使它有別於其他工作。

自成立以來,與其他解決方案,Beanstalkd旨在成為一個工作隊列,而不是一把雨傘工具來滿足許多需求。為了實現這一目的,它作為一種輕量級的、快速有效的應用程式基於C程式語言。精益建築還允許它是安裝和使用非常簡單,使它適合大多數用例。

Features(特性)

能夠監控工作返回ID,在創建返回,只有一個的特性使它有別於其他的Beanstalkd。提供一些其他有趣的功能是:

1.持久性—>Beanstalkd運行使用內存,但也提供了持久性支持。

2.優先級—>與大多數選擇一樣,Beanstalkd提供了不同的任務的優先級來處理緊急事情時需要。

3.分布 —->不同的伺服器實例可以分布類似於Memcached是如何工作的。

4.掩蓋 —-> 有可能通過掩蓋它無限期延期的作業(即任務)。

5.第三方工具—>Beanstalkd附帶各種第三方工具包括綜合領先指標和基於web的管理控制臺。

6.過期 —->工作可以設置為過期,auto-queue之後(TTR – Time To Run).

Beanstalkd使用案例

一些模範的Banstalkd用例:

允許web伺服器快速響應請求,而不是被迫當場曾推高程序執行

在指定的時間間隔執行某些工作(即爬行web)

分發到多個工作人員進行處理

讓離線客戶端(例如一個斷開連接的用戶)獲取數據在稍後的時間,而不是讓它永久失去了通過一個工人

引入完全異步功能的後端系統

訂購和優先任務

應用程式負載不同員工之間保持平衡

極大地提高應用程式的可靠性和正常運行時間

處理CPU密集型工作(視頻、圖片等)

發送電子郵件到您的列表和更多。

Beanstalkd元素

就像大多數應用程式,Beanstalkd附帶自己的術語來解釋它的部分。

Tubes / Queues

Beanstalkd管翻譯從其他消息傳遞應用程式隊列。他們是通過工作(或消息)轉移到消費者(即工人)。

Jobs / Messages

由於Beanstalkd是一個工作隊列,通過管稱為轉移工作是什麼——類似於所發送的消息。

Producers / Senders

生產商,類似於高級消息隊列協議的定義,是應用程式創建和發送工作(或消息)。他們正在使用的消費者。

Consumers / Receivers

接收器是不同的應用程式的堆棧從管找份工作,由生產者進行處理。

在Ubuntu 13安裝Beanstalkd

可以很簡單獲得Beanstalkd通過包管理器才能和開始。然而,在幾個命令,您還可以從源下載並安裝它。

注意:我們將執行安裝和執行行動列在這裡的新鮮和新創建的液滴由於各種原因。如果你是積極服務客戶,可能會修改您的系統,不要打破任何工作和不運行在問題,強烈建議您試著在一個新系統下面的說明。

使用aptitude安裝:

下載並安裝Beanstalkd運行以下命令:

  1. aptitude install -y beanstalkd 

編輯默認配置文件讓隨著系統啟動

  1. vim /etc/default/beanstalkd 

打開文件後,向下滾動並找到底部線#開始= yes。將其更改為:

  1. START=yes 

下面介紹源碼安裝

我們需要從原始碼安裝過程的一個關鍵工具- Git。

運行以下獲取Git在你系統上:

  1. aptitude install -y git 

下載必要的開發工具軟體包:

  1. aptitude install -y build-essential 

使用Git克隆(下載)官方庫:

  1. git clone https://github.com/kr/beanstalkd 

進入到下載目錄:

  1. cd beanstalkd 

從原始碼構建應用程式:

  1. make 

安裝:

  1. make install 

再介紹一下centos下源碼安裝:

  1. 下載地址: 
  2.   
  3. wget   http://cloud.github.com/downloads/kr/beanstalkd/beanstalkd-1.4.6.tar.gz 
  4.   
  5. 解壓: 
  6.   
  7. tar xzf beanstalkd-1.4.6.tar.gz 
  8.   
  9. cd beanstalkd-1.4.6 
  10.   
  11. /configure 
  12.  
  13. make 
  14.   
  15. make install 
  16.   
  17. 默認安裝路徑 :/usr/local/bin/ 
  18.   
  19. 查看版本: 
  20.   
  21. /usr/local/bin/beanstalkd -v 
  22.   
  23. 1.4.6 

再附加一個啟動腳本,從Fedora下挖來的 startup 腳本:

  1. #!/bin/sh 
  2. # beanstalkd - a simple, fast workqueue service 
  3. # chkconfig:   - 57 47 
  4. # description: a simple, fast workqueue service 
  5. # processname:  beanstalkd 
  6. # config:       /etc/sysconfig/beanstalkd 
  7. #              
  8.   
  9. ### BEGIN INIT INFO 
  10. # Provides: beanstalkd 
  11. # Required-Start: $local_fs $network $remote_fs 
  12. # Required-Stop: $local_fs $network $remote_fs 
  13. # Default-Stop: 0 1 2 6 
  14. # Short-Description: start and stop beanstalkd 
  15. # Description: a simple, fast work-queue service 
  16. ### END INIT INFO 
  17.   
  18. # Source function library. 
  19. /etc/rc.d/init.d/functions 
  20.   
  21. # Source networking configuration. 
  22. /etc/sysconfig/network 
  23.   
  24. # Check that networking is up. 
  25. [ "$NETWORKING" = "no" ] && exit 
  26. exec="/usr/local/bin/beanstalkd" 
  27. prog=$(basename $exec) 
  28.  
  29. # default options, overruled by items in sysconfig 
  30. BEANSTALKD_ADDR=127.0.0.1 
  31. BEANSTALKD_PORT=11300 
  32. BEANSTALKD_USER=beanstalkd 
  33.   
  34. [ -e /etc/sysconfig/beanstalkd ] && . /etc/sysconfig/beanstalkd 
  35.   
  36. lockfile=/var/lock/subsys/beanstalkd 
  37.  
  38. start() { 
  39. [ -x $exec ] || exit 5 
  40. echo -n $"Starting $prog: " 
  41. # if not running, start it up here, usually something like "daemon $exec" 
  42. options="-l ${BEANSTALKD_ADDR} -p ${BEANSTALKD_PORT} -u ${BEANSTALKD_USER}" 
  43. if [ "${BEANSTALKD_MAX_JOB_SIZE}" != ""  ]; then 
  44. options="${options} -z ${BEANSTALKD_MAX_JOB_SIZE}" 
  45. fi 
  46.  
  47. if [ "${BEANSTALKD_BINLOG_DIR}" != "" ]; then 
  48. if [ ! -d "${BEANSTALKD_BINLOG_DIR}" ]; then 
  49. echo "Creating binlog directory (${BEANSTALKD_BINLOG_DIR})" 
  50. mkdir -p ${BEANSTALKD_BINLOG_DIR} && chown ${BEANSTALKD_USER}:${BEANSTALKD_USER} ${BEANSTALKD_BINLOG_DIR} 
  51. fi 
  52. options="${options} -b ${BEANSTALKD_BINLOG_DIR}" 
  53. if [ "${BEANSTALKD_BINLOG_FSYNC_PERIOD}" != "" ]; then 
  54. options="${options} -f ${BEANSTALKD_BINLOG_FSYNC_PERIOD}" 
  55. else 
  56. options="${options} -F" 
  57. fi 
  58. if [ "${BEANSTALKD_BINLOG_SIZE}" != "" ]; then 
  59. options="${options} -s ${BEANSTALKD_BINLOG_SIZE}" 
  60. fi 
  61. fi 
  62.  
  63. daemon $exec -d $options 
  64. retval=$? 
  65. echo 
  66. [ $retval -eq 0 ] && touch $lockfile 
  67. return $retval 
  68.   
  69. stop() { 
  70. echo -n $"Stopping $prog: " 
  71. # stop it here, often "killproc $prog" 
  72. killproc $prog -INT 
  73. retval=$? 
  74. echo 
  75. [ $retval -eq 0 ] && rm -f $lockfile 
  76. return $retval 
  77.   
  78. restart() { 
  79. stop 
  80. start 
  81.   
  82. reload() { 
  83. restart 
  84.   
  85. force_reload() { 
  86. restart 
  87.   
  88. rh_status() { 
  89. # run checks to determine if the service is running or use generic status 
  90. status $prog 
  91.   
  92. rh_status_q() { 
  93. rh_status >/dev/null 2>&1 
  94.  
  95.  
  96. case "$1" in 
  97. start) 
  98. rh_status_q && exit 0 
  99. $1 
  100. ;; 
  101. stop) 
  102. rh_status_q || exit 0 
  103. $1 
  104. ;; 
  105. restart) 
  106.  $1 
  107. ;; 
  108. reload) 
  109. rh_status_q || exit 7 
  110. $1 
  111. ;; 
  112. force-reload) 
  113. force_reload 
  114. ;; 
  115. status) 
  116. rh_status 
  117. ;; 
  118. condrestart|try-restart) 
  119. rh_status_q || exit 0 
  120. restart 
  121. ;; 
  122. *) 
  123. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" 
  124. exit 2 
  125. esac 
  126. exit $? 

使用Beanstalkd

在安裝之後,您就可以開始使用Beanstalkd伺服器。以下是運行守護進程的選項:

  1. -b DIR   wal directory 
  2. -f MS    fsync at most once every MS milliseconds (use -f0 for "always fsync") 
  3. -F       never fsync (default) 
  4. -l ADDR  listen on address (default is 0.0.0.0) 
  5. -p PORT  listen on port (default is 11300) 
  6. -u USER  become user and group 
  7. -z BYTES set the maximum job size in bytes (default is 65535) 
  8. -s BYTES set the size of each wal file (default is 10485760) 
  9. (will be rounded up to a multiple of 512 bytes) 
  10. -c       compact the binlog (default) 
  11. -n       do not compact the binlog 
  12. -v       show version information 
  13. -V       increase verbosity 
  14. -h       show this help 

使用例子:

  1. # Usage: beanstalkd -l [ip address] -p [port #] 
  2. # For local only access: 
  3. beanstalkd -l 127.0.0.1 -p 11301 & 

管理服務:

如果安裝包管理器(i.e. aptitude),你將能夠管理Beanstalkd作為服務守護進程。

  1. # To start the service: 
  2. service beanstalkd start 
  3.   
  4. # To stop the service: 
  5. service beanstalkd stop 
  6.   
  7. # To restart the service: 
  8. service beanstalkd restart 
  9.   
  10. # To check the status: 
  11. service beanstalkd status 

獲得Beanstalkd客戶端庫

Beanstalkd配有一長串的支持客戶端庫來處理許多不同的應用程式部署。這個列表的支持語言和框架,包括:

●Python

●Django

●Go

●Java

●Node.js

●Perl

●PHP

●Ruby

●and more.

查看完整列表支持,尋找你最喜歡的語言和安裝說明,查看客戶端庫頁面Beanstalkd Github上。

使用Beanstalkd

在本節之前,完成這篇文章,讓我們快速Beanstalkd的基本用法。在我們的示例中,我們將使用Python語言和Beanstald Python bindings ——beanstalkc。

安裝beanstalkc,運行以下命令:

  1. pip install pyyaml 
  2. pip install beanstalkc 

基本操作

在所有Python文件你想處理Beanstalkd時,需要導入beanstalkc並連接:

  1. import beanstalkc 
  2.   
  3. # Connection 
  4. beanstalk = beanstalkc.Connection(host='localhost'port=11301

To enqueue a job:

  1. beanstalk.put('job_one') 

To receive a job:

  1. job = beanstalk.reserve() 
  2. job.body == 'job_one' 

To delete a job after processing it:

  1. job.delete() 

To use a specific tube (i.e. queue / list):

  1. beanstalk.use('tube_a') 

To list all available tubes:

  1. beanstalk.tubes() 
  2. # ['default', 'tube_a'] 

Final example (nano btc_ex.py):

  1. import beanstalkc 
  2.   
  3. # Connect 
  4. beanstalk = beanstalkc.Connection(host='localhost'port=11301
  5.   
  6. # See all tubes: 
  7. beanstalk.tubes() 
  8.  
  9. # Switch to the default (tube): 
  10. beanstalk.use('default') 
  11.   
  12. # To enqueue a job: 
  13. beanstalk.put('job_one') 
  14.   
  15. # To receive a job: 
  16. job = beanstalk.reserve() 
  17.  
  18. # Work with the job: 
  19. print job.body 
  20.   
  21. # Delete the job:  
  22. job.delete() 

當您運行上面的腳本時,您應該會看到工作的主體被列印:

  1. python btc_ex.py 
  2. # job_one 

看到更多關於beanstalkd(beanstalkc)操作,查看它的入門教程–>http://beanstalkc.readthedocs.org/en/latest/tutorial.html

【責任編輯:

守望幸福

TEL:(010)68476606】

點讚 0

相關焦點

  • 一日一技:Python隊列:FIFO 和 LIFO
    >Python隊列如何工作?Python隊列安裝在python中使用隊列非常容易。 以下是使用隊列的步驟。步驟1)導入隊列模塊,如下所示:import queue默認情況下,該模塊可用於python,並且不需要任何其他安裝即可開始使用隊列。 隊列FIFO有2種類型(先進先出)和LIFO(先進先出)。
  • linux kernel工作隊列及源碼詳細講解
    )/** initialize all of a work-struct:*/// 初始化工作結構, 和__WORK_INITIALIZER功能相同,不過__WORK_INITIALIZER用在// 參數初始化定義, 而該宏用在程序之中對工作結構賦值#define INIT_WORK(_work, _func, _data)do {INIT_LIST_HEAD
  • 消息隊列的使用場景是什麼樣的?
    2.可靠消息組件,即 MsgBroker,負責接收發布者發送的消息,根據消息類型和訂閱關係將消息分發投遞到一個或多個消息訂閱者。整個過程涉及消息類型校驗、消息持久化存儲、訂閱關係匹配、消息投遞和消息恢復等核心功能。3.消息訂閱者,指訂閱消息的應用系統,一個應用系統可以訂閱一種或者多種消息類型,消息訂閱者收到的消息來自可靠消息組件 (MsgBroker)。
  • 榻榻米的使用場景和安裝準備工作
    當榻榻米成為國內的時尚潮流,很多人都想將自己的家變得與眾不同,榻榻米也受到了更多年輕人的喜愛,榻榻米也在加快適應中國市場,自然會得到更多的關注,那麼榻榻米的使用場景和安裝準備工作是怎麼樣的,小編帶著大家來一起解鎖榻榻米的不同新玩法。
  • Anaconda如何下載及安裝 Anaconda使用安裝教程
    該詞翻譯過來是蟒蛇,相比單純使用python,其不局限於某一版本,而是可以配置多種環境,如即有2.7版,也可繼續裝3.3版;且內置了更多庫連結,需要時檢索,即可自動下載安裝,不需自己找到合適的安裝文件,在配置環境,安裝等;且支持多種電腦系統,如常見windows以及mac,還支持更多Linux等。
  • 暖氣片加溼器自製方法 暖氣片要如何安裝和使用呢
    大家可以看看暖氣片加溼器自製方法以及暖氣片要如何安裝和使用呢,掌握正確的使用方法之後,室內的溫度就可以根據自己的需要和要求來隨時調整。暖氣片加溼器自製方法準備可樂瓶,開長方形的口子,在瓶子上面穿上繩子,掛在暖氣片上面。材料很簡單,也就是一些可樂瓶子。
  • Pycharm上Git安裝和使用(程式設計師必備)
    個人認為,作為一名程式設計師,學會使用和利用好GitHub這個非常方便的工具非常必要,Git可以非常方便的上傳和下載你的代碼,特別作為初學者,你可以把平常練習的代碼和筆記統統放在GitHub上面,對你們找以後工作和程序調用非常有幫助。這是你的能力的證明和學習歷程的記錄。
  • Java中常用隊列的總結
    隊列是一種先進先出(FIFO)的抽象數據結構,在Java中,隊列使用了兩種數據類型來實現的,分別是:數組和鍊表這兩種數據結構。本文主要內容:回顧Java中常用的七個阻塞隊列進行總結及阻塞隊列中四組AP並進行總結。本文來源:本文是由凱哥Java(kaigejava)原創發布。
  • 《隊列和體操隊形》說課稿
    「如何闡述教學意圖」這些都是我們要解決的問題。接下來就以體操《隊列和體操隊形》為例,展示說課的「秘密」。開場:素質教育重視人的思想道德素質、能力培養、個性發展、身體健康和心理健康教育。根據這一教學理念,結合本節課的內容特點和學生的年齡特徵,本節課我將從教材分析,學情分析,教學目標等幾個方面加以說明。
  • Anaconda安裝和使用
    Anaconda是一個針對數據分析和科學計算免費發布Python的版本,它有自己的包管理器conda。這個版本包含超過200個Python包,使用起來非常方便。對於臨時用戶,Miniconda可能是一個更好的選擇,Miniconda包含了conda包管理器和Python。
  • 如何安裝投影機?這些是投影機安裝方法及使用技巧
    你知道投影機怎麼安裝嗎?早期投影機的損壞10%與安裝有關哦。所以安裝投影機是重中之重,那麼今天就給大家分享如何安裝投影機。一、投影機的安裝根據安裝方式的不同,投影儀可以分為桌式正投、吊頂正投、桌式背投、吊頂背投幾種。
  • 監視軟體安裝使用教程!如何遠程監控區域網電腦
    監視軟體如何遠程監控區域網電腦?目前許多公司辦公都依賴電腦,如果不在辦公室,無法及時在辦公室處理文件,還經常都需要設置電腦遠程來給別人處理一些問題,那麼我們在家如何進行辦公呢,其實方法有很多,例如藉助專業的監視軟體就是最高效的一種,超級眼監視軟體實現電腦遠程訪問很簡單,功能操作方便,是遠程辦公的利器。監視軟體安裝使用教程,其實很簡單,只需三步即可。
  • 如何安裝使用APP來保護手機安全?
    由於現在的手機內存比較大,手機上即使有這麼多的應用軟體還是沒有癱瘓,但是有一個非常大的問題就是,幾乎每個APP都是會提醒需要提供三個信息:手機位置,手機設備信息和應用程式信息,手機通訊錄和通話信息。有些APP會在安裝的時候提供你選擇是否願意提供這些信息,如果不同意的話依然可以安裝下去,但是使用的時候又會彈出這些信息選項,要求你同意,否則APP就無法使用。
  • 公司區域網監控如何安裝使用?有什麼功能?
    公司區域網監控它不只是監控公司區域網,還包含了公司區域網電腦的監控管理工作。這也是許多公司喜歡使用公司區域網監控軟體的緣故,那麼公司區域網監控軟體有什麼好的功能嗎?公司區域網監控軟體的功能主要是通過數據分析和軟體的管理來達到管控目的,公司區域網監控軟體主要是企業主用來監控員工電腦來對員工工作情況有詳細的了解,公司電腦監控軟體對企業主來說,是非常友好的。那麼,公司區域網監控如何安裝使用?有什麼功能?
  • 如何正確使用車衣 安裝細節很重要
    導讀:如何正確使用車衣 安裝細節很重要如何正確使用車衣 安裝細節很重要,車衣這東西估計大家都不陌生,不過經常用的人並不多,這其中有很大一部分原因是很多人不了解車衣的細節。今天小編就給大家分享一下汽車如何正確的使用車衣。
  • 青縣AE視頻特效培訓:AE插件Typemonkey如何安裝及如何使用?
    AE視頻特效學的差不多了,AE模板也會用了,AE插件是應該來了解一下了,不知大家有沒有看一個關於倒鴨子的搞笑視頻,那種文字混排效果就是我們今天要分享的AE插件TypeMonkey來製作的,今天青縣聖莉雅蘭網絡工作室青縣AE視頻特效培訓為大家分享AE插件Typemonkey如何安裝及如何使用
  • PS/LR全新圖像後期調色軟體Lunminar2018如何安裝使用
    文章將從下面幾方面展開Luminar 2018是什麼,Luminar 2018使用功能,Luminar 2018和PS/Lr相比哪個好用,Luminar 2018如何安裝和使用Luminar 2018是什麼Luminar
  • wacom數位板如何使用?wacom數位板驅動安裝教程!
    wacom數位板是大家板繪使用比較多的,但是對於初入板繪的同學,對於wacom數位板不知道如何使用,不會安裝驅動,下面我們就為大家講講:很多小夥伴們買了數位板接入電腦以後,打開軟體會發現沒有壓感,那是因為你的驅動並沒有安裝,所以今天小編給大家帶來一個數位板驅動安裝的詳細教程,希望可以幫助到各位初次購買板子的萌新們
  • Hadoop安裝部署
    集群運維複雜,需要安裝第三方軟體輔助。CDH是第三方公司Cloudera公司基於社區版本的基礎上做了一些優化和改進,穩定性更強一些。CDH分免費版和商業版。CDH安裝可以使用CM通過管理界面的方式來安裝,非常簡單。
  • 隊列訓練活動
    隊列訓練活動 2019-07-16 10:45 來源:澎湃新聞·澎湃號·政務