基于GO语言的动态切图系统技术方案

技术编号:14549792 阅读:31 留言:0更新日期:2017-02-04 22:52
本发明专利技术公开了一种基于GO语言的动态切图系统。所述系统包括图片上传模块、管理模块、负载均衡模块、切图模块、守护模块和实时监控模块。图片上传模块用于获取原始图片并上传;管理模块用于接受用户登录及输入配置信息;负载均衡模块用于将用户请求分发给切图模块进行处理及将处理结果输出给用户;切图模块用于解析用户请求、读取原图以及处理图片;守护模块用于获取切图模块的状态信息并向实时监控模块进行反馈,以便实时监控模块监控系统中各个模块的运行状态。本发明专利技术大大节省了存储资源并提高了灵活性,能够最大程度利用服务器CPU资源来获得高性能并提高处理效率,并通过全面的监控进一步提高了动态切图的可靠性。

The dynamic map system based on GO

The invention discloses a dynamic slicing system based on GO. The system comprises an image upload module, management module, load balancing module, map module, guard module and real-time monitoring module. Image upload module is used for acquiring the original picture and upload; management module for receiving user login and enter configuration information; load balancing module is used to map out the request to the user module for processing and the results will be output to the user; that module is used to parse user requests, read the original image and image processing; guard module is used for acquiring state information map module and feedback to the real-time monitoring module, so that the running state of each module of the real-time monitoring module in monitor system. The invention greatly saves the storage resources and improve the flexibility and to maximize the use of server CPU resources to achieve high performance and improve the processing efficiency, and through the comprehensive monitoring to further improve the reliability of the dynamic map.

【技术实现步骤摘要】

本专利技术涉及切图技术,尤其是涉及一种基于GO语言的动态切图系统
技术介绍
对于用户来说,图片远胜于文字描述。因此,近年来,各大网站,尤其是电子商务和OTA(在线旅游)网站,图片数量呈现井喷式地增长,以淘宝网为例,目前图片的访问流量已经占到整体流量的90%以上。在实践中,图片的使用往往呈现多种需求。例如,各业务单元和产品线往往有自己的图片尺寸,有些还要对图片进行部分切除、旋转、打水印等操作,这就导致了一张原图可能十几种缩略图和副本。目前,通行的做法,是将这些原图和缩略图全部保存到文件系统中,这一方面降低了开发和使用的便利性,另一方面也造成了存储资源的巨大浪费。因此,针对现有技术中一张图片需要存储多个缩略图和副本,造成灵活性下降和存储资源浪费的问题,就亟需一种图片处理系统,来提供具备高并发、高性能、高可靠性的特点的动态切图服务,以达到图片仅需存储一份,通过URL变化就可灵活对图片进行缩放、旋转、打水印等操作的目的。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中一张图片需要存储多个缩略图和副本,造成灵活性下降和存储资源浪费的问题等缺陷,提供一种基于GO语言的动态切图系统。本专利技术是通过下述技术方案来解决上述技术问题的:一种基于GO语言的动态切图系统,其特点在于,包括图片上传模块、管理模块、负载均衡模块、切图模块、守护模块和实时监控模块;图片上传模块用于获取原始图片并将其上传至图片存储系统;管理模块用于接受用户登录及输入配置信息;负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处理,以及从切图模块获取处理结果并将处理结果输出给用户;切图模块用于接收负载均衡模块分发的用户请求,并解析用户请求中的URL中含有的原图名称和切图指令,然后向数据库查询原图的存储地址并读取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,最后将处理好的图片返回至负载均衡模块;守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以及错误信息;实时监控模块用于监控其他各个模块的运行状态。较佳地,负载均衡模块还用于采用正则表达式对用户请求中的URL的格式进行校验,并拦截格式不合法的用户请求。较佳地,切图模块根据动态切图系统中的CPU核数创建同等数量的线程。较佳地,切图模块还用于从URL中解析出图片名称,然后通过计算比较校验码的方式来辨别是否是合法的图片名称,并拒绝处理不合法的图片。较佳地,切图模块为每个切图线程创建有一个专用图片处理的协程,并监听一个channel(即通道),若其他协程获得图片,则将图片内存首地址和处理命令打包好放入该个channel中,所有切图协程根据预设顺序从该个管道channel中取出数据并进行处理。较佳地,守护模块还用于创建守护进程,切图模块还用于在进行切图的过程期间定时向守护进程发送心跳信息,守护模块还用于在守护进程在预设的第一时长的时间段内未收到切图进程的心跳数据包时,将相应的切图进程终止,并重新创建一个切图进程。较佳地,负载均衡模块、切图模块、守护模块之间采用http协议进行通信。在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。本专利技术的积极进步效果在于:本专利技术提供了一种基于GO语言的动态切图系统,将图片处理库集成在web服务中,使得图片仅需存储一份,用户通过URL的变化就能获得不同的切图效果,大大节省了存储资源和提高了灵活性,在高并发的应用情形下,能够最大程度利用服务器CPU资源来获得高性能并提高处理效率,并通过全面的监控进一步提高了动态切图的可靠性。附图说明图1为本专利技术一较佳实施例的基于GO语言的动态切图系统的示意图。图2为本专利技术一较佳实施例的动态切图系统中切图模块创建的切图进程的流程示意图。具体实施方式下面通过实施例的方式进一步说明本专利技术,但并不因此将本专利技术限制在所述的实施例范围之中。参考图1所示,本专利技术一较佳实施例的基于GO语言的动态切图系统包括图片上传模块1、管理模块2、负载均衡模块3、切图模块4、守护模块5和实时监控模块6。其中,图片上传模块用于获取原始图片并将其上传至图片存储系统,管理模块用于接受用户登录及输入配置信息。实时监控模块用于监控其他各个模块的运行状态。负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处理,以及从切图模块获取处理结果并将处理结果输出给用户,还用于采用正则表达式对用户请求中的URL的格式进行校验,并拦截格式不合法的用户请求。切图模块根据动态切图系统中的CPU核数创建同等数量的线程,用于接收负载均衡模块分发的用户请求,并解析用户请求中的URL中含有的原图名称和切图指令,通过计算比较校验码的方式来辨别是否是合法的图片名称,并拒绝处理不合法的图片,针对合法的图片,向数据库查询原图的存储地址并读取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,最后将处理好的图片返回至负载均衡模块。具体地,切图模块为每个切图线程创建有一个专用图片处理的协程,并监听一个通道,若其他协程获得图片,则将图片内存首地址和处理命令打包好放入该个通道中,所有切图协程根据预设顺序从该个通道中取出数据并进行处理。守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以及错误信息。守护模块还用于创建守护进程,切图模块还用于在进行切图的过程期间定时向守护进程发送心跳信息,守护模块还用于在守护进程在预设的第一时长的时间段内未收到切图进程的心跳数据包时,将相应的切图进程终止,并重新创建一个切图进程。本实施例的系统中,负载均衡模块、切图模块、守护模块之间采用http协议进行通信。以下举例简述本实施例的系统中切图模块创建的切图进行如何进行具体的处理。参考图2所示,切图进程大致依据以下步骤进行处理:步骤101、创建新的GO协程,记为协程2,来处理该请求,请求的URL格式:域名/频道名/图片名_切图指令1_切图参数1_切图指令2_切图参数2……_切图命令N_切图参数N.图片格式;步骤102、解析请求URL中的图片名称以及切图指令和参数,然后对图片名称进行解码,并按照所述上传模块1中同样的方式生成一本文档来自技高网...

