လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ထိရောက်သောဖြန့်ဖြူးထားသောအရင်းအမြစ်သော့ခတ်ထားသောဖြေရှင်းနည်းများကိုအကောင်အထည်ဖော်ရန် PHP နှင့် KAFKA ကိုသုံးပါ

ထိရောက်သောဖြန့်ဖြူးထားသောအရင်းအမြစ်သော့ခတ်ထားသောဖြေရှင်းနည်းများကိုအကောင်အထည်ဖော်ရန် PHP နှင့် KAFKA ကိုသုံးပါ

M66 2025-07-10

နိဒါန်း

ယနေ့အင်တာနက်ဗိသုကာလက်ရာတွင်ဖြန့်ဖြူးထားသောစနစ်များသည်အလွန်အမင်းရရှိနိုင်သောစွမ်းဆောင်ရည်မြင့်မားပြီးစွမ်းဆောင်ရည်မြင့်မားသောအပလီကေးရှင်းများတည်ဆောက်ခြင်းအတွက်အရေးကြီးသောအခြေခံအုတ်မြစ်တစ်ခုဖြစ်လာသည်။ Multi-Node ပူးပေါင်းဆောင်ရွက်ရေးလုပ်ငန်းသည်အထူးအရေးကြီးသည့်ပတ်ဝန်းကျင်တွင်အရင်းအမြစ်များကိုထပ်တူပြုခြင်းသည်အထူးအရေးကြီးသည်။ တစ်ပြိုင်နက်တည်းပ conflicts ိပက်ခများကိုထိရောက်စွာဖြေရှင်းနိုင်ရန်အတွက်ဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်များသည် system ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အဓိကနည်းပညာနည်းများဖြစ်လာသည်။ ဤဆောင်းပါးသည် PHP ဘာသာစကားအပေါ် အခြေခံ. ဖြစ်နိုင်ခြေရှိသောဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်အကောင်အထည်ဖော်မှုဖြေရှင်းနည်းကိုမိတ်ဆက်ပေးပြီး KAFKA Message Queue နှင့်ပေါင်းစပ်ပါမည်။

ဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်သည်

ဖြန့်ဝေထားသောအရင်းအမြစ်သော့ခတ်ခြင်းဆိုသည်မှာ node များဖြင့်မျှဝေခြင်းအရင်းအမြစ်များကိုညှိနှိုင်းဆောင်ရွက်ရန်အသုံးပြုသောယန္တရားတစ်ခုဖြစ်သည်။ ၎င်း၏အဓိကရည်ရွယ်ချက်မှာ Node မျိုးစုံကိုတစ်ချိန်တည်းတွင်တူညီသောအရင်းအမြစ်မျိုးစိတ်များကိုတစ်ချိန်တည်းတွင်လုပ်ဆောင်ခြင်းမှကာကွယ်ရန်ဖြစ်သည်။ ဖြန့်ဝေထားသောသော့များသည်များသောအားဖြင့်အဓိကလုပ်ဆောင်ချက်များရှိသည်။

  • သော့ခတ်ခြင်း - Node တစ်ခုသည်အရင်းအမြစ်များကိုရယူရန်လိုအပ်သည့်အခါအခြား node များထံမှတစ်ပြိုင်နက်တည်းဝင်ရောက်ခွင့်ကိုကာကွယ်ရန်ပထမ ဦး ဆုံးသော့ခလောက်ကိုအရင်လျှောက်ထားပါ။
  • Unlock: သယံဇာတစစ်ဆင်ရေးပြီးစီးပြီးနောက်အခြား node များကိုဆက်လက်လုပ်ဆောင်ရန်ခွင့်ပြုရန်သော့ခတ်ကိုလွှတ်ပါ။

ဖြန့်ဝေထားသောသော့ခလောက်များအကောင်အထည်ဖော်ရန်မက်ဆေ့ခ်ျစီတန်းရန်အမျိုးအစားများကိုအသုံးပြုနည်း

Message Queue သည်ဖြန့်ဝေထားသောစနစ်များကိုဖြန့်ဝေထားသောစနစ်များတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသောစနစ်တစ်ခုဖြစ်သည်။ အရင်းအမြစ်သော့ခတ်ခြင်းအတွက်မက်ဆေ့ခ်ျချန်နယ်တစ်ခုတည်ဆောက်ခြင်းအားဖြင့် node များအကြားအရင်းအမြစ်စစ်ဆင်ရေးကိုတန်းစီထိန်းချုပ်နိုင်သည်။ ဤဆောင်းပါးသည် KAFKA ကိုမက်ဆေ့ခ်ျတန်းစီကိရိယာတစ်ခုအဖြစ်အသုံးပြုသည်။

