एक उपस्थिति प्रणाली के लिए MySQL सर्वर


1

मैं एक उपस्थिति प्रणाली का निर्माण कर रहा हूँ। लगभग 20 जगहें हैं जहां लोग MIFARE 1K कार्ड का उपयोग करके चेक इन और चेक आउट करेंगे । यह डेटाबेस के रूप में MySQL का उपयोग करेगा । उपयोगकर्ता द्वारा जांच किए जाने पर उपयोगकर्ता पहली बार "#ID IN: 800AM" और "#ID OUT: 400PM" जैसे सिस्टम को कुछ प्रदर्शित करेगा। काम करने के लिए, सभी डेटाबेस को हर समय एक-दूसरे के साथ सिंक्रनाइज़ करने की आवश्यकता होती है ।

एक उदाहरण के लिए, यदि उपयोगकर्ता A जाँच करने के लिए # 1 स्थान पर गया था, लेकिन जब तक उपयोगकर्ता घर लौटना चाहता है, तब तक स्थान # 1 पर सर्वर नीचे चला गया, उपयोगकर्ता को स्थान # 2 या निकटतम सर्वर पर जाने की आवश्यकता है बाहर। स्थान # 2 पर मौजूद सर्वर को '#ID OUT: 400PM "प्रदर्शित करना चाहिए न कि" #ID IN: 400PM ", क्योंकि उपयोगकर्ता पहले ही चेक इन कर चुका है।

तो, इस विचार को काम करने के लिए मुझे क्या उपयोग करना चाहिए? मेरी मुख्य चिंता नेटवर्क के साथ है (अन्य विभाग इसका प्रबंधन करता है) जो बहुत अप्रत्याशित है। यह कभी भी नीचे जाना पसंद करता है।

अपडेट करें

LOL, मुझे समझ नहीं आया कि मेरा प्रश्न स्पष्ट नहीं था। मैंने इसे देखा था जब इसे इंगित किया गया था, इसके बारे में खेद है।

मेरा असली सवाल यह है कि मैं अपने MySQL को एक-दूसरे (20 सर्वर) के साथ सिंक्रनाइज़ करने के लिए कैसे कॉन्फ़िगर कर सकता हूं? MySQL क्लस्टर? (मैंने इसके बारे में पढ़ने की कोशिश की, लेकिन मुझे यकीन नहीं है कि यह करना सही है।)

मेरा वर्तमान सेटअप (प्रथम चरण):

  • प्रत्येक सर्वर के लिए स्थानीय डेटाबेस
  • OS: स्लैकवेयर
  • एक मुख्य सर्वर जो कि किस कर्मचारी का ट्रैक रखता है, किस सर्वर पर है
  • उपयोगकर्ता को अपना इतिहास (जो उनके रिकॉर्ड के आधार पर सर्वर से जुड़ता है) देखने के लिए एक वेब आधारित फ्रंट एंड

मुख्य पेशेवरों

  • नेटवर्क समस्याओं के बारे में कोई चिंता नहीं है क्योंकि यह एक स्थानीय डेटाबेस है

मुख्य विपक्ष

  • एक उपयोगकर्ता केवल और उसी सर्वर पर जांच कर सकता है। डेटाबेस और सर्वर एक दूसरे के साथ नहीं जुड़े हैं।
  • यदि उपयोगकर्ता विभिन्न स्थानों पर जाँच करना चाहते हैं, तो उन्हें प्रत्येक सर्वर से उपयोगकर्ता को जोड़ना होगा। जिसका अर्थ है, यदि उपयोगकर्ता स्थान ए में जाना चाहता है, तो उपयोगकर्ता को पहले स्थान ए से बाहर की जाँच करनी चाहिए और फिर स्थान बी में जांच करनी चाहिए। स्थान बी के सर्वर को यह नहीं पता था कि उपयोगकर्ता ने ए में पहले चेक किया है।

वैसे, मैंने अपने NTP को पहले ही एक स्थानीय सर्वर पर केंद्रीकृत कर दिया है। नेटवर्क के बारे में, चलो बस कहते हैं, मेरे पास बदलाव करने का अधिकार नहीं है ताकि नेटवर्क बेहतर होगा । नेटवर्क एक बार में सभी 20 सर्वरों को प्रभावित नहीं करेगा, आमतौर पर, उनमें से कुछ को सप्ताह में कई बार।

अगर कुछ और है तो आप मुझे जवाब देना चाहेंगे, कृपया बस पूछें।

जवाबों:


1

मुझे लगता है कि आप पूछ रहे हैं: मैं स्वत: विफलता के साथ मल्टी-मास्टर डेटाबेस कैसे कर सकता हूं। यदि यह आपका प्रश्न नहीं है, तो कृपया स्पष्ट करें। यदि यह आपका सवाल है, तो पर पढ़ें।

मेरे पास वास्तव में एक ही चीज़ के लिए एक वेब एप्लिकेशन लिखा गया है, सिवाय इसके कि मीफारे 1K कार्ड का उपयोग नहीं करता है, यह सरल बारकोड कार्ड का उपयोग करता है (इसे LATRIX कहा जाता है और सोर्सफोर्ज से उपलब्ध है, मुझे उम्मीद है कि यह बहुत अधिक प्लगिंग नहीं है) ।

