本发明属于计算机技术领域,涉及一种基于微服务的高并发云平台文件传输优化方法。
背景技术:
相较于传统的互联网基础设施,云平台具备更多优势,包括减少成本、即时更新、高可靠性、高可扩展性等。目前,大多数云平台都采用的单体架构开发,该架构是三级架构,即前端界面、业务逻辑层以及后端数据库层,一个项目工程中包含了单体架构所有业务功能。单体有开发部署简单和成本低的特点,但随着用户量的增长以及业务量不断扩大,在高并发场景下,以往的单体架构难以满足如今不断变化的业务需求,因此,微服务架构是解决这些问题的好方法。
微服务架构将单体架构按功能划分为一系列微服务,每个微服务都能轻松部署并发布到生产环境并且不影响整个系统的可用性。因此,微服务架构可以轻松替换和扩展。不同的微服务,可以使用不同的编程语言和开发工具。在云平台中,文档、图片、视频等非结构化数据的比例较高,云平台文件存储的基本要求包括低成本、大容量、高可靠性和高可用性。用户应当可以通过网络访问云平台文件,但是高并发场景下,远程访问会涉及不可预测的延迟,因此保证云平台在高并发下的访问性能至关重要,尤其是上传和下载速度决定用户的使用体验。
技术实现要素:
有鉴于此,本发明的目的在于提供一种基于微服务的高并发云平台文件传输优化方法。实现了根据系统内存情况实现在服务器内存存有余量时通过空闲内存来加速上传处理速度,同时不影响系统的正常运行,从而保证系统运行的可用性与可靠性,加速文件上传的速率。
为达到上述目的,本发明提供如下技术方案:
一种基于微服务的高并发云平台文件传输优化方法,该方法包括以下步骤:
s1:搭建基于微服务架构的云平台文件传输系统,在微服务架构中使用微服务网关和服务注册中心;
s2:通过客户端提交上传文件请求至微服务网关,服务注册中心使用基于服务器负载率的动态路由自适应算法分发负载,微服务网关向服务注册中心进行服务拉取后进行服务调用;
s3:在基于微服务架构的云平台文件传输系统中,将上传微服务分为使用磁盘存储上传临时文件的普通上传微服务和使用tmpfs存储上传临时文件的优化上传微服务;
s4:在运行过程中,对系统的内存使用情况进行实时监控,在新的上传请求到达网关时根据内存余量情况决定上传请求转发的具体微服务。
可选的,所述步骤s2中,动态路由自适应算法具体包括以下步骤:
s21:获取cpu利用率、内存利用率、磁盘使用率和当前服务器连接数作为评估服务器负载的参数;
s22:间隔两秒后再次获取上述参数的值;
s23:在两秒钟内计算每个参数的权重,作为计算服务器负载时每个参数的权重;
s24:根据参数的重要性,对不同服务器负载参数赋予不同权重值,生成每台服务器的负载值;
s25:通过负载值计算出每台服务器的得分,通过得分对服务器进行排序,选择最优的服务器进行文件传输。
可选的,在所述步骤s3中,使用tmpfs存储上传临时文件的优化上传微服务,具体包括以下步骤:
s31:使用基于内存的临时文件系统tmpfs用于存放上传的临时文件,设置tmpfs阈值,并记录使用情况;
s32:使用基于数据块使用模式的文件动态分片算法,在上传发起的请求端先将文件切分成多个文件分片,然后对每一块文件分片调用分片上传接口,上传完成后再将文件分片融合恢复成一个完整的文件;
s33:在运行过程中,对系统的tmpfs内存使用情况进行实时监控,在新的上传请求到达网关时根据内存余量情况决定上传请求转发的具体服务。
可选的,在所述步骤s32中,基于数据块使用模式的文件动态分片算法具体包括以下步骤:
s321:将文件数据块的使用情况分为左数据块使用量和右数据块使用量,使用情况由整数值表示,该整数值指示该部分中的客户端实际使用了多少个字节,同时指定阈值,以限制数据块大小;
s322:通过将当前数据块使用量与先前数据块使用量相加,更新相应的使用量信息,使用量受数据块阈值的限制;
s323:使用拆分和合并公式计算出数值,和拆分和合并阈值比较,确定文件块是合并更好还是拆分更好,阈值为实数,范围为0到1。
可选的,所述动态路由自适应算法计算各节点的权值并按升序排序,然后计算每个服务节点的权值区间r;
之后客户端对于每一个请求,都会产生一个随机数r,根据r落在权值区间r中的位置选择服务节点;
为避免新增服务节点后,所有客户端同时访问新节点,每个客户端更新本地缓存的服务节点负载信息时,会随机产生下次访问的间隔时间δt。
本发明的有益效果在于:
本方法在微服务环境中,使用tmpfs存储文件分片,通过对服务器的运行负载进行监控和上传服务的内存进行设置,设计并实现了双重保证的动态路由自适应上传处理策略,与普通文件传输方案相比能有效降低响应时间,提升吞吐率。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为基于微服务的高并发云平台文件传输优化方法的整体流程图;
图2为动态路由自适应策略的流程图;
图3为使用tmpfs的分片上传微服务处理流程图;
图4为文件动态分片方法示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
如图1所示为本发明基于微服务的高并发云平台文件传输优化方法的整体流程图,包括:
步骤s101:搭建基于springcloud微服务架构的云平台文件传输系统,在微服务架构中使用微服务网关zuul和服务注册中心eurake;
步骤s102:通过客户端提交上传文件请求至微服务网关,服务注册中心使用综合负载率和响应时间的动态路由自适应策略分发负载,微服务网关向服务注册中心进行服务拉取后进行服务调用;
步骤s103:在基于微服务架构的云平台文件传输系统中,将上传微服务分为使用磁盘存储上传临时文件的普通上传微服务和使用tmpfs存储上传临时文件的优化上传微服务,当系统内存余量充足时,选择将请求转发到使用tmpfs存储临时文件的优化上传微服务;当系统的内存余量不足时,选择将请求转发到使用磁盘存储临时文件的普通上传微服务;
步骤s104:在运行过程中,对系统的tmpfs内存使用情况进行实时监控,在新的上传请求通过客户端提交上传文件请求至微服务网关决定上传请求转发的具体微服务。
其中,步骤s102所述的动态路由自适应策略如图2所示,具体包括:
步骤s201:获取cpu利用率l(c1),内存利用率l(m1),磁盘使用率l(d1)和当前服务器连接数l(s1)作为评估服务器负载的参数,cpu利用率可以反映服务器的繁忙状态,监视过程会定期检测cpu利用率并确定其负载;内存利用率的大小随系统运行而变化,监视过程会定期检测物理内存利用率并确定其负载;磁盘使用率也会影响服务器性能,监视过程会定期检查磁盘在一定时间间隔内的读写次数,并确定磁盘的繁忙程度;服务器的当前连接代表服务器的负载压力级别;
步骤s202:间隔两秒后再次获取上述参数的值,计算两次获取参数的差值的绝对值δl(x)=|l(x1)-l(x2)|,(x=c,m,d,s);
步骤s203:权重阈值设为α(0<<1),在两秒钟内计算每个参数的权重,作为计算服务器负载时每个参数的权重
步骤s204:根据参数的重要性,对不同服务器负载参数赋予不同权重值,生成每台服务器的负载值load=wc*l(c2)+wd*l(d2)+wm*l(m2)+ws*l(s2);
步骤s205:通过负载值的反比计算每台服务器的得分,通过得分对服务器进行排序,然后计算每个服务节点的得分区间r。之后客户端对于每一个请求,都会产生一个随机数r,根据r落在的区间位置选择服务节点;
步骤s206:为了避免新增服务节点后,所有客户端同时访问新节点,每个客户端更新本地缓存的服务节点负载信息时,会随机产生下次访问的间隔时间δt。
其中,步骤s103所述的使用tmpfs存储上传临时文件的优化上传微服务如图3所示,具体包括:
步骤s301:使用基于内存的临时文件系统tmpfs用于存放上传的临时文件,设置tmpfs阈值,并对临时文件可使用的内存总大小进行监控;
步骤s302:使用基于数据块使用模式的文件动态分片方法在上传发起的请求端先将文件进行切分成多个文件分片;
步骤s303:服务器端接收到来自网络i/o中的上传文件后,先判断是分片上传请求还是普通文件上传,普通文件上传直接创建数据库记录后将文件写入指定存放位置;
步骤s304:如果是分片上传,则会判断文件分片是否是第一片分片,对第一片文件分片创建新的数据库记录,不是第一片文件分片,就更新数据库中已完成上传分片数,然后将文件分片写入存放文件分片的位置;
步骤s305:判断是否是最后一片文件分片,若是则融合分片成完整文件到指定位置后删除所有文件分片。最后返回上传结果信息给客户端;
步骤s306:在运行过程中,对系统的tmpfs内存使用情况进行实时监控,在新的上传请求到达网关时根据内存余量情况决定上传请求转发的具体服务。
其中,步骤s302所述的基于数据块使用模式的文件动态分片方法如图4所示,具体包括:
步骤s401:将文件数据块的使用情况分为左数据块使用情况和右数据块使用情况,使用情况由整数值表示,该整数值指示该部分中的客户端实际使用了多少个字节;
步骤s402:指定阈值,以限制最小块大小bsmin为0.5mb和最大块大小bsmax为5mb;
步骤s403:通过将当前字节使用量与先前字节使用量相加更新相应的使用量信息,使用量受最大块大小bsmax一半的限制;
步骤s404:使用拆分公式
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。