【技术保护点】
一种基于GO语言的动态切图系统,其特征在于,包括图片上传模块、管理模块、负载均衡模块、切图模块、守护模块和实时监控模块;图片上传模块用于获取原始图片并将其上传至图片存储系统;管理模块用于接受用户登录及输入配置信息;负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处理,以及从切图模块获取处理结果并将处理结果输出给用户;切图模块用于接收负载均衡模块分发的用户请求,并解析用户请求中的URL中含有的原图名称和切图指令,然后向数据库查询原图的存储地址并读取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,最后将处理好的图片返回至负载均衡模块;守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以及错误信息;实时监控模块用于监控其他各个模块的运行状态。

【技术特征摘要】
1.一种基于GO语言的动态切图系统,其特征在于,包括图片上传模
块、管理模块、负载均衡模块、切图模块、守护模块和实时监控模块;
图片上传模块用于获取原始图片并将其上传至图片存储系统;
管理模块用于接受用户登录及输入配置信息;
负载均衡模块用于获取用户请求并将用户请求分发给切图模块进行处
理,以及从切图模块获取处理结果并将处理结果输出给用户;
切图模块用于接收负载均衡模块分发的用户请求,并解析用户请求中的
URL中含有的原图名称和切图指令,然后向数据库查询原图的存储地址并读
取原图,根据解析得到切图指令,利用集成的图片处理库对图片进行处理,
最后将处理好的图片返回至负载均衡模块;
守护模块用于接收切图模块发送的状态信息,并向实时监控模块反馈其
他各个模块的运行状态,运行状态包括当前执行的任务、任务的完成进度以
及错误信息;
实时监控模块用于监控其他各个模块的运行状态。
2.如权利要求1所述的动态切图系统,其特征在于,负载均衡模块还
用于采用正则表达式对用户请求中的URL的格式进行校验,并拦截格式不
合法的用户请求。
3.如权利要求1所...

【专利技术属性】
技术研发人员:胡健管春涛吴骋成杨振宏
申请(专利权)人:上海携程商务有限公司
类型:发明
国别省市:上海;31

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

1