حسین بیگی
حسین بیگی
خواندن ۲ دقیقه·۲ سال پیش

مهندسی جالب دریافت ایموجی های Disney Hotstar

چجوری Disney Hotstar 5میلیارد ایموجی رو دریافت و پردازش میکنه.

پستی دیدم از Alex Xu که ترجمش خالی از لطف نبود و میتونست یک تصویر از بالا در نحوه طراحی سیستم های بزرگ بهم بده:

قبلش بگم اصلا برنامه چی بوده، ببینید دیزنی یک سرویسی داره که اجازه میده زمانی که شما داری یک مسابقه رو نگاه میکنی بتونی با ایموجی احساساتت رو ابراز کنی.

حالا یک مطلب توی بلاگ مهندسی اینها نوشته شده که خلاصش رو توی پست Alex Xu دیدم!

1.کلاینت های ما از راه HTTP ایموجی ها رو میفرستن به یک وب سرور GO که خب این زبان به خاطر توانایی هاش توی concurrency انتخاب شده.

2.از اونجایی که میزان داده ها خیلی زیاده خب طبیعتا Kafka میاد وسط تا بتونه بافر مانند یک صفی از ایموجی ها رو داشته باشه.(خودم : این باعث میشه که کاربر هیچ وقت حس نکنه که ایموجیش ثبت نشده در حقیقت اگر سرویس ها شلوغ باشن کافکا این امر رو برعهده میگیره و به مرور زمان داده ها رو میده به سرویس ها !اینجوری از دید کاربر انگار ری اکشنش توی سیستم ثبت شده!)

3.حالا این ایموجی ها توسط Spark که این امر هر دو ثانیه اتفاق می­افته که شاید بگیدد خب چرا کمتر نباشه خب در حقیقت برای کمتر کردن این زمان باید منابع سیستم ها افزایش پیدا کنه!دیگه باید بالانسش انتخاب بشه.

4.خب دوباره این داده هایی که پردازش شدن ریخته میشن توی یک کافکا دیگه!

5.حالا سرویس های PubSub ایموجی ها از کافکا می­گیرن!

6.اون سرویس های PubSub ایموجی ها رو به کلاینت های دیگه می فرستن!

7.زیر ساخت های PubSub استفاده شده هم جالبن!اومدن از پرتکل های Socketio, NATS, MQTT, and gRPC, and settled with MQTT استفاده کردن.(اگه علاقمند هستید توی کامنت ها منابع رو گذاشتم)

نکته جالب این که تقریبا همین روش رو لینکدین برای هندل لایک هاش استفاده میکنه.

Sources:

[1] Capturing A Billion Emo(j)i-ons: https://lnkd.in/e24qZK2s

[2] Building Pubsub for 50M concurrent socket connections: https://lnkd.in/eKHqFeef

[3] Streaming a Million Likes/Second: Real-Time Interactions on Live Video: https://lnkd.in/eUthHjv4

disney hotstarحسین بیگی
شاید از این پست‌ها خوشتان بیاید