প্রোটোবুফ বনাম জিআরপিসি


101

আমি প্রোটোবুফ এবং জিআরপিসি এবং কীভাবে আমি উভয় ব্যবহার করতে পারি তা বোঝার চেষ্টা করি। আপনি কি আমাকে নিম্নলিখিত বুঝতে সাহায্য করতে পারেন:

  • ওএসআই মডেলটি বিবেচনা করে কোথায় কী আছে, উদাহরণস্বরূপ স্তর 4 এ প্রোটোবুফ?
  • একটি বার্তা স্থানান্তর মাধ্যমে ভেবে কীভাবে "প্রবাহ" হয়, জিআরপিসি কী করছে যা প্রোটোবফ মিস করে?
  • প্রেরক প্রোটোবুফ ব্যবহার করে সার্ভারটি কি জিআরপিসি ব্যবহার করতে পারে বা জিআরপিসি এমন কিছু যুক্ত করতে পারে যা কেবলমাত্র একটি জিআরপিসি ক্লায়েন্ট সরবরাহ করতে পারে?
  • জিআরপিসি যদি সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস যোগাযোগকে সম্ভব করে তুলতে পারে, প্রোটোবুফ কেবল মার্শালিংয়ের জন্য এবং তাই রাষ্ট্রের সাথে কিছুই করার নেই - সত্য বা মিথ্যা?
  • আমি কি আরআরইএসটি বা গ্রাফকিউএল এর পরিবর্তে যোগাযোগ করা ফ্রন্টএন্ড অ্যাপ্লিকেশনটিতে জিআরপিসি ব্যবহার করতে পারি?

আমি ইতিমধ্যে জানি - বা ধরে নিই আমি - তা:

প্রোটোবুফ

  • ডেটা এক্সচেঞ্জের জন্য বাইনারি প্রোটোকল
  • গুগল ডিজাইন করেছেন
  • "স্ট্রাক্ট" ক্লায়েন্ট এবং সার্ভারে বর্ণা - যেমন মার্শাল বার্তা আনতে ব্যবহার করে

জিআরপিসি

  • প্রোটোবুফ (v3) ব্যবহার করে
  • আবার গুগল থেকে
  • আরপিসি কলগুলির জন্য ফ্রেমওয়ার্ক
  • পাশাপাশি HTTP / 2 ব্যবহার করে
  • সিঙ্ক্রোনাস এবং অ্যাসিক্রোনাস যোগাযোগ সম্ভব

ইতিমধ্যে প্রযুক্তিটি ব্যবহার করা কারও জন্য আমি এটি আবার একটি সহজ প্রশ্ন অনুমান করি। আমার সাথে ধৈর্য ধরতে এবং আমাকে সাহায্য করার জন্য আমি আপনাকে ধন্যবাদ জানাতে চাই। প্রযুক্তিগুলির যে কোনও নেটওয়ার্ক গভীর ডাইভের জন্য আমি সত্যই ধন্যবাদ জানাতে চাই।

উত্তর:


85

প্রোটোকল বাফার হ'ল (হয়?) একটি ইন্টারফেস সংজ্ঞা ভাষা এবং সিরিয়ালাইজেশন লাইব্রেরি:

  • আপনি এটির আইডিএলে আপনার ডেটা স্ট্রাকচারগুলি সংজ্ঞায়িত করেন অর্থাৎ আপনি যে ডেটা অবজেক্টগুলি ব্যবহার করতে চান তা বর্ণনা করুন
  • এটি বাইনারি থেকে এবং আপনার ডেটা অবজেক্টগুলিকে অনুবাদ করার জন্য রুটিন সরবরাহ করে, যেমন ডিস্ক থেকে ডেটা লেখার / পড়ার জন্য

জিআরপিসি একই আইডিএল ব্যবহার করে তবে সিনট্যাক্স যুক্ত করে "আরপিসি" যা আপনাকে প্রোটোবুফ ডেটা স্ট্রাকচার ব্যবহার করে ডেটা প্রকার হিসাবে দূরবর্তী প্রক্রিয়া কল পদ্ধতি স্বাক্ষরগুলি সংজ্ঞায়িত করতে দেয়:

  • আপনি আপনার ডেটা স্ট্রাকচারের সংজ্ঞা দিন
  • আপনি আপনার আরপিসি পদ্ধতির সংজ্ঞা যুক্ত করুন
  • এটি কোনও নেটওয়ার্কের মাধ্যমে মেথড স্বাক্ষরগুলি পরিবেশন করতে এবং কল করার জন্য কোড সরবরাহ করে
  • আপনার যদি প্রয়োজন হয় তবে আপনি প্রোটোবুফের সাথে ম্যানুয়ালি ডেটা অবজেক্টগুলিকে সিরিয়ালাইজ করতে পারেন

