一种基于容器服务的定制化清理方法及系统与流程

文档序号:22626793发布日期:2020-10-23 19:35阅读:105来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种基于容器服务的定制化清理方法及系统。
背景技术
::随着docker技术的广泛应用,大量的服务被采用容器技术部署。随时服务运行时间的跨度,docker容器内的文件数量和大小都会逐渐变得不可控。占用大量磁盘空间的同时,也拖慢了容器服务的性能。关于容器内的目录或者文件,常常需要在容器内进行清理,由于容器大部分用于分布式服务,所以远程清理容器内文件的需求,是经常用到的。但是目前docker本身是没有提供十分直接有效的方法去定制化清理,无法满足从业人员的需求。技术实现要素:为至少解决现有技术中存在的技术问题之一,本发明的目的在于提供一种基于容器服务的定制化清理方法及系统,通过针对多种多样的清理需求,将调度、策略、和清理,分成三大部分,耦合度降到最低,针对不同的容器基于多种清理策略进行远程清理。本发明解决其问题所采用的技术方案第一方面是:一种基于容器服务的定制化清理方法,其特征在于,包括以下步骤:s10、设置清理策略;s20、根据所述清理策略以及待清理容器,生成对应的清理规则;s30、根据所述清理规则生成对应的清理命令;s40、所述待清理容器接收到所述清理命令,执行清理操作。有益效果:对远程容器内的目录或者文件,进行定制化的清理,支持多种灵活的清理策略,满足各类业务的清理需求,对于解决远程容器内冗余文件的清理,提供有效的支撑。根据本发明第一方面所述的,清理命令包括远程机器链接、远程容器名称以及清理策略。根据本发明第一方面所述的,s10还包括:s11、遍历容器,确定所述待清理容器;s12、根据所述待清理容器逐一设置对应的清理策略。根据本发明第一方面所述的,清理操作包括定时清理和临时清理。根据本发明第一方面所述的,清理操作还包括匹配清理和全部清理。根据本发明第一方面所述的,s20还包括:s21、根据命令方式生成参数,并存放在对应的消息队列中。根据本发明第一方面所述的,命令方式包括shell命令方式、crontab命令方式以及自定义命令方式。本发明解决其问题所采用的技术方案第二方面是:一种基于容器服务的定制化清理系统,其特征在于,包括:设置模块,用于设置清理策略;规则模块,用于根据所述清理策略以及待清理容器,生成对应的清理规则;命令模块,用于根据所述清理规则生成对应的清理命令;清理模块,用于所述待清理容器接收到所述清理命令,执行清理操作。有益效果:针对多种多样的清理需求,将调度、策略、和清理,分成三大部分,耦合度降到最低,同时又保留了最大的灵活度,操作简便,扩展容易,对于解决远程容器内冗余文件的清理,提供有效的支撑。根据本发明第二方面所述的,设置模块还包括:遍历单元,用于遍历容器,确定所述待清理容器;策略生成单元,用于根据所述待清理容器逐一设置对应的清理策略。根据本发明第二方面所述的,命令模块还包括:异步发送单元,用于根据命令方式生成的参数,根据对应的消息队列实现异步和并发。附图说明图1是根据本发明实施例的方法流程示意图;图2是根据本发明实施例的系统结构示意图;图3是根据本发明实施例的实施架构示意图;图4是根据本发明实施例的参数传输示意图;图5是根据本发明实施例的进程处理示意图;图6是根据本发明实施例的清理流程示意图;图7是根据本发明实施例的任务调度示意图。具体实施方式以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。术语解释:python:代码语言,用来书写逻辑dockerpy:容器操作sdk,用来操作各个docker容器psutil:系统性能数据收集工具prettytable:美观的控制台输出结果报表gevent:利用其协程方式,实现异步和并发redis:消息管道mysql:存储清理策略。参照图1,是根据本发明实施例的方法流程示意图,包括以下步骤:s10、设置清理策略;s20、根据所述清理策略以及待清理容器,生成对应的清理规则;s30、根据所述清理规则生成对应的清理命令;s40、所述待清理容器接收到所述清理命令,执行清理操作。清理命令包括远程机器链接、远程容器名称以及清理策略。s10还包括:s11、遍历容器,确定所述待清理容器;s12、根据所述待清理容器逐一设置对应的清理策略。清理操作包括定时清理和临时清理。清理操作还包括匹配清理和全部清理。s20还包括:s21、根据命令方式生成参数,并存放在对应的消息队列中。命令方式包括shell命令方式、crontab命令方式以及自定义命令方式。参照图2,是根据本发明实施例的系统结构示意图,包括:设置模块,用于设置清理策略;规则模块,用于根据所述清理策略以及待清理容器,生成对应的清理规则;命令模块,用于根据所述清理规则生成对应的清理命令;清理模块,用于所述待清理容器接收到所述清理命令,执行清理操作。设置模块还包括:遍历单元,用于遍历容器,确定所述待清理容器;策略生成单元,用于根据所述待清理容器逐一设置对应的清理策略。命令模块还包括:异步发送单元,用于根据命令方式生成的参数,根据对应的消息队列实现异步和并发。参照图3,是根据本发明实施例的实施架构示意图;将清理的策略放在了容器外,即将清理的命令发送至容器内,让容器只做清理这一步的操作。这样清理机制就和文件删除分成两步。互不影响,各司其职。策略变更时,也不会影响容器,极具易用性。参照图4,是根据本发明实施例的参数传输示意图;在分布式服务中,由于运维的需求,会大量的写日志。该日志文件记录了容器服务中的指定错误或者关键业务日志。那么日志目录的清理是必要的,节省磁盘空间。指定目录下存放各类临时文件,这类在业务中产生的临时文件或者过度文件,也可以成为过期文件,都是需要清理的。上边的两类需求,基本上都是给定目录或者文件,按时间或者按类型进行定期清理。使用:1、整体流程:base_url:tcp://10.11.81.136:2375container:debug_web_1strategy:find/home/data/1bbd74d7-9f1c-4bc4-9a02-01f02b49fe63-typef-mtime+10-execrm{}\;图4展示该工具需要的多个参数,远程机器连接url、远程容器名称、清理策略。支持批量传参,即传入上边参数的列表形式即可。参照图5,是根据本发明实施例的进程处理示意图;工具发送过来的参数会分类存在不同的消息队列中,分类的好处是可以针对性的处理不同的清理策略与服务,在负载均衡和日志记录上都可以很好地规划与安排。消息队列中的数据会被不同进程进行处理,汇总数据后,落地db。这样不同策略清理的消息就分到不同的数据表中,后续只要针对不同的表进行不同的处理逻辑就可以了,做到了低耦合,高并发的特性。参照图6,是根据本发明实施例的清理流程示意图;后台清理服务,即轮询服务,会不断轮询三张表,针对性的处理不同的清理规则,按照规则,去远程请求容器服务,清理容器内的目录或者文件。2、清理策略:shell命令形式:完全支持各类shell命令的组合,如find命令查找过滤+rm命令删除清理,如直接删除命令,拷贝复制等命令,都是支持的。如上边的清理策略,是直接传入清理指定目录的shell命令,即find命令查找,rm命令清理,策略为清理该目录修改时间为10天前的所有文件。这种完全支持shell命令的方式,极大丰富了清理的策略种类。crontab形式:完全支持crontab形式的传参,即crontab支持的定时格式,这边也是全部支持的。如分钟、小时、天等,按时间维度去清理目录或者文件。自定义形式:这种需要指定容器内特定的清理脚本,即自定义的清理脚本需要业务方自己定义,然后提供脚本的运行方式即可。这种方式极大扩展了该功能的适用范围,丰富了使用场景示例:1、清理指定时间前的文件02***find/home/data/1bbd74d7-9f1c-4bc4-9a02-01f02b49fe63-typef-mtime+10-execrm{}\;每天2点清理指定目录下10天前的文件2、清理指定类型的文件find.-name\*.log-typef-mtime+5|xargsrm-f清理指定目录下5天前所有.log结尾的文件3、其他所有shell中find命令或者ls命令,能过滤筛选要删除的文件,再通过rm命令进行删除。3、主要逻辑:代码逻辑:1、初始化docker的python客户端2、遍历指定的docker容器,建立连接3、客户端获取每个容器的策略4、客户端并发远程发送清理命令或定时发送清理命令5、容器内清理数据6、汇总结果、返回数据参照图7,是根据本发明实施例的任务调度示意图。客户端的调度既可以作为单一工具使用,也可以采用crontab的形式,定时调度清理。目前市面上定时调度的机制很多,crontab只是其中一种。也就是客户端的选择是多种多样的,只要写好清理脚本,加入框架即可。清理策略上,shell脚本的灵活,足够筛查过滤出想要清理的文件。附图展示了这种关系,即调度和策略都是和容器分格的,在不影响容器服务的情况下,增加客户端、增加调度、增加清理策略都是十分方便的。应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1