Tôi chưa quen với việc phát triển microservices, mặc dù tôi đã nghiên cứu về nó một thời gian, đọc cả tài liệu của Spring và Netflix.
Tôi đã bắt đầu một dự án đơn giản có sẵn trên Github . Về cơ bản, nó là một máy chủ Eureka (Archimedes) và ba dịch vụ khách Eureka (một API công khai và hai dịch vụ riêng tư). Kiểm tra readme của github để biết mô tả chi tiết.
Vấn đề là khi mọi thứ đang chạy, tôi muốn rằng nếu một trong các dịch vụ riêng tư bị giết, máy chủ Eureka nhận ra và xóa nó khỏi sổ đăng ký.
Tôi đã tìm thấy câu hỏi này trên Stackoverflow và giải pháp được đưa ra bằng cách sử dụng enableSelfPreservation:false
trong cấu hình Máy chủ Eureka. Làm điều này sau một thời gian dịch vụ bị giết sẽ biến mất như mong đợi.
Tuy nhiên, tôi có thể thấy thông báo sau:
CHẾ ĐỘ BẢO QUẢN TỰ CHỌN ĐƯỢC TẮT. CÓ THỂ KHÔNG BẢO VỆ HẠN MỨC TRONG TRƯỜNG HỢP MẠNG / CÁC VẤN ĐỀ KHÁC.
1. Mục đích của việc bảo quản bản thân là gì? Tài liệu nói rằng với việc tự bảo quản trên "khách hàng có thể nhận được các phiên bản không tồn tại nữa" . Vậy khi nào thì nên bật / tắt nó?
Hơn nữa, khi bật tính năng tự bảo quản, bạn có thể nhận được một thông báo nổi bật trong cảnh báo bảng điều khiển Máy chủ Eureka:
TRƯỜNG HỢP KHẨN CẤP! EUREKA CÓ THỂ LÊN ĐÚNG CÁCH CẢI TIẾN KHẢ NĂNG LÊN TRONG KHI KHÔNG CÓ. CÁC TIỀN GIA HẠN LÀ ÍT HƠN HỮU HẠN VÀ VÌ CÁC TIỀN NÂNG CAO KHÔNG HẾT HẠN CHỈ LÀ ĐƯỢC AN TOÀN.
Bây giờ, tiếp tục với Spring Eureka Console.
Lease expiration enabled true/false
Renews threshold 5
Renews (last min) 4
Tôi đã gặp một hành vi kỳ lạ của số ngưỡng: khi tôi khởi động Máy chủ Eureka một mình, ngưỡng là 1.
2. Tôi có một máy chủ Eureka duy nhất và được định cấu hình registerWithEureka: false
để ngăn nó đăng ký trên máy chủ khác. Sau đó, tại sao nó lại hiển thị trong số ngưỡng?
3. Đối với mỗi khách hàng, tôi bắt đầu số ngưỡng tăng thêm +2. Tôi đoán là do họ gửi 2 tin nhắn gia hạn mỗi phút, đúng không?
4. Máy chủ Eureka không bao giờ gửi gia hạn nên số lần gia hạn tối thiểu cuối cùng luôn ở dưới ngưỡng. Điều này có bình thường không?
renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
Máy chủ 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
Khách hàng 1 cfg:
spring:
application:
name: random-image-microservice
server:
port: 9999
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
healthcheck:
enabled: true