Rumah >Tutorial sistem >LINUX >Seni bina perkhidmatan mikro—penyelesaian penutupan yang anggun
Penutupan aplikasi yang anggun dalam seni bina perkhidmatan mikro terutamanya merujuk kepada keluar yang terancang dan lancar bagi contoh aplikasi (iaitu, tiada insiden yang perlu dikendalikan). Penutupan pelayan aplikasi terbahagi terutamanya kepada dua kategori: penutupan aktif dan penutupan pasif, yang mana penutupan aktif dan kebanyakan penutupan pasif boleh mencapai penutupan yang anggun. Jika aplikasi tidak ditutup dengan baik, situasi berikut akan berlaku:
Matlamat peningkatan elegan perkhidmatan mikro kami adalah untuk mengelakkan situasi di atas, dengan itu mengelakkan beban kerja campur tangan manual dan meningkatkan kebolehpercayaan perkhidmatan seni bina perkhidmatan mikro.
Penutupan anggun boleh menyelesaikan senario berikut:
Penutupan anggun tidak dapat menyelesaikan senario berikut:
Penutupan anggun Java biasanya dicapai dengan mendaftarkan ShutdownHook (cangkuk) JDK Apabila sistem menerima arahan keluar, ia mula-mula menandakan sistem berada dalam keadaan keluar dan tidak akan menerima mesej baharu lagi, kemudian memproses tunggakan mesej, dan akhirnya memanggil sumber Antara muka kitar semula memusnahkan sumber, dan akhirnya setiap utas keluar dari pelaksanaan. Kes demo ringkas adalah seperti berikut (versi ringkas):
<span class="hljs-comment">/** * 优雅停机处理方式 * * <span class="hljs-doctag">@author</span> lry **/</span> <span class="hljs-keyword"><span class="hljs-selector-tag">public</span></span> <span class="hljs-class"><span class="hljs-keyword"><span class="hljs-selector-tag">class</span></span> <span class="hljs-title"><span class="hljs-selector-tag">Main</span></span></span>{ <span class="hljs-comment">/** * 启动应用 **/</span> <span class="hljs-function"><span class="hljs-keyword"><span class="hljs-selector-tag">public</span></span> <span class="hljs-keyword"><span class="hljs-selector-tag">void</span></span> <span class="hljs-title"><span class="hljs-selector-tag">start</span></span><span class="hljs-params">()</span></span>{ <span class="hljs-comment">// 第一步:启动应用服务……</span> <span class="hljs-comment">// 第二步:注册JDK钩子</span> <span class="hljs-selector-tag">Runtime</span><span class="hljs-selector-class">.getRuntime</span>()<span class="hljs-selector-class">.addShutdownHook</span>(<span class="hljs-keyword">new</span> Thread(<span class="hljs-keyword">new</span> Runnable() { <span class="hljs-meta"><span class="hljs-variable">@Override</span></span> <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">run</span><span class="hljs-params">()</span> </span>{ System.out.println(<span class="hljs-string">"The hook running..."</span>); <span class="hljs-comment">//第三步:调用停机处理</span> stop(); } })); } <span class="hljs-comment">/** * 停止应用 **/</span> <span class="hljs-function"><span class="hljs-keyword"><span class="hljs-selector-tag">public</span></span> <span class="hljs-keyword"><span class="hljs-selector-tag">void</span></span> <span class="hljs-title"><span class="hljs-selector-tag">stop</span></span><span class="hljs-params">()</span></span>{ <span class="hljs-comment">// 停止应用前停机处理(如:注销服务、标记不接受请求等)</span> } }
Kawalan tamat masa
Biasanya, keluar anggun memerlukan mekanisme kawalan tamat masa Jika pemulihan sumber dan operasi lain sebelum keluar tidak selesai sebelum tempoh tamat masa dicapai, skrip penutupan terus memanggil KILL -9 PID untuk memaksa keluar masa yang lama.
There is no unified solution for graceful shutdown of microservices. Just grasp the core ideas and design:
Drainage → Baffle → Waiting for shutdown
But in a microservice architecture, we can follow the following recommended rules to design a graceful shutdown mechanism for microservices:
Graceful downtime of microservice applications is mainly divided into two types according to the different user roles:
Microservice gateway application graceful shutdown design
The graceful shutdown of other layers of equipment can be derived from the above two types of solutions, such as:
Among the open source products in the industry, many products use JDK hooks to achieve graceful shutdown, such as the following products:
Atas ialah kandungan terperinci Seni bina perkhidmatan mikro—penyelesaian penutupan yang anggun. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!