menuTicketing
close





Ticketing সার্ভার ডিপ্লয়মেন্ট

এনভায়রনমেন্ট
মোড
bash
ক্লায়েন্ট সংযোগের উদাহরণ
rust
nc দিয়ে দ্রুত পরীক্ষা
bash

এনভায়রনমেন্ট ভ্যারিয়েবল

ticketing.toml(ঐচ্ছিক)-এর প্রতিটি আইটেম এনভায়রনমেন্ট ভ্যারিয়েবল হিসেবেও দেওয়া যায়। অগ্রাধিকার হলো এনভায়রনমেন্ট ভ্যারিয়েবল > ticketing.toml > ডিফল্ট মান, এবং কী ও বুলিয়ান মান বড়/ছোট হাতের অক্ষর নির্বিশেষে গ্রহণযোগ্য। Docker ইমেজ scratch-ভিত্তিক হওয়ায় কনফিগারেশন এনভায়রনমেন্ট ভ্যারিয়েবল দিয়ে ইনজেক্ট করাই ডিফল্ট পদ্ধতি (কনফিগারেশন ফাইল ব্যবহার করতে চাইলে মাউন্ট করার পর CONFIG দিয়ে পাথ নির্দিষ্ট করুন)।

এনভায়রনমেন্ট ভ্যারিয়েবলডিফল্ট মানবিবরণ
PORT (SERVER_PORT)5225TCP লিসেন পোর্ট। ক্লাস্টার মোডে উপেক্ষিত হয় এবং CLUSTER_SELF-এর পোর্ট ব্যবহৃত হয়
DEBUG (SERVER_DEBUG)বিল্ড অনুযায়ী1/true হলে debug লগ
SOCKET_BIND0.0.0.0লিসেন ঠিকানা
SOCKET_NODELAYtrueTCP_NODELAY
SOCKET_READ_BUF_LEN4096সংযোগ প্রতি রিড বাফার (বাইট)
SOCKET_REPLY_QUEUE1024সংযোগ প্রতি সাড়ার সারির দৈর্ঘ্য
SOCKET_REPLY_BATCH64একটি write-এ একত্রে পাঠানো সর্বোচ্চ সাড়ার সংখ্যা
SWEEP_INTERVAL_SECS5মেয়াদোত্তীর্ণ কী পরিষ্কারের ব্যবধান (সেকেন্ড)
CLUSTER_SELF(নেই)এই নোডের প্রচারিত ঠিকানা host:port। থাকলে ক্লাস্টার মোড
CLUSTER_PEERS(নেই)নোড ঠিকানার তালিকা (কমা দিয়ে বিভক্ত)। ক্রম = পদোন্নতির অগ্রাধিকার, self-সহ, ২টি বা তার বেশি
CONFIG./conf/ticketing.tomlকনফিগারেশন ফাইলের পাথ

সিঙ্গেল বনাম ক্লাস্টার

  • সিঙ্গেল (১টি): [cluster](বা CLUSTER_*) না থাকলে সিঙ্গেল নোড। সবচেয়ে দ্রুত, তবে পুনরায় চালু হওয়ার সময় সংক্ষিপ্ত বিচ্ছিন্নতা ঘটে এবং অবস্থা ইন-মেমরি হওয়ায় পুনরায় চালু হলে হারিয়ে যায় (lease একটি নিরাপত্তা জাল)।
  • ক্লাস্টার (নিরবচ্ছিন্ন): ন্যূনতম ২টি। প্রতিটি নোডে অভিন্ন CLUSTER_PEERS (অগ্রাধিকার ক্রমে) এবং নিজেকে নির্দেশকারী CLUSTER_SELF থাকে। জীবিত নোডগুলোর মধ্যে সর্বোচ্চ অগ্রাধিকারসম্পন্ন একটি অ্যাক্টিভ হয় এবং বাকিরা স্ট্যান্ডবাই হিসেবে রিয়েল-টাইম রেপ্লিকেশন গ্রহণ করে। বিস্তারিত কার্যপ্রণালীর জন্য কার্যপ্রণালী এবং প্রোটোকল — সার্ভার ↔ সার্ভার দেখুন।

Kubernetes ক্লাস্টার ডিপ্লয়মেন্টে StatefulSet + হেডলেস সার্ভিস ব্যবহার করা হয়। প্রতিটি পড যেন স্থিতিশীল DNS নাম (ticketing-0.ticketing…, ticketing-1.ticketing…) পায় তা নিশ্চিত করে, সেই নামগুলো অগ্রাধিকার ক্রমে CLUSTER_PEERS-এ দিয়ে প্রতিটি পডের CLUSTER_SELF downward API (metadata.name) দিয়ে স্বয়ংক্রিয়ভাবে ইনজেক্ট করা হয়।

নিরবচ্ছিন্ন পুনরায় চালু (রোলিং)

  1. স্ট্যান্ডবাই থেকে শুরু করে একটি একটি করে পুনরায় চালু করুন (অ্যাক্টিভ সেবা দিতে থাকে)।
  2. সবশেষে অ্যাক্টিভ বন্ধ করলে (Ctrl+C) হ্যান্ডঅফের মাধ্যমে স্ট্যান্ডবাই পদোন্নতি পায় এবং ক্লায়েন্ট স্থানান্তরিত হয়।
  3. নামানো পুরনো অ্যাক্টিভ আবার চালু করলে বর্তমান অ্যাক্টিভের স্ট্যান্ডবাই হিসেবে যুক্ত হয় (স্বয়ংক্রিয় ফেইলব্যাক নেই)।

তথ্যসূত্র

  • ইমেজ: sarolab/ticketing · Github: saro-lab/ticketing
  • ক্লায়েন্টে (ব্রোকার) সব নোডের ঠিকানা নিবন্ধন করুন যাতে ব্যর্থতার সময় স্বয়ংক্রিয়ভাবে স্থানান্তরিত হয়। ভাষাভিত্তিক ব্যবহারপদ্ধতির জন্য লাইব্রেরি দেখুন।