MQTT
એમ. ક્યુ. ટી. ટી. (મૂળ એમ. ક્યુ. ટેલિમેટ્રી ટ્રાન્સપોર્ટનું પ્રારંભિક સ્વરૂપ) એ સંદેશ કતાર/સંદેશ કતાર સેવા માટે હળવું, પ્રકાશિત-સબ્સ્ક્રાઇબ, મશીનથી મશીન નેટવર્ક પ્રોટોકોલ છે. તે દૂરસ્થ સ્થાનો સાથેના જોડાણો માટે રચાયેલ છે જેમાં સંસાધનોની મર્યાદાઓ અથવા મર્યાદિત નેટવર્ક બેન્ડવિડ્થ ધરાવતા ઉપકરણો હોય છે, જેમ કે ઇન્ટરનેટ ઓફ થિંગ્સ (આઇઓટી). તે પરિવહન પ્રોટોકોલ પર ચાલવું આવશ્યક છે જે ઓર્ડર કરેલ, લોસલેસ, દ્વિ-દિશાત્મક જોડાણો પ્રદાન કરે છે-સામાન્ય રીતે, TCP/IP, પણ સંભવતઃ QUIC પર પણ તે એક ખુલ્લું OASIS ધોરણ અને ISO ભલામણ (ISO/IEC 20922) છે. ઇતિહાસ એન્ડી સ્ટેનફોર્ડ-ક્લાર્ક (આઇબીએમ) અને આર્લેન નિપર (તે સમયે યુરોટેક, ઇન્ક. માટે કામ કરતા હતા) એ 1999માં પ્રોટોકોલનું પ્રથમ સંસ્કરણ લખ્યું હતું. તેનો ઉપયોગ એસ. સી. એ. ડી. એ. ઔદ્યોગિક નિયંત્રણ પ્રણાલીમાં તેલ પાઇપલાઇનોની દેખરેખ માટે થતો હતો. ધ્યેય એવો પ્રોટોકોલ રાખવાનો હતો જે બેન્ડવિડ્થ-કાર્યક્ષમ, હલકો અને ઓછી બેટરી શક્તિનો ઉપયોગ કરે છે, કારણ કે ઉપકરણો સેટેલાઇટ લિંક દ્વારા જોડાયેલા હતા, જે તે સમયે અત્યંત મોંઘા હતા. ઐતિહાસિક રીતે, "એમક્યુટીટી" માં "એમક્યુ" આઇબીએમ એમક્યુ (તે સમયે 'એમક્યુ સિરીઝ') પ્રોડક્ટ લાઇનમાંથી આવ્યું હતું, જ્યાં તેનો અર્થ "મેસેજ ક્યુ" થાય છે. જો કે, પ્રોટોકોલ પોસ્ટ-એન્ડ-સબ્સ્ક્રાઇબ મેસેજિંગ પ્રદાન કરે છે (નામ હોવા છતાં કોઈ કતારો નથી). આઇબીએમ દ્વારા આવૃત્તિ 3.1 તરીકે ખોલવામાં આવેલા સ્પષ્ટીકરણમાં પ્રોટોકોલને "એમક્યુ ટેલિમેટ્રી ટ્રાન્સપોર્ટ" તરીકે ઓળખવામાં આવ્યો હતો. OASIS દ્વારા બહાર પાડવામાં આવેલી અનુગામી આવૃત્તિઓ સખત રીતે પ્રોટોકોલને માત્ર "MQTT" તરીકે ઉલ્લેખ કરે છે, જો કે તકનીકી સમિતિને પોતે "OASIS મેસેજ ક્યુઇંગ ટેલિમેટ્રી ટ્રાન્સપોર્ટ ટેકનિકલ કમિટી" નામ આપવામાં આવ્યું છે. 2013 થી, "MQTT" કંઈપણ માટે નથી. 2013 માં, આઇબીએમએ એમક્યુટીટી v3.1 ને ઓએએસઆઇએસ સ્પષ્ટીકરણ સંસ્થાને એક ચાર્ટર સાથે રજૂ કર્યું હતું જે સુનિશ્ચિત કરે છે કે સ્પષ્ટીકરણમાં માત્ર નાના ફેરફારો જ સ્વીકારી શકાય. આઇબીએમ પાસેથી ધોરણની જાળવણી સંભાળ્યા પછી, ઓએએસઆઇએસે 29 ઓક્ટોબર, 2014ના રોજ આવૃત્તિ 3.1.1 રજૂ કરી. MQTT આવૃત્તિ 5માં વધુ નોંધપાત્ર સુધારો, કેટલીક નવી સુવિધાઓ ઉમેરીને, 7 માર્ચ, 2019ના રોજ રજૂ કરવામાં આવ્યો હતો. MQTT-SN (સેન્સર નેટવર્ક્સ માટે MQTT) એ ઝિગ્બી જેવા બિન-TCP/IP નેટવર્ક્સ પર બેટરી સંચાલિત એમ્બેડેડ ઉપકરણોને ધ્યાનમાં રાખીને મુખ્ય પ્રોટોકોલની વિવિધતા છે. MQTT પ્રોટોકોલ બે પ્રકારના નેટવર્ક એકમોને વ્યાખ્યાયિત કરે છેઃ સંદેશ દલાલ અને સંખ્યાબંધ ગ્રાહકો. એમક્યુટીટી બ્રોકર એ એક સર્વર છે જે ગ્રાહકો પાસેથી તમામ સંદેશાઓ મેળવે છે અને પછી સંદેશાઓને યોગ્ય ગંતવ્ય ગ્રાહકો સુધી પહોંચાડે છે. એમક્યુટીટી ક્લાયન્ટ એ કોઈપણ ઉપકરણ છે (માઇક્રો કંટ્રોલરથી લઈને સંપૂર્ણ સર્વર સુધી) જે એમક્યુટીટી લાઇબ્રેરી ચલાવે છે અને નેટવર્ક પર એમક્યુટીટી બ્રોકર સાથે જોડાય છે. માહિતી વિષયોના પદાનુક્રમમાં ગોઠવવામાં આવે છે. જ્યારે પ્રકાશક પાસે વિતરણ કરવા માટે માહિતીની નવી વસ્તુ હોય છે, ત્યારે તે જોડાયેલ દલાલને માહિતી સાથે નિયંત્રણ સંદેશ મોકલે છે. બ્રોકર પછી તે વિષય પર સબ્સ્ક્રાઇબ કરેલા કોઈપણ ગ્રાહકોને માહિતીનું વિતરણ કરે છે. પ્રકાશક પાસે સબ્સ્ક્રાઇબર્સની સંખ્યા અથવા સ્થાનો વિશે કોઈ માહિતી હોવી જરૂરી નથી, અને સબ્સ્ક્રાઇબર્સને, બદલામાં, પ્રકાશકો વિશેની કોઈપણ માહિતી સાથે રૂપરેખાંકિત કરવાની જરૂર નથી. જો બ્રોકરને એવા વિષય પર સંદેશ મળે છે કે જેના માટે કોઈ વર્તમાન ગ્રાહકો નથી, તો બ્રોકર સંદેશને ત્યજી દે છે સિવાય કે સંદેશના પ્રકાશકે સંદેશને જાળવી રાખેલા સંદેશ તરીકે નિયુક્ત કર્યો હોય. જાળવી રાખેલ સંદેશ એ સામાન્ય MQTT સંદેશ છે જેમાં જાળવી રાખેલ ધ્વજ સાચું છે. દલાલ પસંદ કરેલા વિષય માટે છેલ્લો જાળવી રાખેલો સંદેશ અને સેવાની અનુરૂપ ગુણવત્તા (ક્યુ. ઓ. એસ.) સંગ્રહિત કરે છે. દરેક ક્લાયન્ટ કે જે વિષયની પેટર્ન સાથે સબ્સ્ક્રાઇબ કરે છે જે જાળવી રાખેલા સંદેશના વિષય સાથે મેળ ખાય છે તે સબ્સ્ક્રાઇબ કર્યા પછી તરત જ જાળવી રાખેલો સંદેશ મેળવે છે. દલાલ દરેક વિષય દીઠ માત્ર એક જ સંદેશ સંગ્રહિત કરે છે. આ કોઈ વિષયના નવા સબ્સ્ક્રાઇબર્સને પ્રકાશક પાસેથી આગામી અપડેટની રાહ જોવાને બદલે સૌથી વર્તમાન મૂલ્ય પ્રાપ્ત કરવાની મંજૂરી આપે છે. જ્યારે પ્રકાશન ક્લાયન્ટ પ્રથમ બ્રોકર સાથે જોડાય છે, ત્યારે તે સબ્સ્ક્રાઇબર્સને મોકલવા માટે ડિફોલ્ટ સંદેશ સેટ કરી શકે છે જો બ્રોકરને ખબર પડે કે પ્રકાશન ક્લાયન્ટ અણધારી રીતે બ્રોકરથી ડિસ્કનેક્ટ થઈ ગયો છે. ગ્રાહકો માત્ર બ્રોકર સાથે જ વાતચીત કરે છે, પરંતુ સિસ્ટમમાં ઘણા બ્રોકર સર્વર હોઈ શકે છે જે તેમના વર્તમાન ગ્રાહકોના વિષયોના આધારે ડેટાની આપ-લે કરે છે. ન્યૂનતમ MQTT નિયંત્રણ સંદેશ ડેટાના બે બાઇટ્સ જેટલો નાનો હોઈ શકે છે. જો જરૂરી હોય તો નિયંત્રણ સંદેશ લગભગ 256 મેગાબાઇટ્સ ડેટા વહન કરી શકે છે. ક્લાયન્ટને બ્રોકરથી જોડવા અને ડિસ્કનેક્ટ કરવા, ડેટા પ્રકાશિત કરવા, ડેટાની રસીદ સ્વીકારવા અને ક્લાયન્ટ અને સર્વર વચ્ચેના જોડાણની દેખરેખ રાખવા માટે ચૌદ વ્યાખ્યાયિત સંદેશ પ્રકારોનો ઉપયોગ થાય છે. MQTT ડેટા ટ્રાન્સમિશન માટે TCP પ્રોટોકોલ પર આધાર રાખે છે. એક પ્રકાર, એમ. ક્યુ. ટી. ટી.-એસ. એન. નો ઉપયોગ યુ. ડી. પી. અથવા બ્લુટુથ જેવા અન્ય પરિવહન પર થાય છે. MQTT સાદા લખાણ સ્વરૂપમાં જોડાણ પ્રમાણપત્રો મોકલે છે અને તેમાં સુરક્ષા અથવા પ્રમાણીકરણ માટેના કોઈપણ પગલાંનો સમાવેશ થતો નથી. ટ્રાન્સફર કરેલી માહિતીને એન્ક્રિપ્ટ કરવા અને અવરોધન, ફેરફાર અથવા છેતરપિંડી સામે સુરક્ષિત કરવા માટે TLS નો ઉપયોગ કરીને આ પ્રદાન કરી શકાય છે. મૂળભૂત અનએન્ક્રિપ્ટેડ MQTT પોર્ટ 1883 છે. એનક્રિપ્ટેડ પોર્ટ 8883 છે. એમક્યુટીટી બ્રોકર એમક્યુટીટી બ્રોકર એ કમ્પ્યુટર પર ચાલતા સોફ્ટવેરનો એક ભાગ છે (પરિસરમાં અથવા ક્લાઉડમાં ચાલી રહ્યું છે), અને તે તૃતીય પક્ષ દ્વારા સ્વ-નિર્મિત અથવા હોસ્ટ કરી શકાય છે. તે ઓપન સોર્સ અને પ્રોપરાઇટરી અમલીકરણ બંનેમાં ઉપલબ્ધ છે. દલાલ પોસ્ટ ઓફિસ તરીકે કામ કરે છે. એમક્યુટીટી ક્લાયન્ટ્સ ઇચ્છિત પ્રાપ્તકર્તાના સીધા જોડાણ સરનામાંનો ઉપયોગ કરતા નથી, પરંતુ "વિષય" નામની વિષય પંક્તિનો ઉપયોગ કરે છે. જે પણ સબ્સ્ક્રાઇબ કરે છે તેને તે વિષય માટેના તમામ સંદેશાઓની એક નકલ મળે છે. બહુવિધ ગ્રાહકો એક જ દલાલ (એકથી ઘણી ક્ષમતા) માંથી એક વિષય પર સબ્સ્ક્રાઇબ કરી શકે છે, અને એક જ ગ્રાહક બહુવિધ દલાલો (ઘણાથી એક) સાથે વિષયો પર સબ્સ્ક્રિપ્શન નોંધણી કરાવી શકે છે. દરેક ગ્રાહક પ્રકાશન અને સબ્સ્ક્રાઇબ બંને દ્વારા માહિતીનું ઉત્પાદન અને પ્રાપ્ત કરી શકે છે, એટલે કે. ઉપકરણો સેન્સર ડેટા પ્રકાશિત કરી શકે છે અને હજુ પણ રૂપરેખાંકન માહિતી અથવા નિયંત્રણ આદેશો પ્રાપ્ત કરી શકે છે (MQTT એ દ્વિ-દિશાત્મક સંચાર પ્રોટોકોલ છે). આ માહિતીની વહેંચણી, ઉપકરણોનું સંચાલન અને નિયંત્રણ એમ બન્નેમાં મદદ કરે છે. ક્લાયન્ટ એક જ ડેટાને વિવિધ વિષયો પર પ્રસારિત કરી શકતો નથી અને તેણે બ્રોકરને બહુવિધ સંદેશાઓ પ્રકાશિત કરવા પડે છે, જેમાં દરેકને એક જ વિષય આપવામાં આવે છે. એમક્યુટીટી બ્રોકર આર્કિટેક્ચર સાથે, ક્લાયન્ટ ઉપકરણો અને સર્વર એપ્લિકેશન અલગ થઈ જાય છે. આ રીતે ગ્રાહકોને એકબીજાની માહિતીથી અજાણ રાખવામાં આવે છે. MQTT, જો રૂપરેખાંકિત હોય, તો પ્રમાણપત્ર, વપરાશકર્તાનામ અને પાસવર્ડ સુરક્ષિત જોડાણો સાથે TLS એન્ક્રિપ્શનનો ઉપયોગ કરી શકે છે. વૈકલ્પિક રીતે, જોડાણને પ્રમાણપત્ર ફાઇલના સ્વરૂપમાં પ્રમાણપત્રની જરૂર પડી શકે છે, જે ગ્રાહક પ્રદાન કરે છે અને સર્વરની નકલ સાથે મેળ ખાતી હોવી જોઈએ. નિષ્ફળતાના કિસ્સામાં, બ્રોકર સોફ્ટવેર અને ક્લાયન્ટ્સ આપમેળે બિનજરૂરી/સ્વચાલિત બેકઅપ બ્રોકરને સોંપી શકે છે. બેકઅપ દલાલોને સાઇટ પર, ક્લાઉડમાં અથવા આના સંયોજનમાં બહુવિધ સર્વર્સમાં ક્લાયન્ટ્સના ભારને શેર કરવા માટે પણ સેટ કરી શકાય છે. બ્રોકર સ્પાર્કપ્લગ જેવા સુસંગત સ્પષ્ટીકરણો માટે પ્રમાણભૂત MQTT અને MQTT બંનેને સમર્થન આપી શકે છે. આ એક જ સર્વર સાથે, એક જ સમયે અને સુરક્ષાના સમાન સ્તરો સાથે કરી શકાય છે. બ્રોકર "સતત સત્રો" તરીકે ઓળખાતા કાર્યમાં ઉપકરણ ચાલુ અને બંધ થતાં સત્રની તમામ માહિતીનો ટ્રેક રાખે છે. આ સ્થિતિમાં, બ્રોકર દરેક ક્લાયન્ટ માટે જોડાણ માહિતી, દરેક ક્લાયન્ટે સબ્સ્ક્રાઇબ કરેલા વિષયો અને 1 અથવા 2 ના QoS સાથેના વિષય માટેના કોઈપણ સંદેશાઓ બંનેને સંગ્રહિત કરશે. એમક્યુટીટી બ્રોકરના મુખ્ય ફાયદાઓ છેઃ નબળા અને અસુરક્ષિત ક્લાયન્ટ જોડાણોને દૂર કરે છે, જો એક જ ઉપકરણથી સરળતાથી હજારો સુધી માપી શકાય છે, સુરક્ષા પ્રમાણપત્રો અને પ્રમાણપત્રો સહિત તમામ ક્લાયન્ટ જોડાણ સ્થિતિઓનું સંચાલન કરે છે અને તેનું નિરીક્ષણ કરે છે, જો સુરક્ષા સાથે સમાધાન કર્યા વિના નેટવર્ક તાણમાં ઘટાડો કરવા માટે રૂપરેખાંકિત કરવામાં આવે છે, જો (સેલ્યુલર અથવા સેટેલાઇટ નેટવર્ક) સંદેશ પ્રકારો સાથે રૂપરેખાંકિત કરવામાં આવે તો સર્વર સાથે જોડાણ સ્થાપિત કરવા માટે રાહ જુએ છે અને નોડ્સ વચ્ચે કડી બનાવે છે. ડિસ્કનેક્ટ કરો એમક્યુટીટી ક્લાયન્ટ માટે કોઈ પણ કામ પૂર્ણ કરવા માટે રાહ જુએ છે, અને ટીસીપી/આઈપી સત્ર માટે ડિસ્કનેક્ટ કરો. એમક્યુટીટી ક્લાયન્ટને વિનંતી મોકલ્યા પછી તરત જ એપ્લિકેશન થ્રેડ પર રીટર્ન પ્રકાશિત કરો. વર્ષ 2019માં OASISએ સત્તાવાર MQTT 5 ધોરણ બહાર પાડ્યું હતું. આવૃત્તિ 5માં નીચેની મુખ્ય નવી વિશેષતાઓનો સમાવેશ થાય છેઃ કારણ સંકેતોઃ સ્વીકૃતિઓ હવે વળતર સંકેતોને ટેકો આપે છે, જે નિષ્ફળતાનું કારણ પૂરું પાડે છે. વહેંચાયેલ સબ્સ્ક્રિપ્શન્સઃ ક્લાયન્ટ્સમાં ભારને સંતુલિત કરવાની મંજૂરી આપો અને આમ લોડ સમસ્યાઓનું જોખમ ઘટાડે છે સંદેશ સમાપ્તિઃ સંદેશાઓમાં સમાપ્તિ તારીખ શામેલ હોઈ શકે છે અને જો તે આ સમયગાળાની અંદર વિતરિત ન કરવામાં આવે તો તેને કાઢી નાખવામાં આવે છે. વિષય ઉપનામઃ વિષયના નામને એક જ નંબર એમક્યુટીટી 5 સાથે બદલી શકાય છે જે ક્યુયુઆઇસી પરિવહન પ્રોટોકોલ પર એમક્યુટીટી જોડાણોને પણ સપોર્ટ કરે છે. એમ. ક્યુ. ટી. ટી. ઓવર ક્યુ. યુ. આઇ. સી. જોડાણ પ્રક્રિયા દરમિયાન વિનિમયની સંખ્યા ઘટાડીને, એકંદર વિલંબતા ઘટાડીને અને નેટવર્ક ભીડ અને સ્વિચિંગનું વધુ સારું સંચાલન પ્રદાન કરીને સુધારેલ કામગીરી પ્રદાન કરે છે. સેવાની ગુણવત્તા દલાલ સાથેનું દરેક જોડાણ ક્યુ. ઓ. એસ. માપનો ઉલ્લેખ કરી શકે છે. આને ઓવરહેડના વધતા ક્રમમાં વર્ગીકૃત કરવામાં આવે છેઃ વધુમાં વધુ એક વાર-સંદેશ માત્ર એક જ વાર મોકલવામાં આવે છે અને ગ્રાહક અને દલાલ વિતરણને સ્વીકારવા માટે કોઈ વધારાના પગલાં લેતા નથી (આગ અને ભૂલી જાવ). ઓછામાં ઓછું એક વાર-સંદેશ મોકલનાર દ્વારા ઘણી વખત ફરીથી પ્રયાસ કરવામાં આવે છે જ્યાં સુધી સ્વીકૃતિ પ્રાપ્ત ન થાય (સ્વીકૃત વિતરણ). બરાબર એક વાર-સંદેશની માત્ર એક જ નકલ પ્રાપ્ત થાય છે તેની ખાતરી કરવા માટે મોકલનાર અને મેળવનાર બે સ્તરના હાથ મિલાવે છે (સુનિશ્ચિત વિતરણ). આ ક્ષેત્ર અંતર્ગત TCP ડેટા પ્રસારણના સંચાલનને અસર કરતું નથી; તેનો ઉપયોગ ફક્ત MQTT મોકલનારાઓ અને પ્રાપ્તકર્તાઓ વચ્ચે થાય છે. 2020 માં ઇટાલિયન સંશોધકો દ્વારા MQTT પ્રોટોકોલની સુરક્ષા સુરક્ષા સાથે ચેડા કરવામાં આવ્યા હતા, આવા પ્રોટોકોલ પર ધીમું DoS હુમલાઓ ચલાવવામાં આવ્યા હતા (જુઓ CVE-2020-13849). આ પણ જુઓ MQTT અમલીકરણની સરખામણી એડવાન્સ્ડ મેસેજ ક્યુઇંગ પ્રોટોકોલ (AMQP) સ્ટ્રીમિંગ ટેક્સ્ટ ઓરિએન્ટેડ મેસેજિંગ પ્રોટોકોલ (STOMP) કન્સ્ટ્રેઇન્ડ એપ્લિકેશન પ્રોટોકોલ (CoAP) અપાચે એક્ટિવએમક્યુ સોલેસ પબસબ + રેબિટએમક્યુ નોટ્સ સંદર્ભો બાહ્ય લિંક્સ ટેકનિકલ કમિટીની સત્તાવાર વેબસાઇટ MQTT સ્પષ્ટીકરણ સંસ્કરણ 5.0,2019-03-07: PDF આવૃત્તિ, એચટીએમએલ આવૃત્તિ સંસ્કરણ 3.1.1 પ્લસ એર્રાટા 01,2015-12-10: PDF આવૃત્તિ, એચટીએમએલ આવૃત્તિ સંસ્કરણ 3.1.1,2014-10-29: PDF આવૃત્તિ, એચટીએમએલ આવૃત્તિ સંસ્કરણ 3.1,2010: PDF આવૃત્તિ, એચટીએમએલ આવૃત્તિ MQT-SN વિશિષ્ટતાઓ સંસ્કરણ 1.2,2013-11-14: P