Skip to content

Latest commit

 

History

History
24 lines (12 loc) · 1.42 KB

29 控制流(下):iam-apiserver服务核心功能实现讲解.md

File metadata and controls

24 lines (12 loc) · 1.42 KB

上一讲,我介绍了 iam-apiserver 是如何构建 Web 服务的。这一讲,我们再来看下 iam-apiserver 中的核心功能实现。在对这些核心功能的讲解中,我会向你传达我的程序设计思路。

iam-apiserver 中包含了很多优秀的设计思想和实现,这些点可能比较零碎,但我觉得很值得分享给你。我将这些关键代码设计分为 3 类,分别是应用框架相关的特性、编程规范相关的特性和其他特性。接下来,我们就来详细看看这些设计点,以及它们背后的设计思想。

应用框架相关的特性

应用框架相关的特性包括三个,分别是优雅关停、健康检查和插件化加载中间件。

优雅关停

在讲优雅关停之前,先来看看不优雅的停止服务方式是什么样的。

当我们需要重启服务时,首先需要停止服务,这时可以通过两种方式来停止我们的服务:

  • 在 Linux 终端键入 Ctrl + C(其实是发送 SIGINT 信号)。
  • 发送 SIGTERM 信号,例如 kill 或者 systemctl stop 等。

当我们使用以上两种方式停止服务时,都会产生下面两个问题:

  • 有些请求正在处理,如果服务端直接退出,会造成客户端连接中断,请求失败。
  • 我们的程序可能需要做一些清理工作,比如等待进程内任务队列的任务执行完成,或者拒绝接受新的消息等。