Преглед садржаја[Сакрити][Прикажи]
ВхатсАпп је програм за размену друштвених порука који омогућава корисницима да размењују поруке једни са другима.
Да ли сте икада размишљали о томе како функционише ВхатсАпп?
Који су концепти који су у основи његовог стварања и рада?
Овај чланак ће говорити о основама ВхатсАпп-а дизајн система.
Такође ћемо проћи кроз општу архитектуру ВхатсАпп-а, која се може користити за прављење било које врсте софтвера за ћаскање.
Дакле, без даљег одлагања, хајде да погледамо дизајн система ВхатсАпп!
1. Кључни захтеви
ВхатсАпп је високо скалабилна технологија коју користе многи људи широм света. Као резултат тога, требало би да буде добро дизајниран да практично увек буде поуздан и функционалан.
Као резултат тога, одређивање критичних потреба система је критично.
Ово су минимални захтеви за ВхатсАпп мессенгер:
- Способан да олакша интеракције један на један.
- Могућа је и потврда поруке и последње виђење (Послато, Испоручено и Прочитано).
- Дозволите енд-то-енд енкрипцију и подршку за медије (слике/видео записи).
Хајде да сазнамо колики капацитет захтева наша неопходна услуга.
2. Процена капацитета
Наш циљ је да створимо платформу способну да се носи са великом количином саобраћаја. Претпоставимо да се дневно пошаље 10 милијарди СМС-ова. Имамо:
- Сваког дана милијарду људи пошаље 10 милијарди СМС-ова.
- На врхунцу саобраћаја (у секунди), 700,000 људи је било активно (6Кс просек)
- Током вршне употребе, 40 милиона порука се преноси у секунди.
- Просечна дужина поруке је 160 карактера: 10Б * 160 = 1.6ТБ података се генерише сваки дан.
- Узмите за пример десет година радног стажа: 10 * 1.6Б * 365 ПБ
- Целокупна апликација ће бити састављена од микросервиса, од којих ће свака извршавати специјализовани задатак. Претпоставимо да слање поруке траје 20 милисекунди и да постоји 100 истовремених веза по серверу. Као резултат, предвиђени број потребних сервера за ћаскање = (кашњење порука ћаскања у секунди)/ истовремене везе по серверу = 40М * 20мс / 100 = 8000 сервера.
3. Архитектура високог нивоа
Овај систем је изграђен на две основне услуге. Услуга ћаскања и пролазна услуга, на пример. Услуга ћаскања обрађује сав саобраћај који генеришу онлајн поруке корисника. Истовремено, привремена услуга управља саобраћајем када је корисник ван мреже.
Ако је корисник онлајн, за испоруку порука је задужен сервис за ћаскање.
Провериће да ли је прималац поруке онлајн или не; ако је прималац онлајн, ова услуга ће одмах испоручити поруку; ако прималац није онлајн, пролазна услуга ће му послати поруку када се врати онлајн.
Привремени сервис чува одвојено складиште за чување привремено доступних података док се офлајн корисник поново не повеже.
Дизајнирање АПИ-ја високог нивоа
Ова услуга има два функционална АПИ-ја високог нивоа за слање и читање порука. Систем се може имплементирати коришћењем РЕСТ архитектуре.
Параметри за слање порука
Овај АПИ ће се користити за пренос порука између два корисника.
Параметри разговора
Овај АПИ се користи за приказ ћаскања са нитима. Сматрајте да је ово прва ствар коју видите када отворите ВхатсАпп. Желели бисмо да добијемо само неколико порука за једног корисника у једном АПИ упиту. Да бисте ово решили, потребни су параметри померања и бројања порука.
Које су функције функција као што су последњи пут виђено, једнократно и двоструко?
Важна улога у примени ових услуга је услуга потврде. Ове функције су развијене пошто ова услуга наставља да генерише и проверава одговоре на потврду.
- Један крпељ: Када порука од корисника А стигне до корисника Б, сервер шаље један тик који потврђује да је порука послата.
- Двострука квачица: Након што је порука сервера послата кориснику Б преко одговарајуће везе, корисник Б ће потврдити пријем поруке на сервер. Сервер ће тада кориснику А дати још једну потврду. Као резултат, појавиће се дупликат.
- Плави крпељ: Корисник Б ће послати још једну потврду серверу након провере поруке. Сервер ће затим послати кориснику А додатну поруку потврде. Након тога ће се на екрану корисника А појавити плава квачица.
- Последњи пут: Механизам откуцаја срца је у потпуности одговоран за последњу виђену функцију. Сваких 5 секунди, откуцај срца се преноси на сервер, који води евиденцију о последњем виђеном статусу сваког корисника у табели којој сваки други корисник може лако да приступи.
4. Пројектовање кључних карактеристика
Персонализована интеракција
Ово је неопходан део услуге ћаскања. Корисник може једноставно да шаље поруке другом кориснику користећи ову услугу. Хајде да погледамо како ово функционише:
Претпоставимо да Џеј жели да комуницира са Ајушом. Џеј је повезан са сервером за ћаскање са којим прима поруку. Џеј добија потврду од сервера за ћаскање да је порука послата. Сервер за ћаскање сада тражи информације из складишта података о серверу за ћаскање на који је Ааиусх повезан. Џејов сервер за ћаскање сада преноси поруку Ааиусх-овом серверу за ћаскање, а Ааиусх прима поруку путем пусх механизма. Ааиусх сада шаље потврду Џејевом серверу за ћаскање, који обавештава Џеја да је порука испоручена. Ако је Ајуш поново прочитао поруку, Џеју је испоручено ново признање да је порука прочитана.
Статус активности корисника
Последњи пут када је особа била активна је редовна карактеристика инстант месинџера.
Систем за одржавање везе између клијента и сервера је приказан на овом дијаграму. Веб утичнице су коришћене за успостављање двосмерне везе између сервера и клијента. Ове везе шаљу откуцаје срца, који се користе за праћење статуса активности корисника.
Приватност од краја до краја
Енкрипција од краја до краја је кључна карактеристика која осигурава да само корисници који разговарају могу читати комуникације. Јавни кључ се дели између свих корисника укључених у комуникацију и кључан је за одржавање енд-то-енд енкрипције. Претпоставимо да на каналу постоје два корисника, Јаи и Ааиусх, који међусобно комуницирају.
Џеј има Аајушов јавни кључ, а Аајуш има Џејов јавни кључ као и њихов недељени приватни кључ. Као резултат тога, када Џеј пренесе поруку, он је шифрује Ајушовим јавним кључем, који се може декодирати само Ајушовим приватним кључем.
Слично, Џеј ће моћи да декодира само Ајушову комуникацију. Као резултат, само Јаи и Ааисух ће моћи да виде међусобну комуникацију, а сервер ће само функционисати као капија у целом процесу.
5. Уска грла
Сваки систем је склон квару. Да би се управљало тако великим обимом саобраћаја, услуга мора остати оперативна и толерантна на грешке у сваком тренутку како би се избегла уска грла. Пошто се наша услуга у потпуности ослања на сервере за ћаскање и пролазне сервере, морамо решити све проблеме који произилазе из њиховог рада.
Грешка сервера за ћаскање: Ово је срце нашег система. Када су корисници онлајн, он је одговоран за управљање и испоруку порука. Као резултат, овај систем одржава везе са својим корисницима.
Као резултат тога, ако ова услуга не успе, цела архитектура ће патити. Постоје два приступа управљању кваром сервера за ћаскање. Једна метода је пребацивање ТЦП веза на други сервер, док је друга омогућавање корисницима да аутоматски започну везе у случају губитка везе.
Грешка привремене меморије: Још једна компонента склона квару која би евентуално могла оштетити целу услугу је привремено складиштење. Поруке на путу ка корисницима ван мреже се губе ако ова услуга не успе.
Губитак поруке можемо спречити реплицирањем привременог складишта сваког корисника. Као резултат тога, реплика се може користити за обраду функција кад год се корисник врати онлајн. Ако оригинални сервер постане доступан, и оригинална и реплика инстанце корисниковог пролазног складишта се комбинују у једно складиште.
6. Технике оптимизације
Латентност: Да би пружила беспрекорно и побољшано искуство клијента, услуга месинџера мора да буде у реалном времену. Као резултат тога, кашњење се мора смањити кеширањем дела података којима се често приступа. Можемо да кеширамо статус активности корисника и недавне разговоре у меморији користећи дистрибуирани кеш као што је Редис.
Доступност: Потребно нам је да наша услуга буде доступна већину времена. Наш систем мора бити толерантан на грешке, тако да можемо задржати неколико копија пролазних порука тако да се свака изгубљена порука може брзо опоравити из својих дупликата. Као резултат тога, доступност система не може бити угрожена.
Zakljucak
Наш систем сада подржава само неколико могућности, али га лако можемо проширити да бисмо додали групна ћаскања за дистрибуцију порука неколико појединаца. Такође можете да обезбедите могућности видео и телефонских позива. Овај систем се такође може развити тако да корисници могу објављивати ажурирања статуса или наративе и читати једни друге.
Напорно сам радио да вам пружим преглед на високом нивоу дизајна ВхатсАпп система. Надам се да сте уживали и да ћете га добро искористити.
Ostavite komentar