---
url: /zh/operate.md
description: 运行一个 Wow 服务需要什么，以及上线生产之前要过一遍的检查清单。
---

# 运行 Wow

Wow 服务是一个以一个或多个节点运行的 Spring Boot 应用。它的节点共用服务的数据库，通过数据库互相发现，在彼此之间划分日志的分区，并在内部端口上通信。同一系统的服务之间通过 Kafka 通信。本区写给部署和运行它们的人。

## 页面 {#the-pages}

| 页面 | 内容 |
| --- | --- |
| [部署模型](./topology) | 服务与节点、两个端口、服务需要什么、启动与停止 |
| [配置服务](./configuration) | 配置怎样生效、哪些必须在各节点间一致、开发环境的默认值 |
| [PostgreSQL](./postgresql) | 表、schema、连接池、多个数据库 |
| [Kafka](./kafka) | 服务什么时候需要 Kafka、它的主题、持久的命令摄入 |
| [保护部署](./security) | 调用方、授权、内部端口、个人数据、租户 |
| [ops 服务与控制台](./ops-console) | 把每个服务停放的聚合汇集到一处 |

## 上线生产之前 {#before-production}

**存储**

* 服务运行在持久的后端上：应用提供 `DataSource` 或 `MongoClient`，并且没有生产节点运行在开发 profile 中。
* `wow.log.partitions` 在首次部署之前选定；日志有了条目之后就不能再改。
* 数据库账户与 `wow.ddl` 相符：`auto` 需要能建表的账户，或者事先应用 schema 并使用 `validate`。
* 日志、检查点、租约、失败台账、预留和定时器一起备份。

**集群**

* 一个服务的每个节点都有相同的 `wow.service`、分区数、存储和集群令牌。
* 节点之间能访问彼此的内部端口，集群之外的东西访问不到。
* 平台的终止宽限期足够节点关闭（[部署模型](./topology#starting-and-stopping)）。
* 就绪和存活探针读取节点的健康分组。

**服务之间**

* 服务拥有的每个 Kafka 主题都已存在，并有它需要的分区数：命令主题的分区数与上下文的日志完全相同（[Kafka](./kafka#topics)）。
* 每个服务列出它在内部端口上信任的服务，以及每个服务可以调用的命令。

**安全**

* 过一遍[保护部署](./security#checklist)的检查清单。

**运维**

* ops 服务汇集每个服务的失败台账，并且有人关注它（[ops 服务与控制台](./ops-console)）。
* 启动时，配置没有任何关于未知 `wow.*` 键的警告。
