menuTicketing
close





উদাহরণ সেশন (বাইট নোটেশন)

সংখ্যা বিগ-এন্ডিয়ান। ·· শুধুমাত্র বাইট সীমানা নির্দেশক, প্রকৃত বাইট নয়।

# 즉시 획득 (wait=5s, lease=30s), key="order-1234"
클라 → 'A' 00·05 00·1E "order-1234" \n
서버 → 'A' 00·00·00·00·00·00·00·01 "order-1234" \n     (토큰 1)

# 점유 중 대기 (다른 연결, wait=1s)
클라2 → 'A' 00·01 00·1E "order-1234" \n
                                       ... 보류 ...
# (a) 보유자가 반납하면 즉시 인계
클라  → 'R' "order-1234" \n
서버 → 'R' "order-1234" \n                              (클라: 반납됨)
서버 → 'A' 00·00·00·00·00·00·00·02 "order-1234" \n      (클라2: 인계, 더 큰 토큰)
# (b) wait(1s) 안에 못 받으면
서버 → 'T' "order-1234" \n                              (클라2: 타임아웃 — grant 없음)

# 없는 키 반납 / 잘못된 요청
클라 → 'R' "ghost" \n        → 서버 'N' "ghost" \n
클라 → 'Z' ...              → 서버 'E' "bad_op" \n

বাইনারি হওয়ায় nc দিয়েও দ্রুত পরীক্ষা করা যায়।

sh
# 획득: key=order-1, wait=5s(00 05), lease=30s(00 1e)
printf 'A\x00\x05\x00\x1eorder-1\n' | nc -w1 127.0.0.1 5225 | xxd
# → 41 0000000000000001 6f72646572...  ('A' + token=1 + "order-1")

printf 'Rorder-1\n' | nc -w1 127.0.0.1 5225 | xxd    # → 52 ... ('R' + "order-1")
printf 'Zx\n'       | nc -w1 127.0.0.1 5225          # → Ebad_op

সার্ভার ↔ সার্ভারের মধ্যে ক্লাস্টার রেপ্লিকেশন প্রোটোকল প্রোটোকল (ক্লাস্টার)-এ আলোচনা করা হয়েছে।