Nasser Niazy
Nasser Niazy
خواندن ۲ دقیقه·۳ سال پیش

بررسی تخصصی معماری و تکنولوژی پیام رسان لینکداین

می دونستید لینکداین با جاوا-اسکالا کد شده

بخش پیامرسان-رییل تایم با فریم ورک Akka وPlay Framework کد شده

معماری Event-Sourcing و از مدل Akka Actor Model استفاده شده .

نگه داری کانشن ها روی Couchbase انجام میشه .

این بخش برای ارتباط با کلاینت فرانت از تکنولوژی SSE(Server Sent Event)استفاده می کنه . این تکنولوژی در همه مرورگرها (اینترنت اکسپلورر) ساپورت نمیشه . و میشه به جای اون از webSocket یا نوع پیشرفته تر اون یعنی Socket.io استفاده کرد در واقع فرق این دو این هست که SSE یک طرفه هست و کلاینت فقط به سرور گوش میده ولی WebSocketدو طرفه همزمان bidirectional هست . تیم فنی انتخاب این تکنولوژی رو سازگار بودن با مرورگرهای بیشتر عنوان کرده و قوی تر بودن WebSocket رو تایید کردند .


بخش پیام رسان لینکداین از هسته کاملآ جداست و مستقل کار می کنه و برای سرعت و مقیاس پذیری با apache Kafka طراحی نشده . به خاطر همین رسیدن پیامها بین کاربران رو گارانتی نمی کنه .

در واقع هر کاربر می تونه هزاران پیام بصورت متن فیلم ، پست ، لینک و تصویر از میلیون ها نفر دریافت کنه

و چون معماری بصورتی هست که سرور فرانت از بک جدا هست و هرکدام مستقلآ مقیاس پذیر هستند اگر کافکا استفاده می شد به ازای افزودن سرور جدید سرور فرانت باید میلیون ها تاپیک رو سایسکرایب می کرد و نگه داشتن این حجم عظیم از کانکشن ها سرعت و منابع سیستم رو تحت تاثیر می گذاشت.

برای لود تست سیستم روشی رو استفاده کردند که نامش رو لانچ تاریک dark launch گذاشتند . در این روش یک شبیه ساز نوشته شده تا ترافیک شبیه به محیط واقعی با همون الگوی رشد تولید کنه و اون رو روی یک سیستم تک کلاستره بدون رپلیکا تست کردند .این ابزار رو با استفاده از Akka actors نوشته اند .

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

مشکل اولی که بروز کرده علارقم توان بک اند در هندل کردن میلیون های کانکشن همزمان (چت یک نفر با میلیون ها نفر بصورت همزمان )

کرنل بیش از 128 کانشن همزمان رو نداشته و این مشکل با دستکاری پارامتر های سیستم عامل در مسیر

/etc/sysctl.conf

حل شد . مشکللاتی مثل تعداد نخ ها و اندازه heap درJVM رو حل کردند .

سایر منابع
https://www.infoq.com/podcasts/linkedin-realtime-messaging-architecture


software archetecturesoftware design
بیش از ۱۰ سال سابقه برنامه نویسی وب و سیستم های پیچیده. معماری و رهبری پروژه های بزرگ نرم افزاری.
شاید از این پست‌ها خوشتان بیاید