kafka installation နှင့် configuration ကို

ဖွံ့ဖြိုးမှုမစတင်မီ KAFKA 0 န်ဆောင်မှုများကိုစနစ်တွင်တပ်ဆင်ပြီးပြုပြင်ရန်လိုအပ်သည်။ KAFKA 0 န်ဆောင်မှုသည်စနစ်တကျလည်ပတ်နေကြောင်းသေချာစေရန်နှင့်ခေါင်းစဉ်များနှင့်မက်ဆေ့ခ်ျများကို command-line operations များမှတဆင့်စီမံနိုင်သည်။ တပ်ဆင်မှုပြီးစီးရန်တရားဝင်စာရွက်စာတမ်းများကိုသင်ရည်ညွှန်းနိုင်သည်။

KAFKA အခင်းအကျင်းကိုဖန်တီးပါ

သယံ ဇာ တူစီမံကိန်းစီမံခန့်ခွဲမှုအတွက်အထူးသဖြင့်အသုံးပြုသည်။ Kafka အမည်ရှိ Kafka တွင်ခေါင်းစဉ်အသစ်တစ်ခုကိုကျွန်ုပ်တို့ဖန်တီးသည်။

 <span class="fun">Bin / Kafka-topics.sh -Create -Bootstrap-server localhost: 9092 --topic use_lock -lock -partitions 1 --Replication-factor 1</span>

PHP တွင် KAFKA client စာကြည့်တိုက်ကိုမိတ်ဆက်ပေးခြင်း

KAFKA ၏ PHP 0 န်ဆောင်မှုခံယူသူစာကြည့်တိုက်ကိုတေးရေးဆရာမှတဆင့် Install လုပ်နိုင်သည်။

 <span class="fun">Composer သည် Superbalist / Php-Pubsub-Kafka လိုအပ်သည်</span>

PHP မှအကောင်အထည်များဖြန့်ဝေ Lock Logic ဖြန့်ဝေ

အောက်ဖော်ပြပါသည် 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;

ဖြန့်ဝေသော့ခလောက်များ၏အသုံးပြုမှုလုပ်ငန်းစဉ်

သင်၏စီမံကိန်းတွင်သော့ခတ်ယန္တရားကိုအသုံးပြုရန်ဤအဆင့်များကိုလိုက်နာပါ။

  • ဖြန့်ဖြူးသော ကန့်နှင့်သက်ဆိုင်သော KAFKA အကြောင်းအရာအမည်ကိုဖန်တီးပါ။
  • Call SunderCreelock () Method ကို Lock Operation ကိုစတင်ရန်နည်းလမ်းများနှင့်ထူးခြားသောအမှတ်အသားကိုဖြတ်သန်းရမည်။
  • ဝင်ရောက်ခွင့်ကိုထိန်းချုပ်ရန်လိုအပ်သည့်စီးပွားရေးယုတ္တိဗေဒ Execute လုပ်ပါ။
  • ပြီးနောက်စစ်ဆင်ရေးပြီးစီးခဲ့သည်

အကျဉ်းချုပ်

ဤဆောင်းပါးသည် PHP နှင့် Kafka တို့တွင်ဖြန့်ဖြူးထားသောအရင်းအမြစ်သော့ခတ်ခြင်းယန္တရားကို PHP နှင့် Kafka တို့တွင်ပုံနမူနာများဖြင့်မည်သို့အကောင်အထည်ဖော်ရမည်ကိုမိတ်ဆက်ပေးသည်။ ဤနည်းလမ်းသည်မြင့်မားသောပမာဏနှင့်ပြတ်တောင်းပြတ်တောင်းကောင်းမွန်သောလက္ခဏာများရှိပြီးကွဲပြားခြားနားသောဖြန့်ဖြူးထားသောစနစ်ဗိသုကာများအတွက်သင့်တော်သည်။ KAFKA အပြင်အခြားသတင်းစကားသည်ယုန်, Redis Stream ကဲ့သို့သော Message Fair Wife Fairware စသည်တို့ကိုအလားတူဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာအလေ့အကျင့်များအတွက်အသုံးပြုနိုင်သည်။