26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Beanstalk hızlı ve basit bir çalışma kuyruğu. E-posta gönderme, harici API'lere bağlanma veya görüntüleri işleme gibi zaman alıcı görevleri eşzamansız olarak çalıştırmanıza olanak tanır. Böylece, web uygulamanızın gecikmesini azaltabilirsiniz. Laravel, kullanıma hazır destek sağlar beanstalkd
.
Bu derste beanstalkd
, bir Laravel uygulaması kuracak , kuracak ve kuyruk çalışanlarını Süpervizör aracılığıyla yöneteceğiz . Demo uygulaması Vultr API'sinden kullanılabilir işletim sistemlerinin bir listesini alır ve rastgele birini seçer.
Sisteminizde zaten bir Yönetici yüklü olduğu varsayılmaktadır. Bunu yapmazsanız, Süpervizörün nasıl kurulacağı ile ilgili aşağıdaki öğreticiyi okumalısınız: Ubuntu 16.04 Üzerinde Süpervizörü Kurmak ve Konfigüre Etmek
Ayrıca Vultr örneğinize SSH erişiminiz olduğu varsayılır.
İlk adım, yüklemektir beanstalkd
.
sudo apt-get update
sudo apt-get install beanstalkd
Hizmeti başlatın.
sudo systemctl start beanstalkd
Hizmetin sistem başlatıldıktan sonra başlamasını da sağlayabilirsiniz.
sudo systemctl enable beanstalkd
Aşağıdaki komutu vererek servis durumunu kontrol edin.
sudo systemctl status beanstalkd
Varsayılan beanstalkd
olarak, bağlantı noktasını dinler 11300
. Beanstalk, github deposunda açıklanan basit bir metin tabanlı protokol kullanır . Protokolünü çalıştırarak test edebilirsiniz telnet
.
telnet localhost 11300
Aşağıdakileri yazın ve tuşuna basın ENTER.
list-tubes
Sunucuda bulunan tüplerin bir listesini görmelisiniz:
OK 14
---
- default
Bağlantıyı kapatmak için sadece quit
yazıp tuşuna basın ENTER.
Beanstalk'taki tüpler çalışma kuyruklarını temsil eder. Beanstalk temel olarak üreticiler , tüketiciler , işler ve tüplerden oluşur . Üreticiler, herhangi bir sayıda tüketici tarafından tüketilecek (işlenecek) bir tüpe iş koyarlar. Hem üreticilerin hem de tüketicilerin sadece Beanstalk sunucusunun müşterileri olduğunu ve birbirinden tamamen bağımsız olduklarını unutmayın. Pratik anlamda bu, Beanstalk kullanarak işlerinizi PHP uygulamanızda üretebileceğiniz ve örneğin bir NodeJS uygulamasında işleyebileceğiniz anlamına gelir. Neyse ki, Laravel tüm bunları özetler ve bize bir sonraki bölümde göreceğimiz gibi işleri göndermek ve işlemek için çok basit bir API sağlar.
Örnek projemizi oluşturmak için önce bağımlılıklarını kurmamız gerekiyor. PHP ve Composer'ı kuracağız.
sudo apt-get install php php-mbstring php-xml php-common php-zip composer
Şimdi, projeyi Laravel 5.5'e göre oluşturun.
composer create-project --prefer-dist laravel/laravel vultr "5.5.*"
Sonraki cd
son oluşturulan klasöre. Bundan sonra bu dizinde çalışacağız. Bu klasöre daha sonra olarak referans verilebilir PROJECT_ROOT
.
cd vultr/
Laravel'de Beanstalk kullanmak için, bir bağımlılık daha kurmamız gerekiyor, PHP Beanstalk istemcisi.
composer require pda/pheanstalk ~3.0
Ayrıca bir İş temsili de yaratmalıyız. Laravel'de bu, app/Jobs
klasörün içindeki bir sınıftır . Laravel, bir Job sınıfı oluşturmamıza yardımcı olacak bir konsol komutuna sahiptir. Örnek İşimizi yaratalım.
php artisan make:job FindFavoriteOS
app/Jobs/FindFavoriteOS.php
Dosyayı aşağıdaki şekilde güncelleyin .
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;
class FindFavoriteOS implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$rawData = file_get_contents('https://api.vultr.com/v1/os/list');
$list = json_decode($rawData, true);
shuffle($list);
$key = array_rand($list);
$favorite = $list[$key];
Log::info('My Favorite OS is: ' . $favorite['name']);
}
}
Tanıtıcı yöntem, iş tüketildiğinde etkili bir şekilde yürütülecek yöntemdir. Burada, Vultr API'sinden veri alır, rastgele bir işletim sistemi seçer ve seçilen işletim sistemini günlük dosyasına yazarız. Günlük dosyası adresinde bulunur storage/logs/laravel.log
.
Beanstalk'i zaten kurduk ve onun tarafından yürütülecek İşi tanımladık. Şimdi Laravel'e Beanstalk'u varsayılan çalışma kuyruğu olarak kullanmasını söylemenin zamanı geldi. .env
Laravel kurulumu tarafından sağlanan varsayılan dosyayı kopyalayın .
cp .env.example .env
Şimdi .env
dosyayı açın ve kuyruk sürücüsünün belirtildiği satırı güncelleyin.
QUEUE_DRIVER=beanstalkd
Son olarak, bir uygulama anahtarı oluşturun.
php artisan key:generate
Artık işleri Beanstalk çalışma kuyruğuna göndermeye hazırız.
Laravel'de bir iş göndermek oldukça basittir. routes/web.php
Dosyayı güncelleyin .
<?php
Route::get('/', function () {
for ($i = 0; $i < 50; $i++) {
\App\Jobs\FindFavoriteOS::dispatch();
}
return '50 Jobs dispatched!';
});
Yerleşik sağlanan sunucuyu üretimde çalıştırmanız tavsiye edilmemesine rağmen, burada kısaca olması için kullanacağız.
php artisan serve --host 0.0.0.0 --port 8000
Şimdi bir web tarayıcısında adresine gidin http://[vultr-instance-ip]:8000
. Aşağıdaki mesajı göreceksiniz.
50 Jobs dispatched!
Sunucunuza yeni bir SSH bağlantısı açın ve proje kökümüzün içinde aşağıdakileri yürütün.
php artisan queue:work --once
Bu beklenen çıktıdır:
[2018-02-14 00:03:52] Processing: App\Jobs\FindFavoriteOS
[2018-02-14 00:03:53] Processed: App\Jobs\FindFavoriteOS
Günlüğün oluşturulduğunu doğrulayın.
cat storage/logs/laravel.log
Kuyruğu manuel olarak işleme ihtiyacını ortadan kaldırmak için kullanacağız supervisord
. İçinde aşağıdaki program yapılandırmasını oluşturun /etc/supervisor/conf.d/vultr.conf
.
[program:vultr]
process_name=%(program_name)s_%(process_num)02d
command=php [PROJECT_ROOT]/artisan queue:work
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/worker.log
Supervisor yapılandırma dosyasını koymak için doğru yolun kurulumunuza bağlı olduğuna dikkat edin. Ayrıca, sisteminizdeki [PROJECT_ROOT]
tam yolla değiştirmeyi unutmayın PROJECT_ROOT
.
Burada Süpervizörü kuyruğu otomatik olarak işlemeye başlayacak ve kod kopması durumunda yeniden başlatacak şekilde yapılandırıyoruz. Ayrıca, tek bir çalışanı değil, 8 süreci somutlaştırdığımızı unutmayın. Uygulamanıza bağlı olarak gerekli bulduğunuz birçok işlemi somutlaştırmakta serbestsiniz.
Süpervizörün çalışanımızı yönetmesine izin vermek için onu yapılandırmasını yeniden okumaya zorlayın.
sudo supervisorctl reread
sudo supervisorctl update
Supervisor hizmeti başlatılmadıysa, çoğunu başlatmanız gerekir.
sudo systemctl start supervisord
Şimdi işlerin işlenip işlenmediğine bakalım.
tail -f storage/logs/laravel.log
Bir web tarayıcısında adresine gidin http://[vultr-instance-ip]:8000
. Konsolunuzda oluşturulan günlükleri göreceksiniz.
Laravel uygulamasını, Beanstalk'u çalışma kuyruğu olarak kullanacak şekilde başarıyla yapılandırdık. Ayrıca, Süpervizörün çalışanları yönetmek için nasıl kullanıldığını gösterdik.
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun