Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Beanstalk adalah barisan kerja yang pantas dan sederhana. Ia membolehkan anda menjalankan tugas memakan masa secara serentak, seperti menghantar e-mel, menyambung ke API luaran atau memproses imej. Dengan berbuat demikian, anda akan mengurangkan kependaman aplikasi web anda. Laravel memberikan sokongan luar kotak untuk beanstalkd
.
Dalam tutorial ini, kami akan memasang beanstalkd
, menyediakan demo aplikasi Laravel dan menguruskan pekerja barisan melalui Penyelia . Aplikasi demo akan mendapat senarai OS yang tersedia dari API Vultr dan memilihnya secara rawak.
Diandaikan bahawa anda sudah mempunyai Penyelia yang terpasang di sistem anda. Sekiranya anda tidak melakukannya, anda perlu membaca tutorial berikut mengenai bagaimana untuk menyedia Penyelia: Memasang dan Mengkonfigurasi Penyelia di Ubuntu 16.04
Juga diandaikan bahawa anda mempunyai akses SSH ke instance Vultr anda.
Langkah pertama yang perlu diambil ialah memasang beanstalkd
.
sudo apt-get update
sudo apt-get install beanstalkd
Mulakan perkhidmatan.
sudo systemctl start beanstalkd
Anda juga boleh mengaktifkan perkhidmatan bermula pada permulaan sistem.
sudo systemctl enable beanstalkd
Periksa status perkhidmatan dengan mengeluarkan arahan berikut.
sudo systemctl status beanstalkd
Secara lalai, beanstalkd
mendengar di port 11300
. Beanstalk menggunakan protokol berasaskan teks ringkas yang diterangkan dalam repositori github itu . Anda boleh menguji protokolnya dengan berjalan telnet
.
telnet localhost 11300
Tuliskan yang berikut dan tekan ENTER.
list-tubes
Anda harus melihat senarai tabung yang terdapat di pelayan:
OK 14
---
- default
Untuk menutup sambungan, cukup ketik quit
dan kemudian tekan ENTER.
Tiub di Beanstalk mewakili barisan kerja. Beanstalk terdiri pada dasarnya oleh pengeluar , pengguna , pekerjaan dan tiub . Pengeluar memasukkan pekerjaan ke dalam tabung untuk dimakan (diproses) oleh sebilangan besar pengguna. Perhatikan bahawa kedua-dua pengeluar dan pengguna hanyalah pelanggan dari pelayan Beanstalk dan benar-benar bebas antara satu sama lain. Dalam istilah praktikal ini bermakna dengan menggunakan Beanstalk anda boleh menghasilkan pekerjaan anda dalam aplikasi PHP anda dan memprosesnya dalam aplikasi NodeJS misalnya. Nasib baik, Laravel menyusun semua ini dan memberi kita API yang sangat mudah untuk menghantar dan menangani pekerjaan, seperti yang akan kita lihat selanjutnya.
Untuk membina projek contoh kami, kami perlu memasang dependencies. Kami akan memasang PHP dan Komposer.
sudo apt-get install php php-mbstring php-xml php-common php-zip composer
Sekarang, buat projek berdasarkan Laravel 5.5.
composer create-project --prefer-dist laravel/laravel vultr "5.5.*"
Di cd
sebelah folder yang baru dibuat. Kami akan bekerja di direktori ini mulai sekarang. Folder ini boleh dirujuk kemudian sebagai PROJECT_ROOT
.
cd vultr/
Untuk menggunakan Beanstalk di Laravel kita perlu memasang satu lagi kebergantungan, pelanggan PHP Beanstalk.
composer require pda/pheanstalk ~3.0
Kami juga perlu membuat representasi Kerja. Di Laravel, ini adalah kelas di dalam app/Jobs
folder. Laravel mempunyai perintah konsol untuk membantu kami membuat kelas Kerja. Mari buat Job sampel kami.
php artisan make:job FindFavoriteOS
Kemas kini app/Jobs/FindFavoriteOS.php
fail ke yang berikut.
<?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']);
}
}
Kaedah pengendalian adalah apa yang akan dilaksanakan dengan berkesan apabila kerja dimakan. Di sini, kami mengambil data dari API Vultr, secara rawak memilih OS dan menulis OS yang dipilih untuk fail log. Fail log terletak di storage/logs/laravel.log
.
Kami telah memasang Beanstalk dan menamakan Job yang akan dilaksanakan olehnya. Kini sudah tiba masanya untuk memberitahu Laravel menggunakan Beanstalk sebagai giliran kerja lalai. Salin .env
fail lalai yang disediakan oleh pemasangan Laravel.
cp .env.example .env
Sekarang buka .env
fail dan kemas kini garis di mana pemandu beratur ditentukan.
QUEUE_DRIVER=beanstalkd
Akhir sekali, buat kunci aplikasi.
php artisan key:generate
Kami kini bersedia untuk menghantar pekerjaan ke barisan kerja Beanstalk.
Pengiriman pekerjaan di Laravel agak mudah. Kemas kini routes/web.php
fail.
<?php
Route::get('/', function () {
for ($i = 0; $i < 50; $i++) {
\App\Jobs\FindFavoriteOS::dispatch();
}
return '50 Jobs dispatched!';
});
Walaupun tidak disyorkan untuk menjalankan pelayan yang disediakan dalam pengeluaran, kami akan menggunakannya di sini untuk tujuan ringkas.
php artisan serve --host 0.0.0.0 --port 8000
Sekarang dalam penyemak imbas web, arahkan ke http://[vultr-instance-ip]:8000
. Anda akan melihat mesej berikut.
50 Jobs dispatched!
Buka sambungan SSH baru ke pelayan anda dan di dalam akar projek kami, laksanakan perkara berikut.
php artisan queue:work --once
Ini adalah output yang diharapkan:
[2018-02-14 00:03:52] Processing: App\Jobs\FindFavoriteOS
[2018-02-14 00:03:53] Processed: App\Jobs\FindFavoriteOS
Sahkan log telah dijana.
cat storage/logs/laravel.log
Untuk mengelakkan keperluan memproses antrian secara manual, kami akan menggunakan supervisord
. Buat konfigurasi program berikut di /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
Perhatikan bahawa laluan yang betul untuk meletakkan fail konfigurasi Supervisor bergantung pada persediaan anda. Juga, ingatlah untuk mengganti [PROJECT_ROOT]
dengan jalan penuh ke PROJECT_ROOT
sistem anda.
Di sini kita sedang mengkonfigurasi Penyelia untuk secara automatik mula memproses barisan dan, sekiranya pemecahan skrip, untuk memulakannya semula. Perhatikan juga bahawa kita tidak menamakan seorang pekerja tunggal, tetapi 8 proses. Anda bebas untuk membuat contoh tetapi banyak proses yang anda dapati bergantung pada permohonan anda.
Untuk membolehkan Penyelia menguruskan pekerja kami, paksa untuk membaca semula konfigurasinya.
sudo supervisorctl reread
sudo supervisorctl update
Sekiranya perkhidmatan Penyelia belum dimulakan, anda mesti memulakannya.
sudo systemctl start supervisord
Sekarang mari kita lihat apakah kerja sedang diproses.
tail -f storage/logs/laravel.log
Pada penyemak imbas web, navigasi ke http://[vultr-instance-ip]:8000
. Anda akan melihat log dihasilkan di konsol anda.
Kami telah berjaya mengkonfigurasi aplikasi Laravel untuk menggunakan Beanstalk sebagai barisan kerja. Juga, kami menunjukkan cara menggunakan Penyelia untuk mengurus pekerja.
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.
Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.
Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.
Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.
CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?
Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.
Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!
Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.
Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut