Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • قائمة القراءة
  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©
How LinkedIn Improves Microservices Performance With Protobuf
  • Microservices
  • System Design
  • Distributed Systems
  • Web Development
  • Backend

How LinkedIn Improves Microservices Performance With Protobuf

تعالوا نشوف مع بعض بعض التحديات اللي فريق المهندسين في لينكدإن واجهوها مع JSON والعملية اللي استخدموها لتقييم حلول جديدة وفي النهاية اختيارهم لـ Google Protocol Buffers (Protobuf) كبديل

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • 2 Aug, 2024
  • •
  • 2 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email

المقدمة

كل يوم، لينكدإن بتتعامل مع مليارات الطلبات من الأعضاء عبر كل منصاتها، بما فيها تطبيقات الويب والموبايل.
من المهم جدًا إن الطلبات دي زي مشاهدة صفحات الشركات، قراءة مقالات على لينكدإن، أو مشاهدة الاتصالات Network Connections مع الناس، تتنفذ بسرعة وما يكونش فيه تأخير في تحميل الصفحات دي.

وعشان جزء مهم من أهداف لينكدإن هو جعل المحترفين في العالم أكثر إنتاجية ونجاح، فأوقات تحميل الصفحات بتلعب دور كبير في ده. علشان نضمن إن الأعضاء بيستمتعوا بتجربتهم على المنصة وبيتنقلوا بسرعة، فقاموا مؤخرًا ضايفين Encoding Solution في Rest.li اللي بيستعملوه بشكل كبير في الـ Microservices عندهم، وده اللي نتج عنه تقليل في الـ Latency وتحسين الـ Resource Utilization.


Rest.li

طورت ليندإن Rest.li وهو عبارة عن إطار عمل REST مفتوح المصدر تم بناؤه واستخدامه بشكل كبير في لينكدإن للتطوير من الـ Microservices عشان تلبية طلبات الأعضاء.

والـ Microservices بتنظم كل الـ Platforms اللي في لينكدإن كمجموعة من الـ Loosely Coupled Services، وبتتواصل من خلال بروتوكولات خفيفة. فمن خلال استعمال Rest.li مكنهم ده من بناء RESTful Architectures تكون قوية وقابلة للتوسع من خلال استعمال الـ Type-Safe Bindings والـ Uniform Interface Design، ومبادئ الـ Consistent Data Modeling.

ومن خلال طبقات مختلفة في الـ Tech Stack في لينكدإن، فيه أكتر من 50,000 API Endpoints لـ Rest.li مستخدمة في الـ Production في لينكدإن.

ومن ساعة تقديم Rest.li وهو بيستخدم JSON كـ Serialization Format افتراضي. وعلى الرغم من إن JSON كان بيخدمهم كويس جدًا من حيث دعم لغات البرمجة الواسع وسهولة القراءة البشرية (اللي بتسهل عملية تصحيح الأخطاء)، إلا إن أدائه وقت التشغيل كان بعيد عن المثالي. وعلى الرغم من إنهم حاولوا يحسنوا من أداء الـ Serialization في JSON في Rest.li، إلا إنه فضل يكون Bottleneck في كتير من الـ Performance Profiles.

فتعالوا نشوف مع بعض بعض التحديات اللي فريق المهندسين في لينكدإن واجهوها مع JSON والعملية اللي استخدموها لتقييم حلول جديدة وفي النهاية اختيارهم لـ Google Protocol Buffers (Protobuf) كبديل.

وهنشوف كمان تفاصيل دمج Protobuf في Rest.li والفوائد اللي نتجت عن ده، بما في ذلك تقليل الـ Latency بنسبة تصل إلى 60% وتحسين الـ Resource Utilization بنسبة 8%.


Addressing Challenges With JSON

كلنا عارفين ان JSON بيقدم دعم واسع للغات البرمجة وكمان سهل في القراءة البشرية. ومع ذلك، في لينكدإن، كان فيه بعض التحديات اللي نتج عنها Performance Bottlenecks.

  1. التحدي الأول هو إن JSON تنسيق نصي، واللي بيكون كتير الكلام. وده طبعًا بيؤدي لزيادة في الـ Network Bandwidth وزيادة الـ Latency، وده أقل من المثالي.وعلى الرغم من إن الحجم ممكن يتحسن باستخدام خوارزميات الضغط القياسية زي gzip، إلا إن الضغط وفك الضغط برضو من الناحية التانية بيستهلك موارد أجهزة إضافية، وممكن يكون مكلف جدًا أو غير متاح في بعض البيئات.
  2. التحدي الثاني اللي واجهناه هو إن بسبب الطبيعة النصية لـ JSON، كان الـ Serialization والـ Deserialization من ناحية الـ Latency والـ Throughput مش أحسن حاجة. وفي لينكدإن، بيستعملوا لغات Garbage Collected زي Java و Python، فتحسين الـ Latency والـ Throughput كان مهم لضمان الكفاءة.

فلما بحثوا عن بديل لـ JSON، كانوا عايزين بديل يلبي بعض المعايير :

  1. أول حاجة كانوا محتاجينها هي Compact Payload Size عشان يحافظوا بالطبع على الـ Network Bandwidth ويقللوا الـ Latencies اللي بنتنج عن ده.كمان كانوا بيدوروا على كفاءة عالية في الـ Serialization والـ Deserialization عشان برضو يقللوا من الـ Latency ويحسنوا من الـ Throughput.
  2. معيار تاني كان إنه يكون فيه دعم واسع للغات البرمجة - Rest.li بيستخدم في لغات برمجة متعددة (Java, Kotlin, Scala, ObjC, Swift, JavaScript, Python, Go) في لينكدإن، فكانوا عايزين دعم في كل لغات البرمجة المدعومة دي.
  3. وأخيرًا، كانوا عايزين بديل ممكن يندمج بسهولة في آلية الـ Serialization الحالية لـ Rest.li. وده عشان يساعدهم انهم يكملوا استخدام الـ Data Modeling اللي موجودة اصلًا في Rest.li.

وبعد تقييم شامل لعدة تنسيقات زي Protobuf, Flatbuffers, Cap’n’Proto, SMILE, MessagePack, CBOR, و Kryo، قرروا إن Protobuf هو أفضل خيار لأنه أدى بشكل أكثر فعالية عبر المعايير المذكورة واللي كانوا حاطينها كأهداف محتاجين يوصلولها باستبدال JSON.

How Protobuf Works?

Integrating Protobuf in Rest.li

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

مقالات ذات صلة

  • Streaming Service System Design Use Case 1 min read

    Streaming Service System Design Use Case

    Mohamed Aly Mohamed Aly • 21 Oct, 2025
    Mohamed Aly Mohamed Aly
    Software Engineer
    • Website
  • Alerts & Alarms System Design 2 min read

    Alerts & Alarms System Design

    Mohamed Aly Mohamed Aly • 10 Oct, 2025
    Mohamed Aly Mohamed Aly
    Software Engineer
    • Website
  • Halo Gameplay Scales Beyond Billion of Games Using Saga Pattern 4 min read

    Halo Gameplay Scales Beyond Billion of Games Using Saga Pattern

    Mahmoud Youssef Mahmoud Youssef • 26 Sep, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Top 6 API Performance Techniques 2 min read

    Top 6 API Performance Techniques

    Alaa Elkzaz Alaa Elkzaz • 18 Jul, 2025
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • Redis Persistence 1 min read

    Redis Persistence

    Mahmoud Youssef Mahmoud Youssef • 4 Jul, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Building Scalable Financial Systems with Microservices 1 min read

    Building Scalable Financial Systems with Microservices

    Mohammed Gamal Mohammed Gamal • 30 Jun, 2025
    Mohammed Gamal Mohammed Gamal
    FinTech Backend Lead
    • Website
  • Top 16 Kubernetes Essential Components 1 min read

    Top 16 Kubernetes Essential Components

    Alaa Elkzaz Alaa Elkzaz • 27 Jun, 2025
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • High Availability in Distributed Systems 1 min read

    High Availability in Distributed Systems

    Oussama Djaidri Oussama Djaidri • 27 Jun, 2025
    Oussama Djaidri Oussama Djaidri
    Front-End Engineer
    • Website
  • gRPC 1 min read

    gRPC

    Mahmoud Youssef Mahmoud Youssef • 4 Jun, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • API Gateway 1 min read

    API Gateway

    Mahmoud Youssef Mahmoud Youssef • 21 May, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!

اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©