यहाँ मुख्य मुद्दा यह है कि यदि आपके कंप्यूटर का फ्रंटएंड चलाने वाले वास्तविक कंप्यूटर से कनेक्शन कम हो जाता है, तो आप थोड़ा भर जाते हैं। आप निश्चित रूप से एक स्थानीय डेटाबेस चला सकते हैं, और कुछ सिंक तंत्र को एक मास्टर डेटाबेस में वापस लागू कर सकते हैं, लेकिन जब तक सिंक काम नहीं कर रहा है (नेटवर्क की अनुपस्थिति के कारण), आपके पास यह अधिकार प्राप्त करने का कोई मौका नहीं है।

इसलिए सबसे पहली बात यह है कि आप विश्वसनीय नेटवर्क कनेक्टिविटी सुनिश्चित करें। उसके बिना आप हमेशा संघर्ष करने वाले हैं। LATRIX स्थानीय डेटाबेस या मल्टी-मास्टर डेटाबेस का उपयोग नहीं करता है, यह बस जाँचता है कि डेटाबेस सर्वर के लिए नेटवर्क कनेक्शन काम कर रहा है। यदि नहीं, तो फ़्रंटेंड टर्मिनल निष्क्रिय हो जाता है (यानी उपयोगकर्ता हमारे चेक आउट नहीं कर सकते हैं), क्योंकि मैं अनुपलब्ध नेटवर्क कनेक्शन के लिए उपयुक्त समाधान नहीं निकाल सका।


LATRIX अच्छा लग रहा है, लेकिन मेरे अलग-अलग काम के माहौल के कारण, बहुत सारी चीजों को अनुकूलित करने की आवश्यकता है, यही कारण है कि मैंने अपना खुद का एप्लिकेशन विकसित किया है।
आम्री

मुझे अनुकूलन के साथ मदद करने में बहुत रुचि होती, लेकिन निश्चित रूप से मैं आपके निर्णय का सम्मान करता हूं। हालांकि, इनमें से कोई भी आपके पास मूल समस्या से विचलित नहीं होता है: विश्वसनीय नेटवर्किंग।
वुल्फगैंग्ज़

आपकी सभी जोड़ी गई जानकारी को पढ़ने के बाद भी मुझे लगता है कि उन मामलों के लिए कोई वास्तविक समाधान नहीं है जहां एक नेटवर्क कनेक्शन नीचे जाता है और एक उपयोगकर्ता एक स्थान से दूसरे स्थान पर जाता है। एक चीज़ जिसे आप आज़मा सकते हैं (लेकिन इसके लिए नेटवर्क में बदलाव की भी आवश्यकता होगी) वैकल्पिक मार्ग स्थापित कर रहा है, ताकि यदि किसी स्थान और मुख्य सर्वर के बीच का कोई विशेष मार्ग नीचे चला जाए, तो वह स्थान सर्वर किसी अन्य मार्ग का उपयोग करने का प्रयास करेगा।
wolfgangsz

0

यह कभी भी नीचे जाना चाहता है

जब कुछ स्मार्ट लोगों ने इंटरनेट डिजाइन किया, तो यह एक मजबूत कॉमिडेंसिंग माध्यम प्रदान करना था जो कि ऑल-आउट परमाणु युद्ध की स्थिति में भी काम करना जारी रखेगा। हालांकि यह ईबे पर स्निप-बिडिंग के लिए कुछ मुद्दों को उठा सकता है, फिर भी बहुत सारे ऐतिहासिक अनुप्रयोग प्रोटोकॉल अभी भी बहुत प्रभावी हैं।

आपने इस बारे में बहुत सारी जानकारी दी है कि आपका सिस्टम क्या करने का इरादा रखता है, लेकिन आपने कोई विशिष्ट प्रश्न नहीं पूछा है। यह मानते हुए कि आप पूछ रहे हैं कि आप घड़ियों को सिंक में कैसे रखते हैं, तो ऐसा करने का सबसे अच्छा तरीका नेटवर्क टाइम प्रोटोकॉल (NTP) का उपयोग करना है । ध्यान दें कि लगभग हर एप्लिकेशन को समय प्राप्त करने के लिए ओएस घड़ी पढ़ता है (लेकिन यह जरूरी नहीं कि हार्डवेयर घड़ी के समान ही हो)। जबकि हम अलग-अलग समय क्षेत्रों में रह सकते हैं समय सभी उपयोग के लिए एक ही दर से गुजर रहा है। ऊपर दिया गया लिंक आपको यह बताता है कि यह कैसे काम करता है। इंटरनेट पर उपलब्ध मुफ्त सर्वरों की सूची है - या आप अपना स्वयं का चला सकते हैं (अधिकांश जीपीएस डिवाइस बहुत सटीक घड़ी डेटा प्रदान करते हैं)।

आपने उल्लेख नहीं किया है कि आप किस ओएस पर चल रहे हैं।

BTW यदि आप अभी भी Microsoft आधारित ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं, तो आप 'नेट टाइम \ सर्वर / सेट' का उपयोग करके किसी अन्य SMB मशीन से समय निर्धारित कर सकते हैं - लेकिन यह लगभग NTP के रूप में परिष्कृत / सटीक नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.