微服务的一个基本要求是应用程序容器必须是无状态的。但是,状态仍然需要存储在其他地方,例如数据库、对象存储、会话文件、cookie、缓存等。
微存储作为一种新的架构正在兴起,以解决微服务的存储可扩展性问题。微存储继承了微服务“**只有小东西才能扩展**”的理念。
纵向扩展不是微存储

纵向扩展架构通常被恰当地归类为单体架构,其可扩展性仅限于单个服务器所能提供的性能。纵向扩展存储服务器旨在存储企业数据,并由认证的 IT 专业人员管理。它们最适合 Microsoft Exchange、Microsoft SQL Server、Oracle RDBMS 等。它们提供存储整合、无缝可管理性、高性能和可靠性。NetApp、EMC、HDS 是纵向扩展存储领域的领导者。
纵向扩展系统通常以硬件设备的形式出售,非常适合低延迟、事务性数据。
纵向扩展架构与微服务架构完全相反。其单节点限制和硬件设备模型使其不适合微服务。
横向扩展不是微存储

横向扩展架构也被归类为分布式存储。它旨在解决纵向扩展架构的可扩展性限制。
从应用程序的角度来看,横向扩展系统也是单体架构。虽然存储分布在许多服务器上,但它们仍然表现为一个大型系统。这违背了微服务架构的原则。
Red Hat Gluster、Red Hat Ceph、Apache Hadoop HDFS、Apache Cassandra 是分布式存储架构的示例。
横向扩展设计用于较少的、较大的卷(PB 级)和吞吐量密集型操作。操作大规模分布式系统的复杂性限制了分布式存储架构在微服务环境中的可扩展性。
什么是微存储?

微存储是一种专为微服务设计的存储架构。微服务的基本目标是简单性和可扩展性。微存储的简单性允许存储像 Facebook 和 Google 一样扩展。它们可以从小规模开始,发展到数百 PB 和数十亿用户。
微存储的要求
可扩展性:最大性能和容量限制由单个应用程序实例的需求决定。通常这些限制较小且更容易满足。通过为每个应用程序实例自动配置一个微存储来实现线性可扩展性。整个系统的聚合性能可以达到 TB/s 的吞吐量和 100+ PB。
租户:由于每个应用程序实例都配置了一个专用的存储服务器,因此无需复杂的多租户和多用户需求。
持久性:操作数据存储在由本地磁盘和内存支持的数据卷上。通过跨服务器复制数据来实现高可用性。MariaDB 和 MongoDB 等关键组件提供了内置的复制功能。长期持久性数据将移动到对象存储后端,例如Amazon S3和Minio。
如果您的应用程序确实需要高度可用的持久性本地磁盘,请查看DRBD项目。我还希望有人将 NBD 和OpenZFS与一个巧妙的类似 Docker 的管理工具集成在一起。
甚至磁盘制造商也在开展新的计划,例如Open Kinetic和以太网磁盘,以解决微存储空间问题。
结论
总而言之,包含应用程序二进制文件的应用程序容器保持无状态。应用程序状态数据由两种类型组成 - 半持久性操作数据和持久性长期数据。操作数据使用内存和本地磁盘。长期数据存储在对象存储中。每个应用程序实例都是一个独立的计算和存储生态系统。微存储使存储成为应用程序堆栈的一部分。基础设施简化为在配备本地磁盘的商品服务器上运行的容器。