ফিরে যান Webship ব্লগে

Webship প্রকৌশল

Webship দিয়ে স্ট্রিমিং: সঠিকতা ছাড়াই উচ্চ ট্রান্সমিশন ক্ষমতা

শিখুন কিভাবে Webship বড় মিডিয়া ফাইলগুলি HTTP/1.1, HTTP/2, এবং HTTP/3 এর মাধ্যমে পরিবেশন ও প্রক্সি করে অ্যাডাপ্টিভ kTLS, BBR পেসিং, সীমিত বাফার এবং জিরো-ত্রুটি ইন্টিগ্রিটি গেট ব্যবহার করে।

স্ট্রিমিং পারফরম্যান্স শুধুমাত্র ভিডিও প্লেয়ারের সমস্যা নয়। সফটওয়্যার আর্টিফ্যাক্ট, মডেল ওজন, ব্যাকআপ, অডিও লাইব্রেরি, এবং বড় API এক্সপোর্ট—all একই মূল বিষয়ের উপর নির্ভর করে: দ্রুত বাইট স্থানান্তর করা, সঠিক পে লোড সংরক্ষণ করা, ব্যাকপ্রেশারকে সম্মান করা, এবং যখন ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করে তখন সাফভাবে বন্ধ করা।

Webship সেই চাহিদাগুলোকে এক ধরনের পরিবহন সমস্যার মতো বিবেচনা করেHTTP/1.1, HTTP/2, HTTP/3, সরাসরি ফাইল বিতরণ, উল্টো প্রক্সি, এবং WebTransport. দ্রুত পথটি তখনই উপকারী যখন এটি ফ্রেমিং, বাতিলকরণ, ট্রেইলার, নিরাপত্তা পরিদর্শন এবং সীমিত স্মৃতি বজায় রাখে।

মাপা ১০০ এমবি স্ট্রিমিং ক্ষমতা

দ্য Webship 1.3.1 ডেবিয়ান ক্ষমতা চালনা একটি নির্দিষ্ট 100 এমবি ফিক্সচারের সাথে মধ্যপথে পোলওড থ্রুপুট পরিমাপ করেছে। প্রতিটি গৃহীত নমুনার জন্য অবশ্যই সঠিক 99,943,778-বাইটের রেসপন্স বডি এবং শূন্য ক্লায়েন্ট, প্রোটোকল, প্রক্সি, মেজর-পেজ-ফল্ট এবং HTTP/3 প্যাকেট-হ্রাস ত্রুটি।

| Webship মোড | HTTP/1.1 টিএলএস | HTTP/2 টিএলএস | HTTP/3 টিএলএস | | --- | ---: | ---: | ---: | | সরাসরি ফাইল বিতরণ | ৪,১৯৪.৮ মাইবি/সেকেন্ড | ৩,৫৭৪.৩ মাইবি/সেকেন্ড | ২,০৯৬.৯ মাইবি/সেকেন্ড | | TLS টার্মিনেশনসহ রিভার্স প্রক্সি | ৩,৫৮৫.৭ মি.বি./সেকেন্ড | ৩,৩৫৫.০ মি.বি./সেকেন্ড | ১,৯৩৮.৬ মি.বি./সেকেন্ড | | TLS পাস-থ্রু সহ রিভার্স প্রক্সি | ২,৭৮৩.২ মি.বি./স | ২,১৩৫.০ মি.বি./স | ১,৭৪৮.৫ মি.বি./স |

রেকর্ড করা তুলনায়,Webship প্রতি মাপা প্রোটোকলের জন্য সর্বোচ্চ সরাসরি এবং TLS-সমাপ্ত মধ্যম উৎপাদন করেছে। সম্পূর্ণ মেট্রিক্সে রয়েছে Nginx, Lighttpd, ক্যাডি, HAProxy, এনভয়, পিঙ্গোরা, এবং বান [বেঞ্চমার্ক পেজে](/benchmarks)।

এই সংখ্যাগুলো বেন্চমার্ক হোস্টের সক্ষমতা মাপে। এগুলো যেকোনো ইন্টারনেট পথের জন্য কোনো প্রতিশ্রুতি নয়। স্টোরেজ লেটেন্সি, নেটওয়ার্ক ব্যান্ডউইথ, রাউন্ড-ট্রিপ সময়, প্যাকেট লস, TLS নীতি, সমান্তরালতা, এবং উত্সের আচরণ এখনও বাস্তব ডেলিভারি গতিকে নির্ধারণ করে।

