मैं, विकासशील microservices लिए नया हूँ, हालांकि मैं थोड़ी देर के लिए इस बारे में शोध किया गया है दोनों वसंत के डॉक्स और Netflix के पढ़ने।समझौता स्प्रिंग बादल यूरेका सर्वर आत्म संरक्षण और नवीनीकृत सीमा
मैं एक साधारण परियोजना available on Github शुरू कर दिया है। यह मूल रूप से यूरेका सर्वर (आर्किमिडीज) और तीन यूरेका क्लाइंट माइक्रोसर्विसेज (एक सार्वजनिक एपीआई और दो निजी) है। एक विस्तृत विवरण के लिए जिथूब के रीडमे की जांच करें।
मुद्दा यह है कि जब सब कुछ चल रहा है मैं चाहूँगा कि अगर निजी microservices में से एक की मौत हो गई है, यूरेका सर्वर का एहसास है और रजिस्ट्री से यह दूर करता है।
I found this question on Stackoverflow, और समाधान यूरेका सर्वर कॉन्फ़िगरेशन में enableSelfPreservation:false
का उपयोग करके गुजरता है। थोड़ी देर बाद ऐसा करने के बाद मारे गए सेवा की उम्मीद के रूप में गायब हो जाता है।
आत्म संरक्षण मोड OFF.THIS कर दिया जाता है नेटवर्क/अन्य समस्याओं के मामले में रक्षा नहीं हो सकते उदाहरण EXPIRY:
हालांकि मैं निम्न संदेश देख सकते हैं।
1. आत्म संरक्षण का उद्देश्य क्या है? doc राज्यों पर आत्म संरक्षण "ग्राहकों उदाहरणों कि अब मौजूद नहीं है प्राप्त कर सकते हैं" के साथ कि। तो यह कब चालू/बंद करने की सलाह दी जाती है?
इसके अलावा, जब आत्म संरक्षण पर है, तो आप एक उत्कृष्ट संदेश यूरेका सर्वर कंसोल चेतावनी में प्राप्त कर सकते हैं:
आपातकालीन! यूरेका गलत तरीके से दावा दृष्टांत कर रहे हैं जब वे नहीं हैं हो सकता। नवीकरण में कम से THRESHOLD और इसलिए उदाहरणों सुरक्षित रहने के लिए नहीं कर रहे हैं सीमा समाप्त किया जा रहा है।
अब, वसंत यूरेका कंसोल के साथ चल रहा है।
Lease expiration enabled true/false
Renews threshold 5
Renews (last min) 4
मैं सीमा गिनती का एक अजीब व्यवहार सामने आने वाले: जब मैं यूरेका सर्वर अकेले शुरू, सीमा 1.
2. मैं एक एकल यूरेका सर्वर है और registerWithEureka: false
साथ कॉन्फ़िगर किया गया है इसे किसी अन्य सर्वर पर पंजीकरण करने से रोकने के लिए। फिर, यह थ्रेसहोल्ड गिनती में क्यों दिखता है?
3. प्रत्येक ग्राहक के लिए मैं थ्रेसहोल्ड गिनती +2 से बढ़ता हूं। मुझे लगता है कि ऐसा इसलिए है क्योंकि वे प्रति मिनट 2 नवीनीकरण संदेश भेजते हैं, क्या मैं सही हूँ?
4. यूरेका सर्वर कभी नवीनीकरण नहीं भेजता है, इसलिए अंतिम न्यूनतम नवीनीकरण सीमा के नीचे हमेशा होता है। क्या यह सामान्य है?
renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
सर्वर cfg:
server:
port: ${PORT:8761}
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
enableSelfPreservation: false
# waitTimeInMsWhenSyncEmpty: 0
ग्राहक 1 cfg:
spring:
application:
name: random-image-microservice
server:
port: 9999
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
healthcheck:
enabled: true
मैं इस प्रश्न का उत्तर देने के लिए समय लेना चाहता हूं। यह जटिल है। कुछ जवाब नेटफ्लिक्स कोड में हैं और अन्य कॉन्फ़िगरेशन हैं। मैं चाहता हूं कि मेरा उत्तर स्प्रिंग क्लाउड प्रलेखन के हिस्से के रूप में समाप्त हो जाए, लेकिन यह संभवतः थैंक्सगिविंग के बाद होगा जब तक कि मेरे सहयोगी पहले जवाब न दें। – spencergibb
यह नेटफ्लिक्स से थोड़ी सी पृष्ठभूमि है: https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer- संचार – spencergibb
यहां कुछ और पृष्ठभूमि है: https://github.com/spring- क्लाउड/स्प्रिंग-क्लाउड-नेटफ्लिक्स/अंक/373 – spencergibb