2016-09-22 39 views
5

Tôi đã phát triển một dịch vụ vi mô (dịch vụ REST khởi động mùa xuân, được triển khai dưới dạng tệp JAR thực thi) để theo dõi tất cả hoạt động từ các dự án của bên thứ ba theo yêu cầu của tôi và hoạt động của nó ngay bây giờ.Tái triển khai dịch vụ khởi động mùa xuân mà không cần khởi động lại?

Hiện tại, nó hoạt động ngoài một số dự án và giờ tôi đã cập nhật dịch vụ với một số tính năng bổ sung.

Nhưng tôi không thể di chuyển nó đến máy chủ trực tiếp mà không cần khởi động lại dịch vụ hiện tại vì nó được triển khai dưới dạng jar. Tôi sợ phải khởi động lại dịch vụ của mình, khởi động lại có thể dẫn đến mất dữ liệu của các dự án tích hợp.

Tôi có thể thực hiện những cải tiến nào trong kiến ​​trúc để giải quyết vấn đề của mình?

+0

Có cách để thực hiện việc này bằng cách sử dụng [Hoán đổi nóng] (http://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html) nhưng điều đó có thể không hoạt động nếu bạn đang triển khai các JAR. Ngoài ra nó không được thực hiện để làm việc cho các lớp học khi bạn thực hiện thay đổi mã quyết liệt. – px06

+0

cảm ơn bạn đã phản hồi, cần triển khai lại các lớp học cũng – Jamsheer

+0

Những gì bạn mô tả về cơ bản là lãnh thổ chạy nhiều phiên bản dịch vụ của bạn được ràng buộc với một đăng ký dịch vụ. Điều đó sẽ cho phép bạn mang chúng xuống để nâng cấp từng cái một trong khi luôn có ít nhất một cá thể vẫn chạy và có sẵn cho khách hàng. Đó không phải là tầm thường để thiết lập tuy nhiên. Một google cho "dịch vụ microservice đăng ký" là một khởi đầu tốt. – Gimby

Trả lời

0

Cuối cùng nhận được giải pháp được nhận xét bởi @Gimby.

Chúng tôi có thể làm điều đó bằng cách triển khai nhiều phiên bản dịch vụ và liên kết với dịch vụ đăng ký. Ở đây tôi đã đạt được nó bằng cách sử dụng eureka làm dịch vụ đăng ký và cũng sử dụng zuul làm proxy.

2

Còn khoảng JRebel plugin. Nó làm việc hoàn hảo cho tôi, nhưng, thật không may, nó không phải là ứng dụng miễn phí. Giống như thay thế (tôi sử dụng phương pháp này với Spring MVC, với Spring Boot nó có thể khác), tôi thiết lập liên kết mềm trong thư mục làm việc trên đường dẫn biên dịch trong JBoss (trong trường hợp của tôi nó là dir với tên target và * .class và *. tệp jar). Đối với tôi, giải pháp đầu tiên với JRebel là phù hợp nhất với bạn.

Các vấn đề liên quan