前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【存储服务】基于MinIO和Thumbor搭建图像服务

【存储服务】基于MinIO和Thumbor搭建图像服务

作者头像
小帅丶
发布2021-12-28 13:17:54
2.6K0
发布2021-12-28 13:17:54
举报
文章被收录于专栏:XAIXAI

近期总感觉项目的文件保存有些混乱,一直有关注MinIO,但是从无进行实践, 而且有些图片需要一些裁剪,就还得JavaRD去写图像处理,就挺麻烦, 无意间看到了Thumbor,发现还挺符合需求,故此有了此篇小总结。 最好是使用过云存储的产品哦。这样对MinIO上手就不会有疑问。

MinIO简介

Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。 Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。 Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。 由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

Thumbor简介

什么是Thumbor Thumbor 是一个智能图片服务,它可以对图片进行裁剪、缩放、翻转。

前期环境准备

条目

版本详细内容

备注

虚拟机系统

CentOS Linux release 7.9.2009 (Core)

-

Python

Python 2.7.5

Thumbor仅支持Python 2.X Issue说支持到Python 3.6.X 使用系统的默认Python版本

MinIO安装启动

下载MinIO

代码语言:javascript
复制
[root@localhost ~]# wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

启动MinIO

代码语言:javascript
复制
    [root@localhost ~]# chmod +x minio
    [root@localhost ~]# MINIO_ROOT_USER=xiaoshuaiMINIO_ROOT_PASSWORD=xiaoshuai ./minio server /home/minio
    Attempting encryption of all config, IAM users and policies on MinIO backend
    Endpoint: http://192.168.8.88:9000  http://192.168.122.1:9000  http://127.0.0.1:9000     
    RootUser: xiaoshuai
    RootPass: xiaoshuai
    Browser Access:
       http://192.168.8.88:9000  http://192.168.122.1:9000  http://127.0.0.1:9000    
    Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
       $ mc alias set myminio http://192.168.8.88:9000 xiaoshuai xiaoshuai
    Object API (Amazon S3 compatible):
       Go:         https://docs.min.io/docs/golang-client-quickstart-guide
       Java:       https://docs.min.io/docs/java-client-quickstart-guide
       Python:     https://docs.min.io/docs/python-client-quickstart-guide
       JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
       .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
    IAM initialization complete

浏览器访问MinIO

输入启动给定的用户名密码登录即可

注:以上为当前运行启动。后台启动如下命令:

nohup ./minio server /home/minio > /home/minio/minio.log 2>&1 &

MinIO优势

高性能

MinIO 是全球领先的对象存储先锋,目前在全世界有数百万的用户. 在标准硬件上,读/写速度上高达183 GB / 秒171 GB / 秒。 对象存储可以充当主存储层,以处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。 MinIO用作云原生应用程序的主要存储,与传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。 而这些都是MinIO能够达成的性能指标。

可拓展性

MinIO利用了Web缩放器的来之不易的知识,为对象存储带来了简单的缩放模型。这是我们坚定的理念 “简单可扩展.” 在 MinIO, 扩展从单个群集开始,该群集可以与其他MinIO群集联合以创建全局名称空间, 并在需要时可以跨越多个不同的数据中心。通过添加更多集群可以扩展名称空间, 更多机架,直到实现目标。

云的原生支持

MinIO 是在过去4年的时间内从0开始打造的一款软件 ,符合一切原生云计算的架构和构建过程, 并且包含最新的云计算的全新的技术和概念。其中包括支持Kubernetes 、微服和多租户的的容器技术。 使对象存储对于 Kubernetes更加友好。

源码开放,企业支持

MinIO 基于Apache V2 license 100% 开放源代码 。这就意味着 MinIO的客户能够自动的、 无限制、自由免费使用和集成MinIO、自由的创新和创造、 自由的去修改、自由的再次发行新的版本和软件. 确实, MinIO 强有力的支持和驱动了很多世界500强的企业。此外,其部署的多样性和专业性提供了其他软件无法比拟的优势。

与AmazonS3兼容

