تلگرام چگونه فایل upload میکند:
- بر اساس سرعت اینترنت شما میزان بافر چانک را مشخص یکند
- در حداکثر ۴ connection فایل را به صورت پارت پارت به سرور ارسال میکند (تعداد پارت ها تابعی است بر اساس حجم فایل)
- پس از ارسال همه فایلها یک api دیگر را فراخوانی میکند که وظیفه ان ایجاد فایل نهایی بر روی media data center است و هچنین تنظیمات مرتبط با cdn برای ان فایل (و البته تهیه چند نسخه از فایل)
به عبارت دیگر در حالتی که اینترنت سرعت مناسب دارد فرایند را میتوانید اینگونه تصور کنید ۴ thread در چانک های موازی یک فایل در پوشه tmp سرور ایجاد میکنند وقتی کار پایان یافت بخشهای مختلف با هم ترکیب شده و در مقصد نهایی نوشته میشود. میدانیم که برای این scale حتما از network file system ها و یا فایل سیستمهای توزیع شده استفاده میکنند.
پ.ن. البته با پیچیدگی های کمی بیشتر :)
- بر اساس سرعت اینترنت شما میزان بافر چانک را مشخص یکند
- در حداکثر ۴ connection فایل را به صورت پارت پارت به سرور ارسال میکند (تعداد پارت ها تابعی است بر اساس حجم فایل)
- پس از ارسال همه فایلها یک api دیگر را فراخوانی میکند که وظیفه ان ایجاد فایل نهایی بر روی media data center است و هچنین تنظیمات مرتبط با cdn برای ان فایل (و البته تهیه چند نسخه از فایل)
به عبارت دیگر در حالتی که اینترنت سرعت مناسب دارد فرایند را میتوانید اینگونه تصور کنید ۴ thread در چانک های موازی یک فایل در پوشه tmp سرور ایجاد میکنند وقتی کار پایان یافت بخشهای مختلف با هم ترکیب شده و در مقصد نهایی نوشته میشود. میدانیم که برای این scale حتما از network file system ها و یا فایل سیستمهای توزیع شده استفاده میکنند.
پ.ن. البته با پیچیدگی های کمی بیشتر :)
یک کاربر در تلگرام چه تعداد connection با سرور دارد:
۱. یکی برای درخواستهای رایج
۴. چهار تا برای upload
۲. دو تا برای دانلود
۱. یکی برای دریافت internal push
۱. یکی برای کارهای موقتی و حساس
۱. یکی برای درخواستهای رایج
۴. چهار تا برای upload
۲. دو تا برای دانلود
۱. یکی برای دریافت internal push
۱. یکی برای کارهای موقتی و حساس
یکی از منابع بسیار خوب برای آشنایی با raft در لینک زیر آورده شده است. این پروتکل در پیاده سازی سیستم های توزیع شده کاربرد دارد.
http://thesecretlivesofdata.com/raft/
https://raft.github.io/
#raft
http://thesecretlivesofdata.com/raft/
https://raft.github.io/
#raft
https://instagram-engineering.com/open-sourcing-a-10x-reduction-in-apache-cassandra-tail-latency-d64f86b43589
#db #cassandra
#db #cassandra
Medium
Open-sourcing a 10x reduction in Apache Cassandra tail latency
At Instagram, we have one of the world’s largest deployments of the Apache Cassandra database. We began using Cassandra in 2012 to replace…