Architectural Blueprint: വെന്യൂകൾക്കായുള്ള ലോ-ലേറ്റൻസി അനലിറ്റിക്സ്
ഒരു ലൈവ് ഇവന്റിൽ 20,000 ആളുകളുടെ ഡാറ്റ കൈകാര്യം ചെയ്യുന്നത് ഒരു വെബ് ആപ്പ് നിർമ്മിക്കുന്നത് പോലെയല്ല.
വെബ് ആപ്പുകളിൽ, ഉപയോക്താക്കൾ വിവിധ ടൈം സോണുകളിൽ വ്യാപിച്ചു കിടക്കുന്നു. എന്നാൽ വലിയ വെന്യൂകളിൽ, ആയിരക്കണക്കിന് ആളുകൾ ഒരേസമയം വലിയ തോതിലുള്ള ഡാറ്റാ ബർസ്റ്റുകൾ (data bursts) സൃഷ്ടിക്കുന്നു. ഒരു പ്രഭാത തിരക്ക് സാധാരണ സിസ്റ്റത്തെ തളർത്തിയേക്കാം.
നിങ്ങൾ ബാച്ച് പ്രോസസ്സിംഗോ (batch processing) ലോങ്ങ്-പോളിംഗോ (long-polling) ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, ഡാറ്റ വൈകിയാണ് ലഭിക്കുക. ജനക്കൂട്ട നിയന്ത്രണത്തിൽ (crowd control), 15 മിനിറ്റ് വൈകുന്നത് ഒരു പരാജയമാണ്. തിരക്ക് തടസ്സപ്പെടുന്നത് അത് സംഭവിച്ചു കഴിഞ്ഞാൽ മാത്രമേ നിങ്ങൾക്ക് കാണാൻ കഴിയൂ.
നിങ്ങൾക്ക് സെക്കൻഡിൽ താഴെ സമയത്തിനുള്ളിലുള്ള അപ്ഡേറ്റുകൾ ആവശ്യമാണ്. എഡ്ജിൽ (edge) നിന്ന് നിങ്ങളുടെ ഡാഷ്ബോർഡിലേക്ക് ഒരു സ്ട്രീമിംഗ് പൈപ്പ്ലൈൻ നിങ്ങൾ നിർമ്മിക്കണം.
നിങ്ങൾക്ക് ആവശ്യമായ ആർക്കിടെക്ചർ ഇതാ:
- എഡ്ജ് ലെയർ (ഇൻജഷൻ) ഓരോ പ്രവേശന കവാടത്തിലും ഒരു ഇൻഡസ്ട്രിയൽ എഡ്ജ് നോഡ് (industrial edge node) സ്ഥാപിക്കുക. സീരിയൽ ബസ് വഴി ഇത് RFID റീഡറുകളുമായി ബന്ധിപ്പിക്കുക.
പെട്ടെന്നുള്ള തീരുമാനങ്ങൾക്കായി ക്ലൗഡിനെ മാത്രം ആശ്രയിക്കരുത്. എഡ്ജ് നോഡിൽ Redis പോലുള്ള ഒരു ലോക്കൽ ഇൻ-മെമ്മറി ഡാറ്റാബേസ് ഉപയോഗിക്കുക. ഇത് 5ms-ൽ താഴെ സമയത്തിനുള്ളിൽ പെർമിഷനുകൾ പരിശോധിക്കാൻ സിസ്റ്റത്തെ അനുവദിക്കുന്നു. വെന്യൂവിലെ ഇന്റർനെറ്റ് തകരാറിലായാലും ഗേറ്റുകൾ പ്രവർത്തിക്കും.
- ട്രാൻസ്പോർട്ട് ലെയർ (MQTT) എഡ്ജ് ഹാർഡ്വെയറുകൾക്കായി HTTP REST എൻഡ്പോയിന്റുകൾ ഉപയോഗിക്കുന്നത് നിർത്തുക. ആയിരക്കണക്കിന് ചെറിയ സ്കാനുകൾക്കായി HTTP-യിൽ അമിതമായ ഓവർഹെഡ് (overhead) ഉണ്ട്.
പകരം MQTT ഉപയോഗിക്കുക. ഇത് കുറഞ്ഞ പാക്കറ്റ് സൈസ് ഉപയോഗിക്കുകയും ഒരു പെർസിസ്റ്റന്റ് കണക്ഷൻ (persistent connection) നിലനിർത്തുകയും ചെയ്യുന്നു. വെന്യൂവിലെ അസ്ഥിരമായ നെറ്റ്വർക്കുകളിലും ഇത് പ്രവർത്തിക്കും. എഡ്ജ് നോഡുകൾ കംപ്രസ് ചെയ്ത ഡാറ്റ ഒരു ക്ലൗഡ് ബ്രോക്കറിലേക്ക് പമ്പ് ചെയ്യുന്നു. ബ്രോക്കർ ഈ ഇവന്റുകളെ നിങ്ങളുടെ വർക്കറുകളിലേക്ക് ഉടനടി എത്തിക്കുന്നു.
- വിഷ്വൽ ലെയർ (WebSockets) മാറ്റങ്ങൾ സംഭവിക്കുമ്പോൾ തന്നെ അവ കാണാൻ നിങ്ങളുടെ ഓപ്പറേഷൻസ് ടീമിന് സാധിക്കണം. അപ്ഡേറ്റുകൾക്കായി ബ്രൗസർ API വഴി ചോദിക്കുന്നത് ഒഴിവാക്കുക.
ഒരു ഫുൾ-ഡ്യുപ്ലെക്സ് (full-duplex) കണക്ഷനായി WebSockets ഉപയോഗിക്കുക. ഇത് ഡാറ്റ ഡാഷ്ബോർഡിലേക്ക് ഉടനടി എത്തിക്കുന്നു. ഒരു ഹാൾ അമിതമായി തിരക്കുള്ളതാകുമ്പോൾ, ഒരു സെക്കൻഡിൽ താഴെ സമയത്തിനുള്ളിൽ ടീമിന് അത് കാണാൻ കഴിയും. തുടർന്ന് അവർക്ക് സ്റ്റാഫിനെ മാറ്റാനോ തിരക്ക് നിയന്ത്രിക്കാനോ ഡിജിറ്റൽ സൈനുകൾ അപ്ഡേറ്റ് ചെയ്യാനോ സാധിക്കും.
സ്റ്റാക്കിന്റെ സംഗ്രഹം:
- Edge: Local Redis + Industrial PC
- Transport: MQTT (EMQX അല്ലെങ്കിൽ HiveMQ)
- Frontend: റിയൽ-ടൈം UI-ക്കായി WebSockets
നിങ്ങളുടെ IoT സെറ്റപ്പുകളിൽ ജനത്തിരക്കുള്ള ഡാറ്റ നിങ്ങൾ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു? നമുക്ക് താഴെ ഇൻഫ്രാസ്ട്രക്ചറിനെക്കുറിച്ച് ചർച്ച ചെയ്യാം.