亚马逊云的 S3 API(接口协议) 是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准。 MinIO 在很早的时候就采用了 S3 兼容协议,并且MinIO 是第一个支持 S3 Select 的产品. MinIO对其兼容性的全面性感到自豪, 并且得到了 750多个组织的认同, 包括Microsoft Azure使用MinIO的S3网关 - 这一指标超过其他同类产品的总和。

简单

极简主义是MinIO的指导性设计原则。简单性减少了出错的机会,提高了正常运行时间,提供了可靠性, 同时简单性又是性能的基础。只需下载一个二进制文件然后执行,即可在几分钟内安装和配置MinIO。 配置选项和变体的数量保持在最低限度,这样让失败的配置概率降低到接近于0的水平。 MinIO升级是通过一个简单命令完成的,这个命令可以无中断的完成MinIO的升级, 并且不需要停机即可完成升级操作 - 降低总使用和运维成本。

更多内容可以访问官网了解: http://www.minio.org.cn/

Thumbor安装启动

Thumbor下载

代码语言:javascript
复制
pip install thumbor

Thumbor生成配置文件

代码语言:javascript
复制
[root@localhost ~]# thumbor-config > ./thumbor.conf

Thumbor启动

代码语言:javascript
复制
[root@localhost ~]# thumbor --port=7788 --conf=thumbor.conf

使用MinIO上传的图片进行Thumbor裁剪测试

在MinIO上传一张图片,得到访问链接:

http://192.168.8.88:9000/oss/51.png?Content-Disposition=attachment%3B%20filename%3D%2251.png%22&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=netand%2F20210508%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210508T121904Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=9ecf50449591127ec6941a7d0030437e07b2ff0528d116592acc2cabfb27f0f0

原图

使用Thumbor对上面的图片进行缩放到100*100,得到如下访问链接:

http://192.168.8.88:7788/unsafe/100x100/拼接上面的地址

其它缩放、裁剪、滤镜处理操作请查询Thumbor官方文档即可

缩放后图

但是这样好麻烦呀,链接又长,那我们就整合一下MinIo和Thumbor

Thumbor AWS

Thumbor处理图片很强大,但是只提供了很弱的图片存储功能。其图片上传修改接口没有做验证,所以默认情况下没有开启。 但是Thumbor有一些社区支持,第三方开发者做了一些扩展。其中Thumbor AWS 这个扩展可以把Thumbor后端跟Amazon S3整合起来。 在url上提交图片文件的key,Thumbor的后端会从Amazon S3中取出文件做处理。而之前MinIO兼容Amazon S3的Api。所以意味着只需要做一点改动, 就可以整合这两个服务。最终就可以达成,利用MinIO上传存储图片,利用Thumbor取出图片做处理。

安装拓展

代码语言:javascript
复制
pip install tc_aws

Thumbor AWS这个扩展利用Boto3连接Amazon S3的SDK,根据Boto3文档中的配置,我们需要创建 ~/.aws/credentials 这个文件,

并且填写刚才MinIO提供的AccessKey和SecretKey,授权这个服务访问MinIO

credentials文件内容如下

代码语言:javascript
复制
[default]

aws_access_key_id = xiaoshuai

aws_secret_access_key = xiaoshuai

thumbor.conf增加配置

代码语言:javascript
复制
############################# TC_AWS ##############################
## 填写minio提供的Region(时区) 默认即为us-east-1
TC_AWS_REGION='us-east-1' 

## 将默认的Amazon S3地址换成minio运行地址
TC_AWS_ENDPOINT='http://192.168.8.88:9000' 

## 将Thumbor的loader换成tc_aws.loaders.s3_loader
LOADER = 'tc_aws.loaders.s3_loader' 

################################################################################

重新启动Thumbor,就可以在浏览器中通过Thumbor直接访问MinIO中的图片了

刚才那张图片。访问地址就可以变为 :

http://192.168.8.88:7788/unsafe/100x100/oss/51.png

只需要MinIObucket(存储桶)名称和图片名称即可

至此整合MinIO和Thumbor完成

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Thumbor AWS
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档