简介: 本文将介绍优雅关闭 gRPC 微服务。在进程收到关闭信号时,我们需要关闭后台运行的逻辑,比如,MySQL 连接等等。

介绍

本文将介绍优雅关闭 gRPC 微服务。

什么是优雅关闭?

在进程收到关闭信号时,我们需要关闭后台运行的逻辑,比如,MySQL 连接等等。

我们将会使用 rk-boot 来启动 gRPC 服务。

请访问如下地址获取完整教程:

安装

go get github.com/rookie-ninja/rk-boot

快速开始

1.创建 boot.yaml

---
grpc:
- name: greeter # Name of grpc entry
port: 8080 # Port of grpc entry
enabled: true # Enable grpc entry

2.创建 main.go

通过 AddShutdownHookFunc() 来添加 shutdownhook 函数。

package main

import (
"context"
"github.com/rookie-ninja/rk-boot"
"github.com/rookie-ninja/rk-gin/interceptor/context"
) // Application entrance.
func main() {
// Create a new boot instance.
boot := rkboot.NewBoot() // Add shutdown hook function
boot.AddShutdownHookFunc("shutdown-hook", func() {
fmt.Println("shutting down")
}) // Bootstrap
boot.Bootstrap(context.Background()) // Wait for shutdown sig
boot.WaitForShutdownSig(context.Background())
}

3.启动 main.go

$ go run main.go

4.ctrl-c

通过 ctrl-c 关闭程序,我们会看到打印如下信息。

shutting down

原文链接

本文为阿里云原创内容,未经允许不得转载。

GRPC: 如何优雅关闭进程(graceful shutdown)的更多相关文章

  1. Socket编程中的强制关闭与优雅关闭及相关socket选项

    以下描述主要是针对windows平台下的TCP socket而言. 首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包( ...

  2. 如何在 Spring Boot 优雅关闭加入一些自定义机制

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  3. Linux系统Tomcat进程使用shutdown无法关闭进程

    问题场景: 若在应用中启动了用户线程,在Linux系统Tomcat进程使用shutdown无法关闭进程. 解决方案: #1.在catalina.sh文件中添加CATALINA_PID [root@lo ...

  4. SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2)

    SpringBoot如何优雅关闭(SpringBoot2.3&Spring Boot2.2) 优雅停止&暴力停止 暴力停止:像日常开发过程中,测试区或者本地开发时,我们并不会考虑项目关 ...

  5. Spring-IOC 在非 web 环境下优雅关闭容器

    当我们设计一个程序时,依赖了Spring容器,然而并不需要spring的web环境时(Spring web环境已经提供了优雅关闭),即程序启动只需要启动Spring ApplicationContex ...

  6. Nginx 启动、停止、平滑重启和平滑升级 graceful shutdown of worker processes

    Controlling nginx http://nginx.org/en/docs/control.html nginx can be controlled with signals. The pr ...

  7. 如何优雅关闭 Spring Boot 应用

    ## 前言 随着线上应用逐步采用 SpringBoot 构建,SpringBoot应用实例越来多,当线上某个应用需要升级部署时,常常简单粗暴地使用 kill 命令,这种停止应用的方式会让应用将所有处理 ...

  8. 关闭钩子(shutdown hook)的作用以及在Tomcat中的使用

    在很多实际应用环境中,当用户关了应用程序时,需要做一些善后清理工作,但问题是,用户有时并不会按照推荐的方法关闭应用程序,很有可能不做清理工作,例如在Tomcat的部署应用中,通过实例化一个Server ...

  9. 优雅关闭服务下线(Jetty)

    在很多时候 kill -9 pid并不是很友好的方法,那样会将我们正在执行请求给断掉,同时eureka 中服务依旧是处于在线状态,这个时候我们可以使用官方提供的actuator来做优雅的关闭处理 - ...

  10. Node.js & Kubernetes Graceful Shutdown

    k8s-graceful-shutdown:该库提供了使用 Kubernetes 实现 Graceful Shutdown(优雅退出) Node.js App 的资源. 问题描述 在 kubernet ...

随机推荐

  1. System design summary

    system design https://github.com/donnemartin/system-design-primer Performance vs scalability scalabi ...

  2. 快速上手系列:传智播客Java基础学习笔记

    配置环境,把JDK的bin所在路径复制到Path,末尾加; 基本语法 一  常见的DOS命令     盘符的切换 d:回车     目录的进入 cd javase                  c ...

  3. C#OpenCvSharp YOLO v3 Demo

    效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  4. Oracle NLSSORT 拼音排序 笔画排序 部首排序

    create table test(name varchar2(20)); insert into test values('中国'); insert into test values('美国'); ...

  5. proteus的五状态显示控制器

    proteus的五状态显示控制器 1.实验原理 使用的核心器件还是4028,BCD译码器.将输入的四个信号接入输入端,输出信号选取0.1.2.4.8这五个输出状态驱动led显示.发光LED需要加入保护 ...

  6. modelsim常用操作之波形仿真

    modelsim波形仿真的新手问题 1.实验目的 在刚接触modelsim时,被其繁复的操作流程所困,一度只能依靠在quartus中修改代码编译后再重启modelsim,自动导入才能得到波形.这样的操 ...

  7. debian12安装arch到chroot环境

    纯属瞎玩,可能有风险 1.安装工具 sudo apt install pacman-package-manager arch-install-scripts archlinux-keyring 2.创 ...

  8. ET介绍——数值组件设计

    类似魔兽世界,moba这种技能极其复杂,灵活性要求极高的技能系统,必须需要一套及其灵活的数值结构来搭配.数值结构设计好了,实现技能系统就会非常简单,否则就是一场灾难.比如魔兽世界,一个人物的数值属性非 ...

  9. #贪心,二叉堆#洛谷 1954 [NOI2010] 航空管制

    题目 分析 首先考虑可行方案,很容易想到拓扑排序, 但是如果建正图第一类的限制有可能不能满足, 考虑第一类限制其实时间倒流就是在 \(T\) 时刻之后才能选它. 那么直接建反图然后 \(a_i\) 大 ...

  10. #搜索#AT2368 [AGC013B] Hamiltonish Path

    题目 求一条简单路径使得路径端点不能再被延伸 分析 一开始想到可能和度数有关,其实没必要, 随便以一个点作为路径中的点深搜两次即可 代码 #include <cstdio> #includ ...