একটি বাইনারি, তিনটি পরিবহন কৌশল

একটি বড় প্রতিক্রিয়া একটি ছোট HTML নথির মতো নীতির থেকে উপকার পায় না।Webship সাধারণ অনুরোধের পথকে রক্ষণশীল রাখে এবং শুধুমাত্র প্রমাণিত গণ প্রতিক্রিয়াকে প্রচার করে।

HTTP/1.1: ফাইলের চারপাশে কম পরিবর্তন

লিনাক্সে, Webship একটি সর্বোত্তম প্রচেষ্টা TCP কর্ক অন্তরালে প্রতিক্রিয়া হেড এবং ফাইল পে লোড একসাথে রাখে। একবার একটি বড় TLS প্রতিক্রিয়া বাল্ক পথের জন্য যোগ্য হলে, সরাসরি ফাইল ডেলিভারি থেকে সরানো যেতে পারে Rustls রেকর্ডগুলোকে অডিট করা একমুখী কার্নেল TLS-এ রূপান্তর করুন এবং payload-কে অ্যাপ্লিকেশন বাফারের মাধ্যমে কপি না করে sendfile ব্যবহার করুন।

সংযোগ এখনও ব্যবহারকারীর স্থান TLS-এ শুরু হয়। ছোটো প্রতিক্রিয়াগুলি সেখানে থেকেই থাকে।Webship কমপক্ষে ১ মিবি আকারের একটি উত্তর বডি প্রমাণ করে যে সংযোগটি বাল্ক ডেটা বহন করছে, তারপরে কেবল kTLS ট্রানজিশনের অনুরোধ করে।

HTTP/2: প্রবাহ নিয়ন্ত্রণ ভাঙা ছাড়াই ব্যাচিং

HTTP/2 মাল্টিপ্লেক্সিং অপ্রতিষ্ঠিত বাফারিংকে ব্যয়বহুল করে তোলে।Webship ব্রতগুলো লিখে যায় স্ট্রিম এবং সংযোগের প্রবাহ-নিয়ন্ত্রণ সীমা রাখার সময়। উচ্চ সহ-সংযোজন স্ট্রিমিংয়ের জন্য, একটি ১২৮ কেবি TLS লিখন বাফার দুটি ৬৪ কেবি DATA ফ্রেম ধারণ করতে পারে, যখন সংযোগ প্রেরণ বাজেট স্পষ্ট এবং সীমিত থাকে।

একটি ইতিমধ্যেই প্রস্তুত আপস্ট্রিম বডি ফ্রেম হাইপার ফ্রেমিং, ট্রেলার, বাতিলকরণ, পরীক্ষা বা ব্যাকপ্রেশার এড়িয়েও প্রিফেচ করা যেতে পারে। এটি একটি এড়ানো যেতে সক্ষম শিডিউলার রাউন্ড কমায় যখন প্রোটোকল চুক্তি অপরিবর্তিত থাকে।

HTTP/3: kTLS এর পরিবর্তে QUIC পেসিং

HTTP/3 কখনও TCP kTLS পথ ব্যবহার করে না।Webship পরিবহন-সচেতন QUIC পেসিং, সীমিত ডাটাগ্রাম প্যাকেটাইজেশন, DPLPMTUD, এবং প্রতি-রিয়েক্টর টাইমার-চালিত মাইক্রোব্যাচিং প্রয়োগ করে। বড় HTTP/3 প্রত্যুত্তর এবং গৃহীতWebTransport সেশনগুলি সাধারণ ট্রাফিকের জন্য ব্যবহৃত CUBIC নীতি পরিবর্তন না করেই BBR নির্বাচন করতে পারে।

মনোযোগীHTTP/3 স্থিতিশীলতা যোগ্যতাে সাতটি গ্রহণযোগ্য নমুনা ব্যবহার করা হয়েছে। TLS-সমাপ্ত স্ট্রিমিং 2.12% ভেরিয়েশন সহ 1,938.6 MiB/s মধ্যমান প্রদান করেছে। TLS পাস-থ্রু 1.65% ভেরিয়েশন সহ 1,748.5 MiB/s প্রদান করেছে। উভয় সিরিজেই শূন্য বডি-ইন্টিগ্রিটি, ক্লায়েন্ট, প্রোটোকল এবং প্যাকেট-নষ্ট ত্রুটি ছিল।

