Cách cài đặt và sử dụng hàng đợi công việc Beanstalkd trên VPS
Việc khai báo cẩn thận các nhiệm vụ của từng và mọi phần tử của ngăn xếp triển khai ứng dụng mang lại rất nhiều lợi ích với nó, bao gồm chẩn đoán các vấn đề đơn giản hơn khi chúng xảy ra, khả năng mở rộng quy mô nhanh chóng, cũng như phạm vi quản lý rõ ràng hơn cho các thành phần liên quan .Trong thế giới kỹ thuật dịch vụ web ngày nay, một thành phần quan trọng để đạt được tình huống trên là sử dụng các hàng đợi nhắn tin và công việc (hoặc tác vụ). Những ứng dụng linh hoạt và linh hoạt này thường dễ triển khai và cài đặt . Chúng hoàn hảo để tách logic nghiệp vụ giữa các phần khác nhau của gói ứng dụng của bạn khi đưa vào production .
Trong bài viết DigitalOcean này, tiếp tục loạt bài của ta về các giải pháp giao tiếp cấp ứng dụng, ta sẽ xem xét Beanstalkd để tạo ra sự tách biệt này.
Beanstalkd
Beanstalkd lần đầu tiên được phát triển để giải quyết nhu cầu của một ứng dụng web phổ biến (Nguyên nhân trên Facebook). Hiện tại, đây là một dịch vụ nhắn tin hoàn toàn tin cậy , dễ cài đặt và hoàn hảo để bắt đầu sử dụng.
Như đã đề cập trước đó, trường hợp sử dụng chính của Beanstalkd là quản lý quy trình làm việc giữa các bộ phận và nhân viên khác nhau trong ngăn xếp triển khai ứng dụng của bạn thông qua hàng đợi công việc và tin nhắn, tương tự như các giải pháp phổ biến khác như RabbitMQ. Tuy nhiên, cách Beanstalkd được tạo ra để hoạt động khiến nó trở nên khác biệt với phần còn lại.
Kể từ khi thành lập, không giống như các giải pháp khác, Beanstalkd được thiết kế để trở thành một hàng đợi công việc chứ không phải là một công cụ ô tô để đáp ứng nhiều nhu cầu. Để đạt được mục đích này, nó được xây dựng như một ứng dụng nhẹ và hoạt động nhanh chóng dựa trên ngôn ngữ lập trình C. Kiến trúc tinh gọn của nó cũng cho phép nó được cài đặt và sử dụng rất đơn giản, làm cho nó hoàn hảo cho hầu hết các trường hợp sử dụng.
Đặc trưng
Có thể theo dõi các công việc bằng ID được trả lại, được trả lại khi tạo, chỉ là một trong những tính năng của Beanstalkd khiến nó trở nên khác biệt so với phần còn lại. Một số tính năng thú vị khác được cung cấp là:
Tính bền bỉ - Beanstalkd hoạt động trong bộ nhớ nhưng cũng cung cấp hỗ trợ tính bền bỉ.
Ưu tiên - không giống như hầu hết các lựa chọn thay thế, Beanstalkd cung cấp ưu tiên cho các nhiệm vụ khác nhau để xử lý những việc khẩn cấp khi cần thiết.
Phân phối - các version server khác nhau có thể được phân phối tương tự như cách hoạt động của Memcached.
Chôn cất - có thể trì hoãn vô thời hạn một công việc (tức là một nhiệm vụ) bằng cách chôn vùi nó.
Công cụ của bên thứ ba - Beanstalkd đi kèm với nhiều công cụ của bên thứ ba bao gồm CLI và console quản lý dựa trên web.
Hết hạn - công việc có thể được đặt thành hết hạn và tự động xếp hàng sau (TTR - Time To Run).
Ví dụ về trường hợp sử dụng Beanstalkd
Một số trường hợp sử dụng mẫu cho Banstalkd là:
Cho phép web server phản hồi các yêu cầu một cách nhanh chóng thay vì bị buộc phải thực hiện các quy trình tốn nhiều tài nguyên ngay tại chỗ
Thực hiện một số công việc nhất định trong những khoảng thời gian nhất định (tức là thu thập thông tin trên web)
Phân phối một công việc cho nhiều công nhân để xử lý
Cho phép client offline (ví dụ: user bị ngắt kết nối) tìm nạp dữ liệu sau đó thay vì mất dữ liệu vĩnh viễn thông qua nhân viên
Giới thiệu chức năng hoàn toàn không đồng bộ cho hệ thống backend
Sắp xếp thứ tự và ưu tiên nhiệm vụ
Cân bằng tải ứng dụng giữa các công nhân khác nhau
Tăng đáng kể độ tin cậy và thời gian hoạt động của ứng dụng của bạn
Xử lý các công việc chuyên sâu về CPU (video, hình ảnh, v.v.) sau này
Gửi e-mail đến danh sách của bạn
và nhiều hơn nữa.
Beanstalkd Elements
Cũng giống như hầu hết các ứng dụng, Beanstalkd đi kèm với biệt ngữ riêng để giải thích các bộ phận của nó.
Ống / Hàng đợi
Beanstalkd Tubes dịch sang hàng đợi từ các ứng dụng nhắn tin khác. Chúng thông qua nơi công việc (hoặc thông điệp) được chuyển đến người tiêu dùng (tức là người lao động).
Việc làm / Tin nhắn
Vì Beanstalkd là một “hàng đợi công việc”, những gì được chuyển qua các ống được gọi là công việc - tương tự như tin nhắn được gửi đi.
Người production / Người gửi
Nhà production , tương tự như định nghĩa của Giao thức xếp hàng thư nâng cao, là các ứng dụng tạo và gửi một công việc (hoặc một tin nhắn). Chúng sẽ được sử dụng bởi người tiêu dùng .
Người tiêu dùng / Người nhận
Máy thu là các ứng dụng khác nhau của ngăn xếp nhận công việc từ ống , do nhà production tạo ra để xử lý.
Cài đặt Beanstalkd trên Ubuntu 13
Nó có thể rất đơn giản lấy Beanstalkd thông qua gói quản lý aptitude
và bắt đầu. Tuy nhiên, trong một vài lệnh, bạn cũng có thể download và cài đặt nó từ nguồn.
Lưu ý: Ta sẽ thực hiện cài đặt của bạn và thực hiện các hành động được liệt kê ở đây trên một server mới và mới được tạo vì nhiều lý do. Nếu bạn đang tích cực phục vụ khách hàng và có thể đã sửa đổi hệ thống của bạn , để không làm hỏng bất kỳ thứ gì đang hoạt động và không gặp sự cố, bạn nên thử các hướng dẫn sau trên một hệ thống mới.
Cài đặt bằng aptitude
Chạy lệnh sau để download và cài đặt Beanstalkd:
aptitude install -y beanstalkd
Chỉnh sửa cấu hình mặc định bằng nano
để chạy khi khởi động hệ thống:
nano /etc/default/beanstalkd
Sau khi mở file , cuộn xuống dưới cùng và tìm dòng #START=yes
. Thay đổi nó thành:
START=yes
Nhấn CTRL + X và xác nhận với Y để lưu và thoát.
Để bắt đầu sử dụng ứng dụng, vui lòng chuyển sang phần tiếp theo hoặc theo dõi để biết cách cài đặt Beanstalkd từ nguồn.
Cài đặt từ Nguồn
Ta cần một công cụ quan trọng cho quá trình cài đặt từ nguồn - Git.
Chạy như sau để tải Git trên server của bạn:
aptitude install -y git
Download gói công cụ phát triển thiết yếu:
aptitude install -y build-essential
Sử dụng Git, hãy sao chép ( download ) repository chính thức:
git clone https://github.com/kr/beanstalkd
Nhập folder đã download :
cd beanstalkd
Xây dựng ứng dụng từ nguồn:
make
Tải về:
make install
Sử dụng Beanstalkd
Sau khi cài đặt, bạn có thể bắt đầu làm việc với server Beanstalkd. Dưới đây là các tùy chọn để chạy daemon:
-b DIR wal directory -f MS fsync at most once every MS milliseconds (use -f0 for "always fsync") -F never fsync (default) -l ADDR listen on address (default is 0.0.0.0) -p PORT listen on port (default is 11300) -u USER become user and group -z BYTES set the maximum job size in bytes (default is 65535) -s BYTES set the size of each wal file (default is 10485760) (will be rounded up to a multiple of 512 bytes) -c compact the binlog (default) -n do not compact the binlog -v show version information -V increase verbosity -h show this help
Cách sử dụng ví dụ:
# Usage: beanstalkd -l [ip address] -p [port #] # For local only access: beanstalkd -l 127.0.0.1 -p 11301 &
Quản lý Dịch vụ:
Nếu được cài đặt thông qua trình quản lý gói (tức là aptitude), bạn có thể quản lý daemon Beanstalkd như một dịch vụ.
# To start the service: service beanstalkd start # To stop the service: service beanstalkd stop # To restart the service: service beanstalkd restart # To check the status: service beanstalkd status
Lấy thư viện khách hàng Beanstalkd
Beanstalkd đi kèm với một danh sách dài các thư viện client hỗ trợ để làm việc với nhiều triển khai ứng dụng khác nhau. Danh sách các ngôn ngữ hỗ trợ - và các khuôn khổ - bao gồm:
Python
Django
Đi
Java
Node.js
Perl
PHP
Ruby
và nhiều hơn nữa.
Để có danh sách đầy đủ các ngôn ngữ hỗ trợ và hướng dẫn cài đặt mà bạn yêu thích, hãy xem trang thư viện ứng dụng client trên Github cho Beanstalkd.
Làm việc với Beanstalkd
Trong phần này - trước khi hoàn thành bài viết - ta hãy nhanh chóng đi qua cách sử dụng cơ bản của Beanstalkd. Trong các ví dụ của ta , ta sẽ làm việc với ngôn ngữ Python và các liên kết Python của Beanstald - beantalkc .
Để cài đặt beantalkc, hãy chạy các lệnh sau:
pip install pyyaml pip install beanstalkc
Hoạt động cơ bản
Trong tất cả các file Python của bạn mà bạn đang nghĩ đến việc làm việc với Beanstalkd, bạn cần nhập beantalkc và kết nối:
import beanstalkc # Connection beanstalk = beanstalkc.Connection(host='localhost', port=11301)
Để xếp hàng một công việc:
beanstalk.put('job_one')
Để nhận một công việc:
job = beanstalk.reserve() # job.body == 'job_one'
Để xóa một công việc sau khi xử lý nó:
job.delete()
Để sử dụng một ống cụ thể (tức là hàng đợi / danh sách):
beanstalk.use('tube_a')
Để liệt kê tất cả các ống có sẵn:
beanstalk.tubes() # ['default', 'tube_a']
Ví dụ cuối cùng ( nano btc_ex.py
):
import beanstalkc # Connect beanstalk = beanstalkc.Connection(host='localhost', port=11301) # See all tubes: beanstalk.tubes() # Switch to the default (tube): beanstalk.use('default') # To enqueue a job: beanstalk.put('job_one') # To receive a job: job = beanstalk.reserve() # Work with the job: print job.body # Delete the job: job.delete()
Nhấn CTRL + X và xác nhận với Y để lưu và thoát.
Khi bạn chạy tập lệnh trên, bạn sẽ thấy nội dung công việc được in:
python btc_ex.py # job_one
Để xem thêm về các hoạt động của beantalkd (và beantalkc), hãy xem hướng dẫn Bắt đầu .
<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>
Các tin liên quan