2015-04-16 7 views
14

मैं वास्तव में सूक्ष्मजीव आर्किटेक्चर से संबंधित लेखों के स्वर पढ़ रहा हूं, लेकिन ऐसा लगता है कि वे स्पष्टीकरण में गहराई से बिना सबसे आसान तरीके से काम कर रहे हैं।माइक्रोस्कोस, सेवा रजिस्ट्री, एपीआई गेटवे और डेटा शेयरिंग

आप मेरे सवालों की व्याख्या करने के लिए, मैं तुम्हें मेरे वास्तविक थोड़ा वास्तुकला दिखाएगा:

enter image description here

तो, यहाँ है कि मैं क्या उपयोग करना चाहते हैं। तकनीकी रूप से कुछ भी करने से पहले, मुझे और सैद्धांतिक सूचनाओं की आवश्यकता है। मेरे डोमेन

की

विवरण मैं कुछ मोबाइल और ब्राउज़र आधारित ग्राहक हैं, एक आवेदन पत्र पर खुद को कनेक्ट करने के लिए, अपने उपयोगकर्ता जानकारियां प्राप्त करने में सक्षम हैं और वे क्या खरीदा के बारे में बिलिंग जानकारियां परामर्श करने के लिए सक्षम।

एक अखंड आवेदन पर, मैं इस वास्तुकला का प्रयोग करेंगे: - मोबाइल के साथ प्रस्तुति परत/कोणीय-एंबर - अनुमापकता - एक मानक MySQL डेटाबेस साथ दाल - एक बाकी की कि सामने nginx साथ एपीआई के साथ बिजनेस परत केवल एक्स-अक्ष

पर लागू किया जाएगा, मैं इस मामले में एक माइक्रोस्कोस आर्किटेक्चर का उपयोग करना चाहता हूं, क्योंकि यह "डोमेन स्केलेबल" और वास्तव में लचीला है (और इसके बारे में कुछ और सीखने के लिए)।

स्कीमा पर, प्रत्येक सेवा में, संबंधित एपीआई द्वारा खुलासा केवल HTTP यूआरएल है।

प्रश्न

एक/ (1) प्रवाह में, "मोबाइल" http://myDomain.or/auth पर एक http अनुरोध भेजें।

मेरे दिमाग में, एपीआईजीएटीवे एक मानक सेवा रजिस्ट्री (यूरेका, चिड़ियाघर, या कुछ और) पूछने में सक्षम है, यह पता लगाने में सक्षम है कि क्या AuthSrv पहुंच योग्य है और अपने नेटवर्क पते को पुनर्प्राप्त कर सकता है। फिर ApiGateway AuthSrv का अनुरोध कर सकता है और सर्वर का जवाब दे सकता है

क्या यह काम करने का एक अच्छा तरीका है? डेटा तक पहुंचने के लिए एक्स मशीनों से निपटने पर कोई विलंबता समस्या नहीं है?

बी/ प्रवाह (2) सेवा रजिस्ट्री का समर्थन करता है। सेवा रजिस्ट्री कैसे समझ सकती है कि बच्चों/यूथ जैसे बच्चों/यूथ/अन्य (यदि इसे उजागर किया गया था) पर भी इस अनुरोध से संबंधित है, इस पते पर आईपी: पोर्ट?

सी/ प्रवाह (3) दिखा रहा है कि सेवा रजिस्ट्री के पास AuthSrv उपलब्ध है। (3 बीआईएस) दूसरे को दिखाता है: कोई ऑथआरआरवी उपलब्ध नहीं है। एक छोटे से आवेदन में, हम स्वीकार कर सकते हैं कि हम कभी-कभी निराशाजनकता खो देते हैं, लेकिन एक बड़ी प्रणाली में, जहां सौ सेवाओं को जोड़ा जाता है, हम सेवा की अक्षमता को कैसे नियंत्रित कर सकते हैं?

डी/ एक अन्य पोस्ट में, मैं एक बिलिंग जानकारी को स्टोर करने के लिए कह रहा था क्योंकि यह किसी उपयोगकर्ता से, किसी अन्य सेवा से और अन्य डेटाबेस से संबंधित है।

एक मानक वास्तुकला में मैं होगा:

{ 
    billingInformations:{...}, 
    billingUser:"/user/12365" // URL corresponding the the user Ressource in the other service 
} 

इस "साझा करने सेवा डेटा" को संभालने के लिए सबसे अच्छा तरीका है और नहीं:

{ 
    billingInformations:{...}, 
    billingUser:ObjectId("userId") 
} 

एक microservice वास्तुकला में, किसी को इस्तेमाल करने की सलाह सेवाओं को जोड़े?

ई/ मुझे इस विशिष्ट मामले में HTTP प्रोटोकॉल के बजाय AMQP प्रोटोकॉल का उपयोग करना कब चाहिए?

अग्रिम

+0

उदाहरण के लिए Spotify Protobuf और ZeroMQ के संयोजन का उपयोग करता है। HTTP के माध्यम से एक संचार बहुत तेज हो गया। – Anatoly

उत्तर

10

एक/

के लिए धन्यवाद नहीं, चिड़ियाघर संचालक की तरह सेवा रजिस्ट्री में स्मृति उच्च प्रवाह क्षमता और कम विलंबता की गारंटी कर रहे हैं।

बी/

Zookeeper आप सेवाओं के पंजीकरण के जैसे फाइल सिस्टम पथ कर सकते हैं की तरह सेवा रजिस्ट्रियों में। उदाहरण/APP1/Service1 और/APP1/Service2 लिए

c/

वास्तव में स्पष्ट नहीं हैं कि क्या है समस्या है।

घ/

पैटर्न किसी की सिफारिश HATEOAS पैटर्न जो एपीआई प्रतिक्रिया के लिए सिफारिश की है है।

ई/

AMQP जब संचार सेवाओं के बीच में आवश्यक केवल आवश्यक है। किसी सेवा से सीधे किसी अन्य सेवा के एपीआई को सीधे कॉल नहीं करना चाहिए।

संपादित

c/

उस मामले तुम वापस आने तर्क लागू करने की आवश्यकता है। उदाहरण के लिए यदि कोई सेवा उपलब्ध नहीं है, तो समय समाप्त हो जाती है या कोई अन्य विफलता कुछ कार्रवाइयों को लेने की आवश्यकता होती है। Netflix's Hystrix जैसे टूल इसे प्राप्त करने में सहायता करते हैं।

ई/

संचार पैटर्न सममित असममित नहीं होना चाहिए। बस नीचे की तरह, enter image description here

यह पैटर्न माइक्रोस्कोप के बीच ढीले युग्मन को सक्षम करेगा जिससे लचीलापन सक्षम हो सके।

+0

ई/इसलिए के बारे में, अगर मैं बिलिंग सेवा के माध्यम से अपनी पूरी उपयोगकर्ता जानकारी तक पहुंचना चाहता हूं, तो मुझे संबंधित उपयोगकर्ता (हेटोस फॉर्मेटेड) के साथ एएमक्यूपी के साथ अनुरोध करना होगा और संबंधित प्रतिक्रिया उप होगी? सी/के बारे में, मेरा मतलब था, अगर मेरे पास सेवा रजिस्ट्री में/auth के लिए कोई सेवा पंजीकृत नहीं है, तो मैं त्रुटि को कैसे संभाल सकता हूं? अग्रिम के लिए धन्यवाद – mfrachet

संबंधित मुद्दे