පටුන[සඟවන්න][පෙන්වන්න]
WhatsApp යනු පරිශීලකයින්ට එකිනෙකා සමඟ පණිවිඩ හුවමාරු කර ගැනීමට ඉඩ සලසන සමාජ පණිවුඩකරණ වැඩසටහනකි.
WhatsApp ක්රියා කරන ආකාරය ඔබ කවදා හෝ සලකා බැලුවද?
එහි නිර්මාණය සහ ක්රියාකාරිත්වයට අනුබල දෙන සංකල්ප මොනවාද?
මෙම ලිපිය WhatsApp හි මූලික කරුණු හරහා යයි පද්ධති නිර්මාණය.
අපි WhatsApp හි සාමාන්ය ගෘහ නිර්මාණ ශිල්පය හරහා ද යන්නෙමු, එය ඕනෑම ආකාරයක කතාබස් මෘදුකාංගයක් තැනීමට භාවිතා කළ හැකිය.
ඉතින්, වැඩි කතා නැතුව, WhatsApp හි පද්ධති නිර්මාණය දෙස බලමු!
1. ප්රධාන අවශ්යතා
WhatsApp යනු ලොව පුරා බොහෝ මිනිසුන් විසින් භාවිතා කරන ඉහළ පරිමාණය කළ හැකි තාක්ෂණයකි. එහි ප්රතිඵලයක් වශයෙන්, එය සෑම විටම පාහේ විශ්වාසදායක සහ ක්රියාත්මක වන පරිදි හොඳින් සැලසුම් කළ යුතුය.
එහි ප්රතිඵලයක් ලෙස පද්ධතියේ තීරණාත්මක අවශ්යතා නිර්ණය කිරීම ඉතා වැදගත් වේ.
WhatsApp පණිවිඩකරු සඳහා වන අවම අවශ්යතා මේවාය:
- එකින් එක අන්තර්ක්රියා සඳහා පහසුකම් සැලසීමේ හැකියාව ඇත.
- පණිවිඩ පිළිගැනීම සහ අවසන් වරට බැලීම යන දෙකම කළ හැකිය (යවන ලද, භාර දුන් සහ කියවීම).
- අන්තයේ සිට අගට සංකේතනය කිරීමට සහ මාධ්ය සහායට ඉඩ දෙන්න (රූප/වීඩියෝ).
අපගේ අවශ්ය සේවාව සඳහා කොපමණ ධාරිතාවක් අවශ්යදැයි සොයා බලමු.
2. ඇස්තමේන්තුගත ධාරිතාව
විශාල රථවාහන ප්රමාණයක් හැසිරවිය හැකි වේදිකාවක් නිර්මාණය කිරීම අපගේ අරමුණයි. දිනකට SMS බිලියන 10ක් යවන බව සිතන්න. අපි ගත්තා:
- සෑම දිනකම බිලියන 10 ක ජනතාවක් විසින් SMS බිලියන XNUMX ක් යවනු ලැබේ.
- උපරිම ගමනාගමනයේදී (තත්පරයට), පුද්ගලයන් 700,000 ක් ක්රියාකාරී විය (6X සාමාන්ය)
- උපරිම භාවිතයේදී තත්පරයකට පණිවිඩ මිලියන 40ක් සම්ප්රේෂණය වේ.
- පණිවිඩයක සාමාන්ය දිග අක්ෂර 160 කි: සෑම දිනකම 10B * 160 = 1.6TB දත්ත ජනනය වේ.
- උදාහරණයක් ලෙස වසර දහයක සේවා කාලය ගන්න: 10 * 1.6B * 365 PB
- සම්පූර්ණ යෙදුමම ක්ෂුද්ර සේවා වලින් සමන්විත වන අතර, ඒ සෑම එකක්ම විශේෂිත කාර්යයක් ක්රියාත්මක කරනු ඇත. පණිවිඩයක් යැවීමට මිලි තත්පර 20ක් ගත වන බවත් එක් සේවාදායකයකට සමගාමී සම්බන්ධතා 100ක් ඇති බවත් උපකල්පනය කරන්න. එහි ප්රතිඵලයක් වශයෙන්, අවශ්ය චැට් සර්වර් ගණන = (තත්පරයට චැට් පණිවිඩ ප්රමාදය)/ එක් සේවාදායකයකට සමගාමී සම්බන්ධතා = 40M * 20ms / 100 = 8000 සේවාදායකයන්.
3. ඉහළ මට්ටමේ ගෘහ නිර්මාණ ශිල්පය
මෙම පද්ධතිය මූලික සේවාවන් දෙකක් මත ගොඩනගා ඇත. උදාහරණයක් ලෙස කතාබස් සේවාව සහ සංක්රාන්ති සේවාව. කතාබස් සේවාව පරිශීලකයන්ගේ සබැඳි පණිවිඩ මගින් ජනනය වන සියලුම මාර්ග තදබදය හසුරුවයි. ඊට සමගාමීව, පරිශීලකයා නොබැඳිව සිටින විට තාවකාලික සේවාව ගමනාගමනය හසුරුවයි.
පරිශීලකයා සබැඳි නම්, පණිවිඩ බෙදා හැරීම භාරව සිටින්නේ කතාබස් සේවාවයි.
පණිවිඩය ලබන්නා සබැඳි ද නැද්ද යන්න එය සත්යාපනය කරයි; ලබන්නා සබැඳි නම්, මෙම සේවාව වහාම පණිවිඩය ලබා දෙනු ඇත; ලබන්නා සබැඳි නොමැති නම්, ඔවුන් සබැඳිව ආපසු පැමිණෙන විට සංක්රාන්ති සේවාව ඔවුන්ට පණිවිඩය එවනු ඇත.
සංක්රාන්ති සේවාව නොබැඳි පරිශීලකයා නැවත සම්බන්ධ වන තෙක් තාවකාලිකව ප්රවේශ විය හැකි දත්ත තබා ගැනීම සඳහා වෙනම ගබඩා ප්රදේශයක් තබා ගනී.
ඉහළ මට්ටමේ API නිර්මාණය කිරීම
මෙම සේවාවට පණිවිඩ යැවීම සහ කියවීම සඳහා ඉහළ මට්ටමේ ක්රියාකාරී API දෙකක් ඇත. REST ගෘහ නිර්මාණ ශිල්පය භාවිතයෙන් පද්ධතිය ක්රියාත්මක කළ හැකිය.
පණිවිඩ යැවීම සඳහා පරාමිතීන්
මෙම API භාවිතා කරන්නන් දෙදෙනෙකු අතර පණිවිඩ සම්ප්රේෂණය කිරීමට භාවිතා කරනු ඇත.
සංවාදයේ පරාමිතීන්
මෙම API ත්රෙඩ් කළ කතාබස් ප්රදර්ශනය කිරීමට භාවිතා කරයි. ඔබ WhatsApp විවෘත කරන විට ඔබ දකින පළමු දෙය මෙය සලකන්න. අපට අවශ්ය වන්නේ එක් API විමසුමකින් එක් පරිශීලකයෙකු සඳහා පණිවිඩ කිහිපයක් ලබා ගැනීමට පමණි. මෙය හැසිරවීමට, ඕෆ්සෙට් සහ පණිවිඩ ගණන් කිරීමේ පරාමිතීන් අවශ්ය වේ.
අවසන් වරට දුටු, තනි ටික් සහ ද්විත්ව ටික් වැනි විශේෂාංගවල කාර්යයන් මොනවාද?
මෙම සේවාවන් යෙදවීමේදී වැදගත් කාර්යභාරය වන්නේ පිළිගැනීමේ සේවාවයි. මෙම සේවාව පිළිගැනීම් පිළිතුරු උත්පාදනය කිරීම සහ සත්යාපනය කිරීම දිගටම කරගෙන යන බැවින් මෙම විශේෂාංග සංවර්ධනය කර ඇත.
- තනි ටික්: පරිශීලක A වෙතින් පණිවිඩයක් පරිශීලක B වෙත ළඟා වූ විට, සේවාදායකය පණිවිඩය සම්ප්රේෂණය කර ඇති බව පිළිගනිමින් තනි ටික් එකක් යවයි.
- ඩබල් ටික් කරන්න: නිසි සම්බන්ධතාවය හරහා සේවාදායකයේ පණිවිඩය B පරිශීලක වෙත යැවීමෙන් පසු, පරිශීලක B සේවාදායකය වෙත පණිවිඩය ලැබුණු බව පිළිගනී. එවිට සේවාදායකය A පරිශීලකයාට වෙනත් පිළිගැනීමක් ලබා දෙනු ඇත. ප්රතිඵලයක් වශයෙන්, අනුපිටපත් ටික් එකක් දිස්වනු ඇත.
- නිල් ටික්: පරිශීලක B පණිවිඩය පරීක්ෂා කිරීමෙන් පසු සේවාදායකය වෙත තවත් පිළිගැනීමක් එවනු ඇත. එවිට සේවාදායකය විසින් පරිශීලක A හට අතිරේක පිළිගැනීමේ පණිවිඩයක් එවනු ඇත. ඉන්පසු පරිශීලක A ගේ තිරයේ නිල් පැහැති ටික් එකක් දිස්වනු ඇත.
- අවසන් වරට දුටුවේය: හෘද ස්පන්දන යාන්ත්රණය අවසන් වරට දුටු විශේෂාංගයට සම්පූර්ණයෙන්ම වගකිව යුතුය. සෑම තත්පර 5කට වරක්, හෘද ස්පන්දනයක් සේවාදායකය වෙත සම්ප්රේෂණය වන අතර, එය වෙනත් ඕනෑම පරිශීලකයෙකුට පහසුවෙන් ප්රවේශ විය හැකි වගුවක එක් එක් පරිශීලකයාගේ අවසන් වරට දුටු තත්ත්වය නිරීක්ෂණය කරයි.
4. ප්රධාන ලක්ෂණ සැලසුම් කිරීම
පුද්ගලීකරණය කළ අන්තර්ක්රියා
මෙය Chat සේවාවේ අත්යවශ්ය කොටසකි. පරිශීලකයෙකුට මෙම සේවාව භාවිතා කර වෙනත් පරිශීලකයෙකුට පණිවිඩ යැවිය හැක. මෙය ක්රියාත්මක වන ආකාරය දෙස බලමු:
ජේට ආයුෂ් සමඟ සන්නිවේදනය කිරීමට අවශ්ය යැයි සිතන්න. Jay ඔහුට පණිවිඩය ලැබෙන කතාබස් සේවාදායකයකට සම්බන්ධ කර ඇත. පණිවිඩය යැවූ බවට ජේට චැට් සේවාදායකයෙන් තහවුරු කිරීමක් ලැබේ. කතාබස් සේවාදායකය දැන් ආයුෂ් සම්බන්ධ කර ඇති චැට් සේවාදායකය පිළිබඳ දත්ත ගබඩාවෙන් තොරතුරු ඉල්ලා සිටී. Jay ගේ chat server එක දැන් ආයුෂ්ගේ chat server එකට පණිවිඩය යවන අතර, Push යාන්ත්රණයක් හරහා Aayush ට පණිවිඩය ලැබෙනවා. ආයුෂ් දැන් ජේගේ කතාබස් සේවාදායකයට පිළිගැනීමක් යවයි, එය පණිවිඩය භාර දුන් බව ජේට දන්වයි. ආයුෂ් ආයෙත් මැසේජ් එක කියෙව්වොත් මැසේජ් එක කියෙව්වා කියලා අලුත් පිලිගැනීමක් ජේට ලැබුනා.
පරිශීලක ක්රියාකාරකම් තත්ත්වය
පුද්ගලයෙකු ක්රියාකාරීව සිටි අවසන් අවස්ථාව ක්ෂණික පණිවිඩකරුවන්ගේ නිත්ය අංගයකි.
සේවාලාභියා සහ සේවාදායකය අතර සම්බන්ධතාවයක් පවත්වාගෙන යාමේ පද්ධතියක් මෙම රූප සටහනෙහි දැක්වේ. සේවාදායකය සහ සේවාදායකයා අතර ද්විපාර්ශ්වික සම්බන්ධතාවයක් ඇති කිරීම සඳහා වෙබ් සොකට් භාවිතා කරන ලදී. මෙම සම්බන්ධතා හෘද ස්පන්දන යවයි, එය පරිශීලකයාගේ ක්රියාකාරකම් තත්ත්වය නිරීක්ෂණය කිරීමට භාවිතා කරයි.
අන්තයේ සිට අවසානය දක්වා පුද්ගලිකත්වය
End-to-end සංකේතනය යනු සංවාද කරන පරිශීලකයින්ට පමණක් සන්නිවේදනය කියවිය හැකි බව සහතික කරන ප්රධාන අංගයකි. පොදු යතුරක් සන්නිවේදනයට සම්බන්ධ සියලුම පරිශීලකයන් අතර බෙදාගෙන ඇති අතර අවසානය සිට අවසානය දක්වා සංකේතනය පවත්වා ගැනීම සඳහා ඉතා වැදගත් වේ. නාලිකාවේ එකිනෙකා සමඟ සන්නිවේදනය කරන ජේ සහ ආයුෂ් යන පරිශීලකයින් දෙදෙනෙකු සිටින බව උපකල්පනය කරන්න.
ජේ සතුව ආයුෂ්ගේ පොදු යතුර ඇති අතර, ආයුෂ් සතුව ජේගේ පොදු යතුර මෙන්ම ඔවුන්ගේ බෙදා නොගත් පුද්ගලික යතුරද ඇත. එහි ප්රතිඵලයක් වශයෙන්, ජේ පණිවිඩය සම්ප්රේෂණය කරන විට, ඔහු එය ආයුෂ්ගේ පොදු යතුර සමඟ සංකේතනය කරයි, එය විකේතනය කළ හැක්කේ ආයුෂ්ගේ පුද්ගලික යතුරෙන් පමණි.
ඒ වගේ ම ජේට පුළුවන් වෙන්නේ ආයුෂ්ගේ සන්නිවේදනය විකේතනය කරන්න විතරයි. එහි ප්රතිඵලයක් වශයෙන්, එකිනෙකාගේ සන්නිවේදනයන් දැකිය හැක්කේ Jay සහ Aaysuh හට පමණක් වන අතර, සේවාදායකය සමස්ත ක්රියාවලියේදීම ද්වාරයක් ලෙස ක්රියා කරනු ඇත.
5. අවහිරතා
සෑම පද්ධතියක්ම අක්රිය වීමට ඉඩ ඇත. මෙතරම් විශාල වාහන තදබදයක් කළමනාකරණය කිරීම සඳහා, අවහිරතා මඟහරවා ගැනීම සඳහා සේවාව සෑම විටම ක්රියාත්මක විය යුතු අතර දෝෂ ඉවසා සිටිය යුතුය. අපගේ සේවාව සම්පුර්ණයෙන්ම Chat සහ Transient සේවාදායකයන් මත රඳා පවතින බැවින්, ඒවායේ ක්රියාකාරිත්වයෙන් පැන නගින ගැටළු සියල්ල අප විසින් විසඳිය යුතුය.
කතාබස් සේවාදායකයේ අසමත් වීම: මෙය අපගේ පද්ධතියේ හදවතයි. පරිශීලකයන් සබැඳිව සිටින විට, එය පණිවිඩ කළමනාකරණය කිරීම සහ බෙදා හැරීම සඳහා වගකිව යුතුය. එහි ප්රතිඵලයක් වශයෙන්, මෙම පද්ධතිය එහි පරිශීලකයන් සමඟ සම්බන්ධතා පවත්වයි.
එහි ප්රතිඵලයක් ලෙස මෙම සේවාව අසාර්ථක වුවහොත් සමස්ත ගෘහ නිර්මාණ ශිල්පයටම හානි සිදුවනු ඇත. චැට් සේවාදායකයේ අසාර්ථකත්වය කළමනාකරණය කිරීම සඳහා ප්රවේශයන් දෙකක් තිබේ. TCP සම්බන්ධතා වෙනත් සේවාදායකයකට මාරු කිරීම එක් ක්රමයක් වන අතර තවත් ක්රමයක් නම් සම්බන්ධතා නැතිවීමකදී ස්වයංක්රීයව සම්බන්ධතා ආරම්භ කිරීමට පරිශීලකයින්ට ඉඩ දීමයි.
තාවකාලික ගබඩා කිරීමේ අසමත් වීම: අසාර්ථක වීමට ඉඩ ඇති තවත් අංගයක් වන අතර එය අවසානයේ සමස්ත සේවාවටම හානි විය හැක තාවකාලික ගබඩා කිරීම. මෙම සේවාව අසාර්ථක වුවහොත් නොබැඳි පරිශීලකයන් වෙත යන පණිවිඩ අහිමි වේ.
එක් එක් පරිශීලකයාගේ තාවකාලික ආචයනය ප්රතිනිර්මාණය කිරීමෙන් අපට පණිවිඩ නැතිවීම වැළැක්විය හැක. එහි ප්රතිඵලයක් වශයෙන්, පරිශීලකයා සබැඳිව ආපසු පැමිණෙන සෑම අවස්ථාවකම කාර්යයන් සැකසීමට අනුරුව භාවිතා කළ හැක. මුල් සේවාදායකයට ප්රවේශ විය හැකි නම්, පරිශීලකයාගේ සංක්රාන්ති ගබඩාවේ මුල් සහ අනුරූ අවස්ථා දෙකම තනි ගබඩාවකට ඒකාබද්ධ කෙරේ.
6. ප්රශස්තකරණ ශිල්පීය ක්රම
කාලගුණය: බාධාවකින් තොරව සහ වැඩිදියුණු කළ සේවාදායක අත්දැකීමක් ලබා දීමට, messenger සේවාව තත්ය කාලීන විය යුතුය. එහි ප්රතිඵලයක් වශයෙන්, බොහෝ විට ප්රවේශ වන දත්තවල කොටසක් හැඹිලිගත කිරීමෙන් ප්රමාදය අඩු කළ යුතුය. අපට Redis වැනි බෙදා හරින ලද හැඹිලියක් භාවිතයෙන් පරිශීලක ක්රියාකාරකම් තත්ත්වය සහ මතකයේ මෑත සංවාද හැඹිලිගත කළ හැක.
ලබා ගත හැකි: අපට අපගේ සේවාව බොහෝ වේලාවක් ලබා ගැනීමට අවශ්යයි. අපගේ පද්ධතිය දෝෂ ඉවසිය හැකි විය යුතුය, එබැවින් අපට සංක්රාන්ති පණිවිඩ පිටපත් කිහිපයක් තබා ගත හැකි අතර එමඟින් නැතිවූ ඕනෑම පණිවිඩයක් එහි අනුපිටපත් වලින් ඉක්මනින් ප්රතිසාධනය කළ හැකිය. එහි ප්රතිඵලයක් වශයෙන්, පද්ධතියේ ඇති බව අනතුරට පත් කළ නොහැක.
නිගමනය
අපගේ පද්ධතිය දැන් සහය දක්වන්නේ හැකියාවන් කිහිපයකට පමණි, නමුත් පුද්ගලයන් කිහිප දෙනෙකුට පණිවිඩ බෙදා හැරීම සඳහා කණ්ඩායම් කතාබස් එක් කිරීමට අපට එය පහසුවෙන් පුළුල් කළ හැක. ඔබට වීඩියෝ සහ දුරකථන ඇමතුම් හැකියාවන් ද සැපයිය හැකිය. පරිශීලකයින්ට තත්ත්ව යාවත්කාලීන කිරීම් හෝ ආඛ්යාන ප්රකාශ කිරීමට සහ එකිනෙකා කියවීමට හැකි වන පරිදි මෙම ක්රමය ද දියුණු කළ හැක.
WhatsApp පද්ධති සැලසුම පිළිබඳ ඉහළ මට්ටමේ දළ විශ්ලේෂණයක් ඔබට ලබා දීමට මම වෙහෙස මහන්සි වී වැඩ කළෙමි. ඔබ එය රස වින්දා සහ එය හොඳ ප්රයෝජනයට ගනු ඇතැයි මම බලාපොරොත්තු වෙමි.
ඔබමයි