সরাসরি ডেলিভারি নাকি রিভার্স প্রক্সি?

প্রত্যক্ষ সরবরাহ ব্যবহার করুন যখন Webship স্থাপন করা ফাইল ট্রির মালিক। এটি উৎস হপ সরায় এবং সবচেয়ে কার্যকর স্ট্যাটিক-ফাইল পথ সক্ষম করে।

একটি ন্যূনতম বহু-প্রোটোকল সাইট এই রকম দেখায়:

listen = "0.0.0.0:443"
workers = 8
root = "/srv/media"

[[sites]]
domain = "media.example.com"
root = "/srv/media"

[sites.protocols]
h1 = true
h2 = true
h3 = true

[sites.tls]
cert = "/etc/webship/media-cert.pem"
key = "/etc/webship/media-key.pem"

যখন রিভার্স-প্রক্সি TLS সমাপ্তি ব্যবহার করুনWebship পথ অনুযায়ী রুট করতে হবে, WAF বা API শিল্ড পরীক্ষা প্রয়োগ করতে হবে, বডির সীমা প্রয়োগ করতে হবে, ফরওয়ার্ডিং হেডার যুক্ত করতে হবে, বা HTTP ফিল্ড পর্যবেক্ষণ করতে হবে:

[reverse_proxy]
enabled = true
tls_termination = true

[reverse_proxy.protocols]
h1 = true
h2 = true
h3 = true

[reverse_proxy.tls]
cert = "/etc/webship/proxy-cert.pem"
key = "/etc/webship/proxy-key.pem"

[[reverse_proxy.routes]]
domain = "media.example.com"
path_prefix = "/"
upstreams = ["10.0.0.20:8080"]

সেটtls_termination = false যখন উৎসকে অ্যাপ্লিকেশন প্লেইনটেক্সট এবং সক্রিয় সেশন কী বজায় রাখতে হবে। পাস-থ্রু এনক্রিপ্টেড HTTP ফিল্ড পরীক্ষা করতে পারে না। তাই TCP পাস-থ্রু ClientHello SNI দ্বারা রুট করে, যখনHTTP/3 পাস-থ্রু একটি একক শেয়ার্ড UDP উৎস প্রয়োজন।

টিউন মাসিক স্ট্রিমিং স্পষ্টভাবে

উচ্চ-সমবায়তার জন্যHTTP/2 টিএলএস স্ট্রিমিং,Webship এই প্রক্রিয়া-সীমিত সেটিংসগুলি ডকুমেন্ট করে:

[runtime.settings]
h2_tls_write_buffer_bytes = "131072"
proxy_h2_tls_max_send_buffer_bytes = "131072"
proxy_h2_tls_connection_send_buffer_bytes = "33554432"

উপরের সংযোগ বাজেট ২৫৬টি সক্রিয় স্ট্রিমের জন্য ১২৮ কিবি ক্রেডিট প্রদান করে। এটিকে একটি ক্ষমতার সিদ্ধান্ত হিসেবে বিবেচনা করুন, সার্বজনীন ডিফল্ট হিসেবে নয়। এটি বাড়ানোর আগে আপনার প্রত্যাশিত একযোগিতা সহ মেমরি, দেরি এবং থ্রুপুট পরিমাপ করুন।

লিনাক্সে, কার্নেল TLS এবং BBR মডিউলগুলি লোড করুন এবং অনুমতি দিন Webship BBR নির্বাচন করতে সার্ভিস অ্যাকাউন্ট।Webship যখন এর প্রয়োজনীয় কার্নেল ক্ষমতা অনুপলব্ধ থাকে তখন এটি বেঁধে দেওয়ার আগে ব্যর্থ হয়, তাই একটি ডিপ্লয়মেন্ট এটি ছাড়াই চলাকালীন নীরবভাবে অপটিমাইজড পথ দাবি করতে পারে না। অন্যান্য অপারেটিং সিস্টেমগুলি পোর্টেবল রাখেRustতাদের প্ল্যাটফর্মের জন্য ডকুমেন্ট করা লিস এবং জমাটবদ্ধতা-নিয়ন্ত্রণ পথ।

