跳到正文

单实例部署

Single-Instance Deployment

中级通用

单实例部署(Single-Instance Deployment)是让一个服务在同一时间只由一个运行实例对外提供服务的部署方式。它适合先把小型产品上线,减少多副本协调的复杂度;代价是实例故障或重启时,服务可能暂时不可用。

你可能会说:「我的网站访问量还不大,先只运行一份后端服务,能上线并方便排错就行。」

读之前建议先了解

动手看看

查订单读取用户端唯一服务实例唯一实例订单数据库正常读取
1

用户打开订单页,所有查询都交给这一个服务实例处理,再由它读取订单数据库,不用协调多个副本。

要点

  1. 1

    先看同时有几份服务在接流量

    这里的“单”指同一时间只有一个服务实例在处理这项服务的请求,不是说整个产品只有一个进程。比如网站的前端、后端和数据库可以分别运行,后端仍然采用单实例部署。

  2. 2

    排错简单,但故障没有替补

    请求都经过同一个后端实例,你查看日志时更容易把用户反馈和运行现场对上。反过来,因为没有第二个实例接手,这个实例崩溃、卡住或重启时,用户可能直接遇到错误。

  3. 3

    更新服务时要考虑短暂中断

    如果部署流程是先停旧实例、再启动新实例,中间就会有无法处理请求的时间。你可以先接受这段中断并安排更新时间;如果产品后来需要持续可用,再考虑多实例和流量切换。

容易混淆的地方

单实例部署说的是服务同时有多少个运行实例,不等于“只用一台服务器”:一台机器上也可能运行多个实例。它也不等于单进程,实例内部可能有多个工作进程。与多实例部署相比,它少了实例间的流量分配和故障接替,所以结构较简单,但可用性更依赖这一个实例。

什么时候用

适合用

  • 个人项目或小团队的后台刚上线,请求量不大,你想先用一个后端实例验证功能和部署流程。
  • 内部工具只有少量同事使用,可以接受维护时短暂停机,先用单实例减少排错范围。
  • 开发或预发布环境只需要验证一套服务能否正常启动、连接数据库并响应请求。

不适合用

  • 用户全天都依赖的服务无法接受实例重启导致中断,这时更适合多实例部署并配合流量切换。
  • 一次活动可能带来超过单个实例处理能力的请求量,先做负载测试,再考虑多实例扩容。
  • 如果你部署的是无需常驻后端的静态展示页,直接用静态网站托管,不必为它运行一个服务实例。

练一练

你做的预约后台目前只有一个后端实例。发布新版本时它会重启,用户偶尔看到请求失败;平时流量不大。你该怎么理解现状并决定下一步?

让 AI 帮你做

请把这个预约后台按单实例部署方案上线:同一时间只让一个后端实例对外提供服务。说明启动、日志查看和故障重启方式,并标出更新版本时可能中断请求的环节;暂不加入负载均衡或多实例切换。

接下来学什么