基于AWS微服务的图片上传方法技术

技术编号:17917968 阅读:33 留言:0更新日期:2018-05-10 21:40
本发明专利技术属于计算机网络技术领域,其公开了一种基于AWS微服务的图片上传方法,解决传统技术中利用FastDFS进行单据图片的上传存储业务所存在的性能风险、高可用性和弹性扩容能力的瓶颈问题。该方法包括以下步骤:a.将上传服务拆分成上传、下载二个微服务;b.利用AWS服务API,调用相关方法获取环境中提供的访问密钥信息;c.处理上传请求,将图片元信息写入DynamoDB数据库相应的表中;d.根据写入DynamoDB数据库时生成的UUID,将图片对象重命名并上传至S3服务器相应位置。

【技术实现步骤摘要】
基于AWS微服务的图片上传方法
本专利技术属于计算机网络
,具体涉及一种基于AWS微服务的图片上传方法。
技术介绍
通用的云平台服务系统的扫描插件应用,采用了B/S的Web分层架构:1).客户浏览器上安装DynamSoft插件,关联扫描仪,将纸质单据扫描上传到Web服务器。2).电子单据通过客户浏览器直接上传到Web服务器。3).NginxWeb服务器,后端处理采用Java,内置于TomcatServlet。此外,DynamSoft插件的安装包放置在NginxWeb服务器上。4).单据存储采用FastDFS分布式存储系统,内含跟踪服务器(trackerserver)和存储服务器(storageserver):跟踪服务器,主要做调度工作,起到均衡的作用;存储服务器,主要提供容量和备份服务。5).单据元信息存储,内含单据ID、名称、单据存储地址等,采用MySQL数据库,置于一张管理表中,其部署采用主从复制模式。6).云平台服务系统的其他应用可通过单据ID或存储地址,来读取单据完整信息。可见,在传统的云平台服务系统中,采用FastDFS进行单据/图片存储,其存在以下缺陷:单据下载时未先确认MySQL中元信息是否存在,而访问直接进入FastDFS存储端,存在性能风险;FastDFS的弹性扩容,存在管理和维护的风险;此外,根据长虹实践经验,月末附近单据上传量会特别大,由于每次上传都要通过Web服务器,其高可用性和弹性扩容能力,将成为瓶颈;其它应用可直接访问MySQL数据库和FastDFS存储获得单据的完整信息,没有对外查询的API,把数据库和FastDFS存储直接暴露在外,成为其他应用的直接依赖,这会产生数据和接口的不一致以及访问性能瓶颈的问题。
技术实现思路
本专利技术所要解决的技术问题是:提出一种基于AWS微服务的图片上传方法,解决传统技术中利用FastDFS进行单据图片的上传存储业务所存在的性能风险、高可用性和弹性扩容能力的瓶颈问题。本专利技术解决上述技术问题采用的技术方案是:基于AWS微服务的图片上传方法,包括以下步骤:a.将上传服务拆分成上传、下载二个微服务;b.利用AWS服务API,调用相关方法获取环境中提供的访问密钥信息;c.处理上传请求,将图片元信息写入DynamoDB数据库相应的表中;d.根据写入DynamoDB数据库时生成的UUID,将图片对象重命名并上传至S3服务器相应位置。作为进一步优化,步骤a具体包括:根据SpringMVC框架进行拆分,将原上传项目保留至Model层,将各自的上传下载方法分别放到各自的Controller层;利用DynamoDB的高级编程接口DynamoDBMapper对Model层的类对象进行改造:添加相应的注解,将类的属性和表的属性进行映射。作为进一步优化,步骤b具体包括:通过在配置文件里配置访问ID和访问私钥,通过spring框架里的PropertyPlaceholderConfigurer类来解析JavaProperties配置属性的并读取。作为进一步优化,步骤c中,图片元信息存储过程中使用Spring的构造函数注入AWSDynamoDBClient实例,然后利用数据库持久化技术实现存储。作为进一步优化,步骤d中,在图片对象上传过程中通过multipart上传分片技术,实现处理多个图片的请求;在处理每个图片的上传过程中,通过pre-signURL技术生成预签名URL,再上传图片至指定URL;根据返回的对象信息,获取图片的UUID,将图像重命名为UUID名并存储在S3服务器上,创建操作S3的实例,使用TransferManager实例tm,调用upload()方法将图片对象传到S3服务器用户指定的目录下。作为进一步优化,该方法还包括步骤:e.每当下载图片时,首先利用图片的UUID生成的唯一id查询其是否存在DynamoDB中,如果不存在,则不向S3服务器发送请求。本专利技术的有益效果是:1)在图片上传过程中,通过pre-signURL技术生成预签名URL,再上传图片至指定URL;通过创建GeneratePresignedUrlRequest类的实例来提供存储桶名称、对象键和过期日期,从而对访问者访问对象进行控制,解决了存储URL无保护,避免了攻击者绕过应用服务器,乱发请求滥用此URL。2)通过增加单据查询功能,利用上传时通过DynamoDBGeneratedUuid注解生成的唯一识别码,每当下载时用此UUID去查询DynamoDB有没相应的图片元信息,如果没查到,直接打回不存在的单据,避免了每次都向S3存储服务器请求所造成的额外压力。3)单据的上传下载从Web服务器剥离成二个微服务;通过单据上传下载分离,可根据需要对相应服务扩容。具体实施方式本专利技术旨在提出一种基于AWS微服务的图片上传方法,解决传统技术中利用FastDFS进行单据图片的上传存储业务所存在的性能风险、高可用性和弹性扩容能力的瓶颈问题。本专利技术利用AWS提供的云服务S3和DynamoDB的安全、可扩展、高可用的特性解决用户实时访问量大带给系统的压力,使用Java相关技术通过API接口操作S3和DynamoDB的实现了相关的业务。在具体实现上,本专利技术采用AWS微服务的设计,利用S3代替FastDFS存储图片等大文档对象,DynamoDB代替MySQL用于存储对象元信息。实施步骤如下:1、将原来的上传服务拆分成上传、下载二个微服务:根据SpringMVC框架理念进行拆分,将原上传项目保留Model层,将各自的上传下载方法分别放到各自的Controller层。利用DynamoDB的高级编程接口DynamoDBMapper对Model层的类对象进行改造,主要是添加相应的注解,将类的属性和表的属性进行映射,如@DynamoDBTable(tableName=)将类映射到对应的表。2、利用AWS服务API,调用相关方法获取环境中提供的访问秘钥信息;在配置文件里配置访问IDaws_access_key_id和访问私钥,aws_secret_access_key,通过spring框架里的PropertyPlaceholderConfigurer类来解析JavaProperties配置属性的并读取。3、处理上传请求,将图片元信息写入DynamoDB数据库相应的表中;图片元信息存储过程中使用Spring的构造函数注入AWSDynamoDBClient实例,然后利用数据库持久化技术实现存储。通过处理图片上传的请求,获得上传图片名、图片存储桶等属性,利用数据库持久化技术,也就是通过Spring的构造函数注入来生成实例;使用DynamoDBMapper对象实例进行对数据库的增删改查操作。具体在保存时,mapper=newDynamoDBMapper(client);mapper.save()实现了将对象元信息写入DynamoDB。最后需要将插入到数据库后成功的记录返回来,供后续处理。4、根据写入DynamoDB数据库生成的UUID,将图片对象重命名并上传至S3服务器相应位置。在上传过程中通过multipart这种上传分片技术,实现处理多个图片的请求;在处理每个图片的上传过程中,通过pre-signURL技术生成预签名URL,再本文档来自技高网
...