প্রশ্নের উত্তরে:

  1. জিআরপিসি 5, 6 এবং 7 স্তরে কাজ করে Prot
  2. আপনি যখন "বার্তা স্থানান্তর" বলবেন, প্রোটোবুফ নিজেই স্থানান্তর নিয়ে উদ্বিগ্ন নন। এটি কেবল কোনও ডেটা স্থানান্তরের উভয় প্রান্তে কাজ করে, বাইটগুলিকে বস্তুতে পরিণত করে
  3. ডিফল্টরূপে জিআরপিসি ব্যবহারের অর্থ আপনি প্রোটোবুফ ব্যবহার করছেন । আপনি নিজের ক্লায়েন্ট লিখতে পারেন যা প্রোটোবুফ ব্যবহার করে তবে জিআরপিসির সাথে ইন্টারঅ্যাপের জন্য জিআরপিসি নয়, বা অন্য সিরিয়ালের জিআরপিসিতে প্লাগইন করতে পারে - তবে জিআরপিসি ব্যবহার করা আরও সহজ হবে
  4. সত্য
  5. হ্যা, তুমি পারো

আপনি দয়া করে আমাকে বলতে পারেন আপনি লোকেরা কোন "স্তর" সম্পর্কে কথা বলছেন? এই ধারণাটি বিস্তারিতভাবে বুঝতে দয়া করে আমাকে লিঙ্ক দিন। ধন্যবাদ
মিলি হাডসন

এটির ওএসআই মডেল - প্রশ্নের একটি লিঙ্ক যুক্ত করেছে। এটি বিতর্কযোগ্য যে জিআরপিসি স্তর 5 এবং 6 এর অন্তর্ভুক্ত কারণ এটি একটি স্তর 7 প্রোটোকল ( HTTP/2) ব্যবহার করে, তবে এটি অবশ্যই সেই স্তরগুলির কাজ করে।
পিটার উইশার্ট

67

আসলে, জিআরপিসি এবং প্রোটোবুফ 2 সম্পূর্ণ ভিন্ন জিনিস। আমাকে সরল করুন:

  • জিআরপিসি কোনও ক্লায়েন্ট এবং সার্ভারের সাথে ইন্টারেক্ট করতে পারে সেভাবে পরিচালনা করে (কেবল একটি ওয়েব ক্লায়েন্ট / সার্ভারের মতো একটি আরএসটি এপিআই)
  • প্রোটোবুফ কেবল একটি সিরিয়ালাইজেশন / ডিসরিয়ালাইজেশন সরঞ্জাম (ঠিক জেএসএনের মতো)

জিআরপিসির দুটি দিক রয়েছে: একটি সার্ভার সাইড এবং একটি ক্লায়েন্ট সাইড, এটি একটি সার্ভার ডায়াল করতে সক্ষম। সার্ভারটি আরপিসিগুলি উন্মুক্ত করে (যেমন ফাংশন যা আপনি দূর থেকে কল করতে পারেন)। এবং আপনার কাছে প্রচুর বিকল্প রয়েছে: আপনি যোগাযোগটি সুরক্ষিত করতে পারেন (টিএলএস ব্যবহার করে), প্রমাণীকরণ স্তর যুক্ত করতে পারেন (ইন্টারসেপ্টার ব্যবহার করে), ...

আপনি যে কোনও প্রোগ্রামের অভ্যন্তরে প্রোটোবুফ ব্যবহার করতে পারেন, এতে ক্লায়েন্ট / সার্ভার হওয়ার দরকার নেই। আপনার যদি ডেটা এক্সচেঞ্জের প্রয়োজন হয় এবং সেগুলি দৃ strongly়ভাবে টাইপ করতে চান তবে প্রোটোবুফ একটি দুর্দান্ত বিকল্প (দ্রুত এবং নির্ভরযোগ্য)।

বলা হচ্ছে, একটি দুর্দান্ত ক্লায়েন্ট / সার্ভার সিমেট তৈরিতে আপনি উভয়কে একত্রিত করতে পারেন: জিআরপিসি আপনার ক্লায়েন্ট / সার্ভার কোড এবং আপনার ডেটা প্রোটোকল প্রোটবফ করবে।

পিএস: আমি কীভাবে জিআরপিসি এবং প্রোটোবুফ দিয়ে কোনও ক্লায়েন্ট / সার্ভার তৈরি করতে পারি তা দেখানোর জন্য এই কাগজটি লিখেছিলাম , ধাপে ধাপে using


4
আপনাকে ধন্যবাদ, এটি আমাকে একটি নমুনা বাস্তবায়নে সহায়তা করে।
নিঃসঙ্গ

7

জিআরসিসি হ'ল গুগল দ্বারা নির্মিত একটি কাঠামো এবং এটি গুগল থেকেই উত্পাদন প্রকল্পে ব্যবহৃত হয় এবং # হাইপারল্ডারফ্যাব্রিক জিআরপিসি দিয়ে নির্মিত সেখানে জিপিপি দিয়ে অনেকগুলি ওপেনসোর্স অ্যাপ্লিকেশন রয়েছে

প্রোটোবফ হ'ল জসনের মতো ডেটা উপস্থাপনা এটি গুগল দ্বারাও বাস্তবে তাদের কয়েক হাজার প্রোটো ফাইল তাদের উত্পাদন প্রকল্পে উত্পন্ন হয়

