唯's Blog

笔者是一个热爱编程的 Java 程序员。

0%

无状态服务 VS 有状态服务

基本概念

  • 无状态服务

无状态服务不会在本地存储持久化数据.多个服务实例对于同一个用户请求的响应结果是完全一致的.这种多服务实例之间是没有依赖关系,比如web应用,在k8s控制器 中动态启停无状态服务的pod并不会对其它的pod产生影响.

  • 有状态服务

有状态服务需要在本地存储持久化数据,典型的是分布式数据库的应用,分布式节点实例之间有依赖的拓扑关系.比如,主从关系. 如果K8S停止分布式集群中任 一实例pod,就可能会导致数据丢失或者集群的crash.

通过使用 Headless Service + StatefulSet 来实现有状态服务,比如kafka集群,mysql集群,zk集群

https://zhuanlan.zhihu.com/p/390440336