【技术保护点】
基于AWS微服务的图片上传方法,其特征在于,包括以下步骤:a.将上传服务拆分成上传、下载二个微服务;b.利用AWS服务API,调用相关方法获取环境中提供的访问密钥信息;c.处理上传请求,将图片元信息写入DynamoDB数据库相应的表中;d.根据写入DynamoDB数据库时生成的UUID,将图片对象重命名并上传至S3服务器相应位置。

【技术特征摘要】
1.基于AWS微服务的图片上传方法,其特征在于,包括以下步骤:a.将上传服务拆分成上传、下载二个微服务;b.利用AWS服务API,调用相关方法获取环境中提供的访问密钥信息;c.处理上传请求,将图片元信息写入DynamoDB数据库相应的表中;d.根据写入DynamoDB数据库时生成的UUID,将图片对象重命名并上传至S3服务器相应位置。2.如权利要求1所述的基于AWS微服务的图片上传方法,其特征在于,步骤a具体包括:根据SpringMVC框架进行拆分,将原上传项目保留至Model层,将各自的上传下载方法分别放到各自的Controller层;利用DynamoDB的高级编程接口DynamoDBMapper对Model层的类对象进行改造:添加相应的注解,将类的属性和表的属性进行映射。3.如权利要求1所述的基于AWS微服务的图片上传方法,其特征在于,步骤b具体包括:通过在配置文件里配置访问ID和访问私钥,通过spring框架里的PropertyPlaceholderConfigurer类来解析JavaProp...

【专利技术属性】
技术研发人员:倪翔岳永胜李波
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1