WebTransport একটি ভিন্ন স্ট্রিমিং আকার

WebTransport একটি নিরাপদ সেশনের মাধ্যমে নির্ভরযোগ্য স্ট্রিম এবং নির্ভরযোগ্য নয় এমন ডাটাগ্রাম একত্রিত করে। এটি TCP kTLS ব্যবহার করে না।Webshipএর সীমাবদ্ধ ডায়াগনস্টিক এন্ডপয়েন্ট উত্সগুলো যাচাই করে এবং সেশন, স্ট্রীম, ক্যাপসুল, ডাটাগ্রাম, বাইট এবং আইডল-টাইম সীমা প্রয়োগ করে।

১.৩.১ ক্ষমতা রান-এ, সরাসরিWebTransport নির্ভরযোগ্য স্ট্রিমের জন্য 1,018.1 MiB/s এবং ডেটাগ্রামের জন্য 1,038.9 MiB/s পৌঁছেছে। TLS পাস-থ্রু যথাক্রমে 548.6 MiB/s এবং 629.7 MiB/s পৌঁছেছে। উভয় মোডই সব পাঁচটি স্যাম্পল পাশ করেছে শূন্য প্রত্যাখ্যাত স্যাম্পল, শূন্য হারানো ডেটাগ্রাম, এবং শূন্য ক্লায়েন্ট প্রধান ত্রুটি সহ।

পছন্দ করাHTTP/3 নতুন জন্যWebTransport গ্রাহকরা। HTTP/2 পুরানো মেয়াদোত্তীর্ণ-খসড়া সেটিংসগুলির সাথে সামঞ্জস্যতার জন্য পথ বিদ্যমান।

প্রোডাকশন ট্রাফিকের আগে কী যাচাই করতে হবে

  1. আপনি যে যথার্থ মিডিয়া বা নিদর্শন আকার সরবরাহ করবেন তা পরীক্ষা করুন, শুধুমাত্র একটি ছোট নকল প্রতিক্রিয়া নয়।
  2. গ্রাহকের কাছে প্রতিক্রিয়ার দৈর্ঘ্য এবং বিষয়বস্তু হ্যাশ যাচাই করুন।
  3. ব্যায়ামের বাতিলকরণ, রেঞ্জের অনুরোধ, ধীর পাঠক, এবং উৎস অর্ধ-বন্ধ আচরণ।
  4. CPU, মেমোরি, সকেট ত্রুটি, পুনরায় প্রেরণ, এবং টেইল লেটেন্সির সাথে স্থায়ী থ্রুপুট পরিমাপ করুন।
  5. ডাইরেক্ট, TLS-সমাপ্ত এবং পাস-থ্রু মোড আলাদাভাবে যাচাই করুন; এদের বিভিন্ন নিরাপত্তা এবং রাউটিং সীমা রয়েছে।
  6. সাধারণ প্রোডাকশন ট্রাফিকের জন্য যন্ত্রপাতি বন্ধ রাখুন, তারপর তদন্ত করার সময় সচেতনভাবে সীমিত ডায়াগনস্টিক সক্রিয় করুন।
  7. কর্ণেল, কনটেইনার, বা সিস্টেমড স্যান্ডবক্স পরিবর্তনের পর লিনাক্স kTLS এবং BBR প্রিফ্লাইট পুনরায় পরীক্ষা করুন।

পূর্ণ পথটি সহযোগিতা করলে স্ট্রীমিং দ্রুত হয়।Webship'র ডিজাইন বড়-ডেটা অপ্টিমাইজেশনগুলো প্রোটোকল-নির্দিষ্ট রাখে একই সময়ে একটি অপারেশনাল মডেল এবং একটি সঠিকতার মান বজায় রেখে।

সম্পূর্ণ পড়ুন [Webship ১.৩.১ নথিভুক্তি](/docs/1.3.1), [বেঞ্চমার্ক পদ্ধতি ও প্রতিযোগীর ম্যাট্রিক্স](/benchmarks) পরিদর্শন করুন, অথবা [ডাউনলোড](/downloads) থেকে স্বাক্ষরিত বিল্ড ডাউনলোড করুন।