জিপিসি

  • জিআরপিসি হ'ল গুগল দ্বারা বিকাশ করা একটি মুক্ত-উত্স কাঠামো framework
  • এটি আমাদের আরপিসির জন্য অনুরোধ এবং প্রতিক্রিয়া তৈরি করতে এবং কাঠামোর সাহায্যে বিশ্রামটি পরিচালনা করতে দেয় allows
  • REST হ'ল CRUD ভিত্তিক তবে grpc এপিআই ভিত্তিক (কোনও বাধা নেই)
  • HTTP / 2 এর উপরে তৈরি করুন on
  • >>>>> অথথ, লোডবালেন্সিং, মনিটরিং, লগিং সরবরাহ করে
  • [এইচটিটিপি / ২]
    • HTTP1.1 1997 সালে প্রকাশিত হয়েছে অনেক আগে
    • HTTP1 প্রতিটি অনুরোধে একটি সার্ভারের সাথে একটি নতুন টিসিপি সংযোগ খোলে op
    • এটি শিরোনামকে সংকুচিত করে না
    • কোনও সার্ভার পুশ নয়, এটি কেবল রেক, রেস সহ কাজ করে
    • 2015 সালে এইচটিটিপি 2 প্রকাশিত হয়েছে (এসপিডিওয়াই)
    • মাল্টিপ্লেক্সিং সমর্থন করে
    • ক্লায়েন্ট এবং সার্ভার একই টিসিপি সংযোগের সাথে বার্তাগুলিকে সমান্তরালে ঠেলাতে পারে
    • দারুণভাবে বিলম্বিতা হ্রাস করে
    • HTTP2 শিরোনাম সংক্ষেপণ সমর্থন করে
    • HTTP2 বাইনারি হয়
      • প্রোটো বাফ বাইনারি হয় তাই এটি HTTP2 এর জন্য দুর্দান্ত মিল
  • [প্রকার]
    • ইউনারি
    • ক্লায়েন্ট স্ট্রিমিং
    • সার্ভার স্ট্রিমিং
    • দ্বি নির্দেশমূলক স্ট্রিমিং
    • grpc সার্ভারগুলি ডিফল্টরূপে Async হয়
    • grpc ক্লায়েন্টগুলি সিঙ্ক বা অ্যাসিঙ্ক হতে পারে

প্রোটবফ

  • প্রোটোকল বাফারগুলি ভাষা অজ্ঞেয় ic
  • প্রোটোকল বাফার (বাইনারি ফর্ম্যাট) পার্সিং করা কম সিপিইউ নিবিড়
  • [নামকরণ]
    • বার্তার নামের জন্য উটের কেস ব্যবহার করুন
    • আন্ডারস্কোর_ ক্ষেত্রগুলির জন্য পৃথক
    • এনামস এবং CAPITAL_WITH_UNDERSCORE এর মান নামের জন্য ক্যামেলকেস ব্যবহার করুন
  • [মন্তব্য]
    • সমর্থন //
    • সমর্থন / * * /
  • [সুবিধাদি]
    • ডেটা পুরোপুরি টাইপ করা হয়
    • ডেটা সম্পূর্ণ সংকুচিত (কম ব্যান্ডউইথের ব্যবহার)
    • কোড উত্পন্ন করতে এবং কোডটি পড়তে স্কিমা (বার্তা) প্রয়োজন
    • ডকুমেন্টেশন স্কিমে এম্বেড করা যেতে পারে
    • যে কোনও ভাষাতে ডেটা পড়া যায়
    • স্কিমা নিরাপদে যে কোনও সময় বিকশিত হতে পারে
    • এক্সএমএল চেয়ে দ্রুত
    • কোড স্বয়ংক্রিয়ভাবে আপনার জন্য উত্পন্ন করা হয়
    • গুগল প্রোটো বাফ আবিষ্কার করেছে, তারা 48000 প্রোটোবুফ বার্তা এবং 12000. প্রোফাইল ফাইল ব্যবহার করে
    • জিপিপি সহ প্রচুর আরপিসি ফ্রেমওয়ার্ক ডেটা আদান-প্রদানের জন্য প্রোটোকল বাফার ব্যবহার করে

4
কম্প্রেশন সিপিইউ ব্যবহার হ্রাস করে না। আপনি সংকুচিত করার আছে এবং এটা পাঠান বা serialization- যা CPU- র পোড়া মধ্যে ডেটা ব্যবহারের জন্য ডিকম্প্রেস করছেন যে .. কি কম্প্রেশন আপনি পদাঙ্ক ধারাবাহিকভাবে জন্য স্থান কমাবে, সম্ভাব্য মেমরি চাপ, ডিস্ক ব্যবহার হ্রাস করে ডিস্কে ধারাবাহিকভাবে করতেন বা তার নেই তারের সংকেত।
Svartalf

এটি সংশোধন করার জন্য @ স্বরতালফ সম্পাদনা করেছেন। এটা ইশারা জন্য ধন্যবাদ!
স্বাবলম্বী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.