云原生应用程序的各种模式
以下列举的模式大致按照它们在本书中出现的顺序排列:
■ 请求/响应模式—这是一种服务间的通信协议,一个客户端会向某个远程服务发起一个请求,并且在大多数情况下希望接收到一个响应。这种通信可以是同步的,也可以是异步的,通常基于HTTP完成。
■ 事件驱动模式—这是一个分布式系统中各个实体之间进行事件通信的协议,在一个云原生的应用程序中,各个服务之间通过这些事件来保持最新的状态。
■ CQRS(Command Query Responsibility Segregation,命令查询职责分离)模式—在这种模式中,对某个领域实体的查询处理(读)与命令处理(写)是分开的。
■ 多服务实例模式—通过部署应用程序/服务的多个实例来保证弹性、可伸缩性及云原生的运维实践。
■ 水平伸缩模式—通过创建额外的应用程序实例来增加某个服务的容量。
■ 无状态服务模式—应用程序/服务不会被后续的服务调用,在内存或者本地磁盘中不会存储任何状态。
■ 有状态服务模式—指用来持久化状态的服务,例如,数据库和消息队列。这些服务用来为无状态服务提供持久化数据。
■ 通过环境变量配置应用程序的模式—在应用程序启动时,通过环境变量将参数值注入应用程序。
■ 配置服务模式—这是一个(有状态的)服务,用来将配置参数传递给多个应用程序的实例,以确保各个实例的行为是一致的。
■ 配置即代码模式—通过对配置文件进行版本控制来管理配置。
■ 零停机时间升级模式—一种让应用程序/服务在升级所有实例时仍然可以提供完整功能的方法。
■ 滚动升级模式—一种通过分批次、增量式升级部分服务实例,来实现应用程序整体零停机时间升级的技术。
■ 蓝/绿升级—一种通过部署一组新的应用程序实例,然后全部切换到这些实例来升级应用程序的技术。
■ 应用程序健康检查—实现一个可以被调用的端点,用来访问某个应用程序的健康状态。
■ 活性探测—定期调用应用程序的健康端点,如果健康检查失败,则重新创建一个应用程序实例。
■ 服务端负载均衡—一种将请求在多个应用程序实例之间路由的方法,使得客户端只需向一个单独实体(负载均衡器)发送请求。
■ 客户端负载均衡—一种将请求在多个应用程序实例之间路由的方法,客户端知道并且可以控制路由到某个服务的多个实例。
■ 服务发现—客户端可以发现它所要调用服务的一个或多个地址。
■ 重试—当客户端无法接收到服务的响应时,可以重复发起一次请求。
■ 安全服务—一个服务无论被调用零次或者多次,返回的结果都是一样的。
■ 幂等服务—一个服务无论被调用一次或者多次,返回的结果都是一样的。
■ 回调—当发往下游服务的请求无法生成一个结果时,执行的应用程序逻辑。
■ 断路器—一种用来阻止不断向某个故障服务实例发送请求,并且当服务恢复正常后允许继续发送请求的技术。
■ API网关—一个具有多种用途的服务代理,包括访问控制、审计、路由等。
■ 挎斗—一种服务代理方法,代理服务本身与服务在一起。
■ 服务网格—多个挎斗的网络和控制台。
■ 分布式跟踪—一种为了跟踪问题原因,用一个线程来跟踪一系列相关的分布式服务的方法。
■ 事件溯源—一种将事件日志作为软件的真实来源,并通过物化视图来满足服务实例需求的模式。