{"version":"1.0","provider_name":"Blog - Silicon Cloud","provider_url":"https:\/\/www.silicloud.com\/zh\/blog","author_name":"\u97f5, \u79d1","author_url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/","title":"gRPC\u7684\u6b63\u5e38\u5173\u95ed","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"gtOo2DJteP\"><a href=\"https:\/\/www.silicloud.com\/zh\/blog\/grpc%e7%9a%84%e6%ad%a3%e5%b8%b8%e5%85%b3%e9%97%ad\/\">gRPC\u7684\u6b63\u5e38\u5173\u95ed<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/www.silicloud.com\/zh\/blog\/grpc%e7%9a%84%e6%ad%a3%e5%b8%b8%e5%85%b3%e9%97%ad\/embed\/#?secret=gtOo2DJteP\" width=\"600\" height=\"338\" title=\"\u300a gRPC\u7684\u6b63\u5e38\u5173\u95ed \u300b\u2014Blog - Silicon Cloud\" data-secret=\"gtOo2DJteP\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/www.silicloud.com\/zh\/blog\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","description":"Learn how to implement graceful shutdown in gRPC services using Go. This comprehensive guide covers signal handling, context management, and proper termination techniques for both HTTP and gRPC servers. Discover practical examples with the 'run' package and errgroup to ensure clean service shutdown without data loss or connection issues."}