如何持久化保存容器的数据?不同场景下怎么选择容器持久化存储技术?

参与9

2同行回答

ibmwangfeiibmwangfei  系统工程师 , IBM
如何实现容器数据的持久化可以参考我上传的ppt;不同场景下如何选择合理的存储技术则要针对具体场景来讨论,目前总的来说有两种选择,基于文件level的和基于物理块存储设备的。显示全部

如何实现容器数据的持久化可以参考我上传的ppt;不同场景下如何选择合理的存储技术则要针对具体场景来讨论,目前总的来说有两种选择,基于文件level的和基于物理块存储设备的。

收起
金融其它 · 2018-05-04
浏览1728
caikaicaikai  系统架构师 , KYLERC
容器技术本身并不强调持久化,当讨论容器中的数据持久化,本质上是容器中所运行业务的要求。因此,容器运行要选择什么样的持久化存储,必须要根据容器中运行的业务的特性来选择。大致上,我觉得可以分为几种情况:最简单的,如果容器中运行的是无状态应用(如查询操作),或者状态丢失了也没...显示全部

容器技术本身并不强调持久化,当讨论容器中的数据持久化,本质上是容器中所运行业务的要求。
因此,容器运行要选择什么样的持久化存储,必须要根据容器中运行的业务的特性来选择。

大致上,我觉得可以分为几种情况:

  1. 最简单的,如果容器中运行的是无状态应用(如查询操作),或者状态丢失了也没关系(比如结果可复现,或任何幂等性操作),运行这种应用,容器可能没有持久化存储的必要;
  2. 如果是状态需要持久化的应用,那么又可以具体地进行分析,例如:

    • 如果是非数据库类负载,且是把传统的应用运行于容器,应用通常会基于文件系统进行数据存储,那么考虑基于文件系统的共享式存储比较合适,比如NFS,后端则可以是分布式的,也可以是集中式的,这要根据成本和性能要求进行取舍
    • 如果是非数据库类负载,且是新型的应用,根据云原生应用的最佳实践,我们可以选择对象存储、缓存、消息队列等方式进行数据持久化,总之是通过服务的方式访问后端的持久化存储服务
    • 如果是数据库类服务,出于保证读写性能的考虑,可考虑选择块设备存储。如果要依赖底层存储复制能力进行远程的数据库主备同步,那基本上就要选择集中式的商业化存储才可以提满足

对于一般非数据库类应用,如果可以接受应用的改造,应尽量选择通过服务方式访问持久化存储,这样更符合云原生应用的最佳实践,提高应用的灵活性、迁移性,减少环境依赖。相比之下,如果采用文件系统访问外部共享式存储,存在容量限制(通常多个容器会共享容量)、迁移限制(必须迁移到可以挂载共享卷的节点)、时效性(容器迁移后需要重新挂载,还有可能需要处理挂载失败等异常情况)

对于数据库类负载,为了保证效率和稳定性,通常生产环境中会专门开辟一个区域或特定的高性能节点(如配置有HBA卡)来承载数据库类负载,所以这类负载不太强调迁移性,而读写性能、容量独享更关键,因此使用效率更高的块设备较合适,如果要考虑远程主备复制,那就要考虑更可靠的商业方案

收起
银行 · 2018-05-06
浏览1657

提问者

daiweis
系统架构师某银行
擅长领域: 双活灾备安全

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2018-05-02
  • 关注会员:3 人
  • 问题浏览:4322
  • 最近回答:2018-05-06
  • X社区推广