美文网首页
无状态服务和有状态服务

无状态服务和有状态服务

作者: e06ef3adf70b | 来源:发表于2018-10-03 13:14 被阅读449次

无状态服务(Stateless Service)

是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。这类服务在网易蜂巢云平台创建后,借助k8s内部的负载均衡,当访问该服务的请求到达服务一端后,负载均衡会随机找到一个实例来完成该请求的响应(目前为轮询)。这类服务的实例可能会因为一些原因停止或者重新创建(如扩容时),这时,这些停止的实例里的所有信息(除日志和监控数据外)都将丢失(重启容器即会丢失)。因此如果您的容器实例里需要保留重要的信息,并希望随时可以备份以便于以后可以恢复的话,那么建议您创建有状态服务。

有状态服务(Stateful Service)

是指该服务的实例可以将一部分数据随时进行备份,并且在创建一个新的有状态服务时,可以通过备份恢复这些数据,以达到数据持久化的目的。有状态服务只能有一个实例,因此不支持“自动服务容量调节”。一般来说,数据库服务或者需要在本地文件系统存储配置文件或其它永久数据的应用程序可以创建使用有状态服务。要想创建有状态服务,必须满足几个前提:

  • 待创建的服务镜像(image)的Dockerfile中必须定义了存储卷(Volume),因为只有存储卷所在目录里的数据可以被备份
  • 创建服务时,必须指定给该存储卷分配的磁盘空间大小
  • 如果创建服务的同时需要从之前的一个备份里恢复数据,那么还要指明该存储卷用哪个备份恢复。

区别

  1. 实例数量:无状态服务可以有一个或多个实例,因此支持两种服务容量调节模式;有状态服务只能有一个实例,不允许创建多个实例,因此也不支持服务容量调节模式。
  2. 存储卷:无状态服务可以有存储卷,也可以没有,即使有也无法备份存储卷里面的数据;有状态服务必须要有存储卷,并且在创建服务时,必须指定给该存储卷分配的磁盘空间大小。
  3. 数据存储:无状态服务运行过程中的所有数据(除日志和监控数据)都存在容器实例里的文件系统中,如果实例停止或者删除,则这些数据都将丢失,无法找回;而对于有状态服务,凡是已经挂载了存储卷的目录下的文件内容都可以随时进行备份,备份的数据可以下载,也可以用于恢复新的服务。但对于没有挂载卷的目录下的数据,仍然是无法备份和保存的,如果实例停止或者删除,这些非挂载卷里的文件内容同样会丢失。

相关文章

  • 无状态服务和有状态服务

    无状态服务(Stateless Service) 是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例...

  • “无服务”状态

    时值四月份最后一天, 不是依依不舍, 不是再回首荆棘密布, 也不是闹什么烽火连三月; 可是, 今天凌晨五点开始, ...

  • Docker的有状态&无状态

    主要针对 程序的有状态和无状态 & 容器的状态 大概做下总结 文章【无状态服务 VS 有状态服务】(http:...

  • 分布式弹力设计之服务状态

    今天我们来谈一谈服务的状态,服务的状态指的是请求是否与不同的服务实例相关。分为两种,有状态和无状态。 无状态服务重...

  • [转]kubernetes pod&container生命周期浅

    前言 蜂巢(现已更名为网易云计算基础服务)上线的微服务有两大类,有状态和无状态,两者有很大区别,除了有状态服务可以...

  • 状态保持以及Cookie和session

    状态保持 浏览器请求服务器是无状态无记忆的。 无状态无记忆原因:浏览器与服务器是使用Socket进行通信的,服务器...

  • k8s笔记之StatefulSet

    StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务...

  • kubernetes 存储

    前言 在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S...

  • 分布式系统服务单点问题的探讨

    在分布式系统中,单点问题是一个比较常见的问题,对于单点问题可以分为有状态服务的单点问题和无状态服务的单点问题。 无...

  • 高可用解决方案:同城双活?异地双活?异地多活?怎么实现?

    有状态服务 后台服务可以划分为两类,有状态和无状态。高可用对于无状态的应用来说是比较简单的,无状态的应用,只需要通...

网友评论

      本文标题:无状态服务和有状态服务

      本文链接:https://www.haomeiwen.com/subject/yevzoftx.html