ယနေ့အင်တာနက်ဗိသုကာလက်ရာတွင်ဖြန့်ဖြူးထားသောစနစ်များသည်အလွန်အမင်းရရှိနိုင်သောစွမ်းဆောင်ရည်မြင့်မားပြီးစွမ်းဆောင်ရည်မြင့်မားသောအပလီကေးရှင်းများတည်ဆောက်ခြင်းအတွက်အရေးကြီးသောအခြေခံအုတ်မြစ်တစ်ခုဖြစ်လာသည်။ Multi-Node ပူးပေါင်းဆောင်ရွက်ရေးလုပ်ငန်းသည်အထူးအရေးကြီးသည့်ပတ်ဝန်းကျင်တွင်အရင်းအမြစ်များကိုထပ်တူပြုခြင်းသည်အထူးအရေးကြီးသည်။ တစ်ပြိုင်နက်တည်းပ conflicts ိပက်ခများကိုထိရောက်စွာဖြေရှင်းနိုင်ရန်အတွက်ဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်များသည် system ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အဓိကနည်းပညာနည်းများဖြစ်လာသည်။ ဤဆောင်းပါးသည် PHP ဘာသာစကားအပေါ် အခြေခံ. ဖြစ်နိုင်ခြေရှိသောဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်အကောင်အထည်ဖော်မှုဖြေရှင်းနည်းကိုမိတ်ဆက်ပေးပြီး KAFKA Message Queue နှင့်ပေါင်းစပ်ပါမည်။
ဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်ခြင်းဆိုသည်မှာ node များဖြင့်မျှဝေခြင်းအရင်းအမြစ်များကိုညှိနှိုင်းဆောင်ရွက်ရန်အသုံးပြုသောယန္တရားတစ်ခုဖြစ်သည်။ ၎င်း၏အဓိကရည်ရွယ်ချက်မှာ Node မျိုးစုံကိုတစ်ချိန်တည်းတွင်တူညီသောအရင်းအမြစ်မျိုးစိတ်များကိုတစ်ချိန်တည်းတွင်လုပ်ဆောင်ခြင်းမှကာကွယ်ရန်ဖြစ်သည်။ ဖြန့်ဝေထားသောသော့များသည်များသောအားဖြင့်အဓိကလုပ်ဆောင်ချက်များရှိသည်။
Message Queue သည်ဖြန့်ဝေထားသောစနစ်များကိုဖြန့်ဝေထားသောစနစ်များတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသောစနစ်တစ်ခုဖြစ်သည်။ အရင်းအမြစ်သော့ခတ်ခြင်းအတွက်မက်ဆေ့ခ်ျချန်နယ်တစ်ခုတည်ဆောက်ခြင်းအားဖြင့် node များအကြားအရင်းအမြစ်စစ်ဆင်ရေးကိုတန်းစီထိန်းချုပ်နိုင်သည်။ ဤဆောင်းပါးသည် KAFKA ကိုမက်ဆေ့ခ်ျတန်းစီကိရိယာတစ်ခုအဖြစ်အသုံးပြုသည်။
ဖွံ့ဖြိုးမှုမစတင်မီ KAFKA 0 န်ဆောင်မှုများကိုစနစ်တွင်တပ်ဆင်ပြီးပြုပြင်ရန်လိုအပ်သည်။ KAFKA 0 န်ဆောင်မှုသည်စနစ်တကျလည်ပတ်နေကြောင်းသေချာစေရန်နှင့်ခေါင်းစဉ်များနှင့်မက်ဆေ့ခ်ျများကို command-line operations များမှတဆင့်စီမံနိုင်သည်။ တပ်ဆင်မှုပြီးစီးရန်တရားဝင်စာရွက်စာတမ်းများကိုသင်ရည်ညွှန်းနိုင်သည်။
သယံ ဇာ တူစီမံကိန်းစီမံခန့်ခွဲမှုအတွက်အထူးသဖြင့်အသုံးပြုသည်။ Kafka အမည်ရှိ Kafka တွင်ခေါင်းစဉ်အသစ်တစ်ခုကိုကျွန်ုပ်တို့ဖန်တီးသည်။
<span class="fun">Bin / Kafka-topics.sh -Create -Bootstrap-server localhost: 9092 --topic use_lock -lock -partitions 1 --Replication-factor 1</span>
KAFKA ၏ PHP 0 န်ဆောင်မှုခံယူသူစာကြည့်တိုက်ကိုတေးရေးဆရာမှတဆင့် Install လုပ်နိုင်သည်။
<span class="fun">Composer သည် Superbalist / Php-Pubsub-Kafka လိုအပ်သည်</span>
အောက်ဖော်ပြပါသည် KAFKA ထုတ်လုပ်မှုနှင့်စားသုံးမှုသတင်းများမှတဆင့်သော့ခတ်ခြင်းနှင့်သော့ဖွင့်ခြင်းကိုထိန်းချုပ်ခြင်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည့်အပြည့်အဝပါ 0 င်သည်။
<?php
require 'vendor/autoload.php';
use Superbalist\PubSub\Kafka\KafkaConnectionFactory;
class DistributedLock
{
private $topic;
private $connection;
public function __construct($topic)
{
$this->topic = $topic;
$this->connection = $this->createConnection();
}
private function createConnection()
{
$config = [
'metadata.broker.list' => 'localhost:9092',
'enable.auto.commit' => 'false',
];
return KafkaConnectionFactory::create($config);
}
public function acquireLock($identifier)
{
$producer = $this->connection->createProducer();
$message = json_encode(['identifier' => $identifier]);
$producer->produce($this->topic, $message);
}
public function releaseLock($identifier)
{
$consumer = $this->connection->createConsumer();
$consumer->subscribe([$this->topic]);
while (true) {
$message = $consumer->consume(1000);
if ($message) {
$payload = json_decode($message->getPayload(), true);
if ($payload['identifier'] == $identifier) {
break;
}
}
}
}
}
// နမူနာကုဒ်
$lock = new DistributedLock('resource_lock');
$identifier = 'example_identifier';
echo 'Acquiring lock...' . PHP_EOL;
$lock->acquireLock($identifier);
echo 'Lock acquired!' . PHP_EOL;
// အရင်းအမြစ်စစ်ဆင်ရေးကိုတုပ
sleep(3);
echo 'Releasing lock...' . PHP_EOL;
$lock->releaseLock($identifier);
echo 'Lock released!' . PHP_EOL;
သင်၏စီမံကိန်းတွင်သော့ခတ်ယန္တရားကိုအသုံးပြုရန်ဤအဆင့်များကိုလိုက်နာပါ။
ဤဆောင်းပါးသည် PHP နှင့် Kafka တို့တွင်ဖြန့်ဖြူးထားသောအရင်းအမြစ်သော့ခတ်ခြင်းယန္တရားကို PHP နှင့် Kafka တို့တွင်ပုံနမူနာများဖြင့်မည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးသည်။ ဤနည်းလမ်းသည်မြင့်မားသောပမာဏနှင့်ပြတ်တောင်းပြတ်တောင်းကောင်းမွန်သောလက္ခဏာများရှိပြီးကွဲပြားခြားနားသောဖြန့်ဖြူးထားသောစနစ်ဗိသုကာများအတွက်သင့်တော်သည်။ KAFKA အပြင်အခြားသတင်းစကားသည်ယုန်, Redis Stream ကဲ့သို့သော Message Fair Wife Fairware စသည်တို့ကိုအလားတူဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာအလေ့အကျင့်များအတွက်အသုံးပြုနိုင်သည်။