MinIO是一个非常轻量的对象存储服务,它只有一个二进制文件即可运行,快速的构建分布式的对象存储集群,适合存储大容量的非结构化数据,比如图片、日志文件等这些。
MinIO除了可以作为对象存储服务外,还可以作为网关,也就说MinIO的后端可以NAS系统、HDFS分布式文件系统或者S3、Google对象存储这样的第三方云存储系统。有了MinIO网关,就可以为Google对象存储这些后端系统添加S3兼容的API,便于管理和移植,因为S3 API已经是对象存储界事实上的标准。
当然MinIO网关不止具备S3兼容API功能,还有其他功能,比如缓存,这篇文章主要介绍MinIO网关的架构设计。
什么是网关
在讲MinIO网关之前,先看下什么是网关,这里我摘录维基百科上的定义:
网关(英语:Gateway)是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。
是的,对于客户端来说,你完全感知不到你在访问一个网关。从设计模式来讲,网关就像一个外观模式,它封装了下层的各种服务,统一聚合包装后为客户端提供服务;从API上来讲,它是更高级别的API,是面向客户端的API,一般是HTTP协议,而被网关封装的下层服务可能是不同编程语言开发的各种服务,这些服务的协议也可能各不相同。
<