>  기사  >  시스템 튜토리얼  >  마이크로서비스 아키텍처 - 우아한 종료 솔루션

마이크로서비스 아키텍처 - 우아한 종료 솔루션

王林
王林원래의
2024-08-07 18:47:02678검색
요약: 마이크로서비스 아키텍처의 정상적인 애플리케이션 종료는 주로 애플리케이션 인스턴스의 계획되고 원활한 종료를 의미합니다(즉, 처리해야 할 사고가 없음).
1 소개

마이크로서비스 아키텍처의 우아한 애플리케이션 종료는 주로 애플리케이션 인스턴스가 계획되고 원활하게 종료되는 것을 의미합니다(즉, 처리해야 할 사고가 없음). 응용 프로그램 서버 종료는 주로 능동 종료와 수동 종료의 두 가지 범주로 구분되며, 이 중 능동 종료와 대부분의 수동 종료는 정상적인 종료를 달성할 수 있습니다. 애플리케이션이 정상적으로 종료되지 않으면 다음과 같은 상황이 발생합니다.

  • 데이터 손실: 메모리의 데이터가 디스크에 유지되지 않았습니다
  • 파일 손상: 작성 중인 파일이 업데이트되지 않아 파일이 손상되었습니다
  • 요청 손실: 대기열에 대기 중인 요청이 손실되었습니다
  • 응답 상실: 성공적인 거래가 응답할 시간이 없었습니다
  • 트랜잭션 중단: 중간 상태로 처리되고 있는 트랜잭션을 강제 중단합니다
  • 서비스가 오프라인이 아닙니다. 업스트림 서비스는 계속해서 다운스트림 서비스에 소비 요청을 보냅니다

마이크로서비스의 우아한 업그레이드 목표는 위의 상황을 방지하여 수동 개입으로 인한 작업 부하를 피하고 마이크로서비스 아키텍처의 서비스 안정성을 향상시키는 것입니다.

2 사용 시나리오

우아한 종료는 다음 시나리오를 해결할 수 있습니다.

  • KILL PID
  • 응용 프로그램이 예기치 않게 자동으로 종료되었습니다(System.exit(n))
  • 스크립트 명령을 사용하여 애플리케이션을 중지하세요

우아한 종료는 다음 시나리오를 해결할 수 없습니다.

  • 갑자기 정전
  • 기계 물리적 파괴
  • KILL-9 PID 또는 taskkill /f /pid
3 ShutdownHook

Java의 정상적인 종료는 일반적으로 JDK의 ShutdownHook(후크)을 등록하여 수행됩니다. 시스템은 종료 명령을 받으면 먼저 시스템을 종료 상태로 표시하고 더 이상 새 메시지를 받지 않게 된 다음 메시지의 백로그를 처리합니다. 마지막으로 리소스를 호출합니다. 재활용 인터페이스는 리소스를 파괴하고 마지막으로 각 스레드는 실행을 종료합니다. 간단한 데모 사례는 다음과 같습니다(간단한 버전):

으아악

시간 초과 제어
일반적으로 정상적인 종료에는 시간 초과 제어 메커니즘이 필요합니다. 종료 전 리소스 복구 및 기타 작업이 시간 초과 기간에 도달하기 전에 완료되지 않으면 종료 스크립트가 KILL -9 PID를 직접 호출하여 강제 종료를 기다릴 수 있습니다. 장기.

4 마이크로서비스가 정상적으로 종료됩니다

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:

  • Semua aplikasi perkhidmatan mikro harus menyokong penutupan yang anggun
  • Utamakan pembatalan pendaftaran contoh perkhidmatan yang didaftarkan di pusat pendaftaran
  • Titik akses aplikasi perkhidmatan yang akan diturunkan ditandakan sebagai penafian perkhidmatan
  • Perkhidmatan huluan menyokong kegagalan perkhidmatan yang dinafikan kerana gangguan yang anggun
  • Antara muka penutupan yang sesuai juga disediakan mengikut perniagaan tertentu

Masa henti aplikasi mikroperkhidmatan yang anggun terbahagi terutamanya kepada dua jenis mengikut peranan pengguna yang berbeza:

    • Reka bentuk penutupan yang elegan untuk aplikasi perniagaan perkhidmatan mikro:

마이크로서비스 아키텍처 - 우아한 종료 솔루션

    • Reka bentuk penutupan yang elegan untuk aplikasi perniagaan perkhidmatan mikro
    • Reka bentuk penutupan anggun aplikasi gerbang perkhidmatan mikro:

마이크로서비스 아키텍처 - 우아한 종료 솔루션Reka bentuk penutupan anggun aplikasi gerbang perkhidmatan mikro

Penutupan rapi lapisan peralatan lain boleh diperolehi daripada dua jenis penyelesaian di atas, seperti:

  • Naik taraf keseluruhan seni bina bahagian belakang, anda boleh bertukar terus daripada DNS atau Nginx
  • Naik taraf lapisan Nginx, anda boleh bertukar terus daripada DNS
5 kes penggunaan

Antara produk sumber terbuka dalam industri, banyak produk menggunakan cangkuk JDK untuk mencapai penutupan yang anggun, seperti produk berikut:

  • Berjaring
  • DUBBO

위 내용은 마이크로서비스 아키텍처 - 우아한 종료 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.