마이크로서비스 아키텍처의 우아한 애플리케이션 종료는 주로 애플리케이션 인스턴스가 계획되고 원활하게 종료되는 것을 의미합니다(즉, 처리해야 할 사고가 없음). 응용 프로그램 서버 종료는 주로 능동 종료와 수동 종료의 두 가지 범주로 구분되며, 이 중 능동 종료와 대부분의 수동 종료는 정상적인 종료를 달성할 수 있습니다. 애플리케이션이 정상적으로 종료되지 않으면 다음과 같은 상황이 발생합니다.
마이크로서비스의 우아한 업그레이드 목표는 위의 상황을 방지하여 수동 개입으로 인한 작업 부하를 피하고 마이크로서비스 아키텍처의 서비스 안정성을 향상시키는 것입니다.
우아한 종료는 다음 시나리오를 해결할 수 있습니다.
우아한 종료는 다음 시나리오를 해결할 수 없습니다.
Java의 정상적인 종료는 일반적으로 JDK의 ShutdownHook(후크)을 등록하여 수행됩니다. 시스템은 종료 명령을 받으면 먼저 시스템을 종료 상태로 표시하고 더 이상 새 메시지를 받지 않게 된 다음 메시지의 백로그를 처리합니다. 마지막으로 리소스를 호출합니다. 재활용 인터페이스는 리소스를 파괴하고 마지막으로 각 스레드는 실행을 종료합니다. 간단한 데모 사례는 다음과 같습니다(간단한 버전):
으아악시간 초과 제어
일반적으로 정상적인 종료에는 시간 초과 제어 메커니즘이 필요합니다. 종료 전 리소스 복구 및 기타 작업이 시간 초과 기간에 도달하기 전에 완료되지 않으면 종료 스크립트가 KILL -9 PID를 직접 호출하여 강제 종료를 기다릴 수 있습니다. 장기.
Tiada penyelesaian bersatu untuk penutupan perkhidmatan mikro yang anggun. Hanya faham idea dan reka bentuk teras:
Saliran → Sekat → Menunggu penutupan
Tetapi dalam seni bina perkhidmatan mikro, kami boleh mengikut peraturan yang disyorkan berikut untuk mereka bentuk mekanisme penutupan yang anggun untuk perkhidmatan mikro:
Masa henti aplikasi mikroperkhidmatan yang anggun terbahagi terutamanya kepada dua jenis mengikut peranan pengguna yang berbeza:
Reka bentuk penutupan anggun aplikasi gerbang perkhidmatan mikro
Penutupan rapi lapisan peralatan lain boleh diperolehi daripada dua jenis penyelesaian di atas, seperti:
Antara produk sumber terbuka dalam industri, banyak produk menggunakan cangkuk JDK untuk mencapai penutupan yang anggun, seperti produk berikut:
위 내용은 마이크로서비스 아키텍처 - 우아한 종료 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!