基于go语言的动态切图系统的制作方法

文档序号:9751004阅读:771来源:国知局
基于go语言的动态切图系统的制作方法
【技术领域】
[0001]本发明涉及切图技术,尤其是涉及一种基于GO语言的动态切图系统。
【背景技术】
[0002]对于用户来说,图片远胜于文字描述。因此,近年来,各大网站,尤其是电子商务和OTA(在线旅游)网站,图片数量呈现井喷式地增长,以淘宝网为例,目前图片的访问流量已经占到整体流量的90%以上。在实践中,图片的使用往往呈现多种需求。例如,各业务单元和产品线往往有自己的图片尺寸,有些还要对图片进行部分切除、旋转、打水印等操作,这就导致了一张原图可能十几种缩略图和副本。目前,通行的做法,是将这些原图和缩略图全部保存到文件系统中,这一方面降低了开发和使用的便利性,另一方面也造成了存储资源的巨大浪费。
[0003]因此,针对现有技术中一张图片需要存储多个缩略图和副本,造成灵活性下降和存储资源浪费的问题,就亟需一种图片处理系统,来提供具备高并发、高性能、高可靠性的特点的动态切图服务,以达到图片仅需存储一份,通过URL变化就可灵活对图片进行缩放、旋转、打水印等操作的目的。

【发明内容】

[0004]本发明要解决的技术问题是为了克服现有技术中一张图片需要存储多个缩略图和副本,造成灵活性下降和存储资源浪费的问题等缺陷,提供一种基于GO语言的动态切图系统。
[0005]本发明是通过下述技术方案来解决上述技术问题的:
[0006]—种基于GO语言的动态切图系统,其特点在于,包括图片上传模块、管理模块、负载均衡模块、切图模块、守护模块和实时监控模块;
[0007]图片上传模块用于获取原始图片并将其上传至图片存储系统;
[0008]管理模块用于接受用户登录及输入配置信息;
[0009]负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处理,以及从切图模块获取处理结果并将处理结果输出给用户;
[0010]切图模块用于接收负载均衡模块分发的用户请求,并解析用户请求中的URL中含有的原图名称和切图指令,然后向数据库查询原图的存储地址并读取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,最后将处理好的图片返回至负载均衡丰旲块;
[0011]守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以及错误信息;
[0012]实时监控模块用于监控其他各个模块的运行状态。
[0013]较佳地,负载均衡模块还用于采用正则表达式对用户请求中的URL的格式进行校验,并拦截格式不合法的用户请求。
[0014]较佳地,切图模块根据动态切图系统中的CPU核数创建同等数量的线程。
[0015]较佳地,切图模块还用于从URL中解析出图片名称,然后通过计算比较校验码的方式来辨别是否是合法的图片名称,并拒绝处理不合法的图片。
[0016]较佳地,切图模块为每个切图线程创建有一个专用图片处理的协程,并监听一个channeK即通道),若其他协程获得图片,则将图片内存首地址和处理命令打包好放入该个channe I中,所有切图协程根据预设顺序从该个管道channe I中取出数据并进行处理。
[0017]较佳地,守护模块还用于创建守护进程,切图模块还用于在进行切图的过程期间定时向守护进程发送心跳信息,守护模块还用于在守护进程在预设的第一时长的时间段内未收到切图进程的心跳数据包时,将相应的切图进程终止,并重新创建一个切图进程。
[0018]较佳地,负载均衡模块、切图模块、守护模块之间采用http协议进行通信。
[0019]在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
[0020]本发明的积极进步效果在于:
[0021]本发明提供了一种基于GO语言的动态切图系统,将图片处理库集成在web服务中,使得图片仅需存储一份,用户通过URL的变化就能获得不同的切图效果,大大节省了存储资源和提高了灵活性,在高并发的应用情形下,能够最大程度利用服务器CPU资源来获得高性能并提高处理效率,并通过全面的监控进一步提高了动态切图的可靠性。
【附图说明】
[0022]图1为本发明一较佳实施例的基于GO语言的动态切图系统的示意图。
[0023]图2为本发明一较佳实施例的动态切图系统中切图模块创建的切图进程的流程示意图。
【具体实施方式】
[0024]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0025]参考图1所示,本发明一较佳实施例的基于GO语言的动态切图系统包括图片上传模块1、管理模块2、负载均衡模块3、切图模块4、守护模块5和实时监控模块6。
[0026]其中,图片上传模块用于获取原始图片并将其上传至图片存储系统,管理模块用于接受用户登录及输入配置信息。实时监控模块用于监控其他各个模块的运行状态。
[0027]负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处理,以及从切图模块获取处理结果并将处理结果输出给用户,还用于采用正则表达式对用户请求中的URL的格式进行校验,并拦截格式不合法的用户请求。
[0028]切图模块根据动态切图系统中的CPU核数创建同等数量的线程,用于接收负载均衡模块分发的用户请求,并解析用户请求中的URL中含有的原图名称和切图指令,通过计算比较校验码的方式来辨别是否是合法的图片名称,并拒绝处理不合法的图片,针对合法的图片,向数据库查询原图的存储地址并读取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,最后将处理好的图片返回至负载均衡模块。
[0029]具体地,切图模块为每个切图线程创建有一个专用图片处理的协程,并监听一个通道,若其他协程获得图片,则将图片内存首地址和处理命令打包好放入该个通道中,所有切图协程根据预设顺序从该个通道中取出数据并进行处理。
[0030]守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以及错误信息。守护模块还用于创建守护进程,切图模块还用于在进行切图的过程期间定时向守护进程发送心跳信息,守护模块还用于在守护进程在预设的第一时长的时间段内未收到切图进程的心跳数据包时,将相应的切图进程终止,并重新创建
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1