一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种动态切换数据流的方法、系统、介质及终端与流程

2021-11-06 00:06:00 来源:中国专利 TAG:


1.本发明涉及计算机应用领域,尤其涉及一种动态切换数据流的方法、系统、介质及终端。


背景技术:

2.随着容器概念的普及,docker和kubernetes的应用越来越多,容器化的使用,快速编排增加容器服务来给服务纵向扩容带来了很多便利,解决了很多性能瓶颈。
3.但是,目前常用方案是同步操作大数据量时,只能增加资源或者启动更多的容器来解决,异步操作由不能最大限度的保证即时性,同步操作数据消费的服务异常时,还会造成数据的大量丢失。要想处理更多的数据,只能请求更多的物理资源。所以在某些数据量大,且不是特别要求数据即时性的一些场景,现有的方案无法同时满足资源占用和及时性的业务要求。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明提供一种动态切换数据流的方法、系统、介质及终端,以解决上述技术问题。
5.本发明提供的动态切换数据流的方法,包括:
6.监控数据服务状态,所述数据服务包括数据消费服务和数据生产服务;
7.当所述数据消费服务启动时,若数据完全被消费,则进行实时处理,否则进行异步处理;
8.当所述数据生产服务启动时,通过调用数据消费服务数据接入接口确认,使所述数据消费服务正常运行,并根据中间件中状态写入主题的偏移量的变化,改变数据生产方式。
9.于本发明的一实施例中,当数据服务异常重启时,同时重启所述数据消费服务和数据生产服务,若重启后所述数据消费服务异常,则将数据发送至中间件;
10.所述监控数据服务状态包括:获取容器的资源情况、接口的队列阈值、中间件中数据写入主题的偏移量,以及中间件中状态写入主题的偏移量;如所述中间件中数据写入主题的偏移量为最新,则判定数据完全被消费。
11.于本发明的一实施例中,如存在未消费完成的数据,则通过将主题中用于标志是否实时处理的标志参数赋值为假,并将已赋假值的标志参数按预设状态写入主题写入中间件,并进行数据的异步处理;
12.如不存在未消费完成的数据,
13.若资源占用率大于预设的阈值,则将所述标志参数赋值为假;
14.若资源占用率小于等于所述阈值,则将所述标志参数赋值为真;
15.在更新所述标志参数时,通过将标志参数已赋值的状态写入主题,写入中间件,通知数据生产服务。
16.于本发明的一实施例中,所述通过调用数据消费服务数据接入接口确认,使所述数据消费服务正常运行之后包括:
17.若所述中间件中状态写入主题的偏移量为最新,
18.则调用再平衡接口,消费最后一条数据作为数据处理依据;
19.否则,则调用数据消费服务接入查询接口确认后,再以实际消费的最新数据进行处理。
20.于本发明的一实施例中,在判断所述中间件中状态写入主题的偏移量为最新之前,包括:
21.如果调用接入接口不满足正常处理请求,则直接进行数据的异步生产,将数据写入中间件的数据写入主题中;
22.如果调用接入接口满足正常处理请求,则判断所述中间件中状态写入主题的偏移量是否为最新。
23.于本发明的一实施例中,如果中间件中状态写入主题中无数据,则进行数据的同步生产;
24.如果中间件中状态写入主题中有数据,且所述中间件中状态写入主题的偏移量为最新,则调用所述再平衡接口,重新消费状态写入主题的最后一条数据,作为数据生产的依据;
25.如果中间件中状态写入主题中有数据,且所述中间件中状态写入主题的偏移量不为最新,则消费所有的数据,并以最后一条数据的生产方式作为数据生产方式。
26.于本发明的一实施例中,当发生服务重启时,以服务启动的策略进行数据生产;
27.当数据消费服务数据接入异常时,则数据生产服务切换为异步生产,将数据写入数据库中,如中间件中状态写入主题中的对应的消费者状态数据不变,则周期性进行实时尝试,直至尝试成功。
28.本发明还提高一种动态切换数据流系统,包括:
29.监控模块,用于监控数据服务状态,所述数据服务包括数据消费服务和数据生产服务;
30.切换模块,用于当所述数据消费服务启动时,若数据完全被消费,则进行实时处理,否则进行异步处理;
31.以及用于当所述数据生产服务启动时,通过调用数据消费服务数据接入接口确认,使所述数据消费服务正常运行,并根据中间件中状态写入主题的偏移量的变化,改变数据生产方式。
32.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现上述中任一项所述方法。
33.本发明还提供一种电子终端,其特征在于,包括:处理器及存储器;
34.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上述中任一项所述方法。
35.本发明的有益效果:本发明中的动态切换数据流的方法、系统、介质及终端,针对数据生产方和数据消费,采用同步异步结合的方式,在不额外增加物理资源消耗的情况下,不仅能保证数据不丢失,保证了健壮性,还能最大限度的保留数据的即时性。
附图说明
36.图1是本发明实施例中动态切换数据流方法整体流程示意图。
37.图2是本发明实施例中动态切换数据流方法中一实施例的流程示意图。
具体实施方式
38.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
39.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
40.在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
41.如图1所示,本实施例中的动态切换数据流的方法,包括:
42.s1.监控数据服务状态,所述数据服务包括数据消费服务和数据生产服务;
43.s2.当所述数据消费服务启动时,若数据完全被消费,则进行实时处理,否则进行异步处理;
44.s3.当所述数据生产服务启动时,通过调用数据消费服务数据接入接口确认,使所述数据消费服务正常运行,并根据中间件中状态写入主题的偏移量的变化,改变数据生产方式。
45.在本实施例中,还包括:
46.s4.当数据服务异常重启时,同时重启所述数据消费服务和数据生产服务,若重启后所述数据消费服务异常,则将数据发送至中间件;
47.在本实施例的步骤s1中,数据服务包括数据消费服务和数据生产服务,监控数据服务状态包括:获取容器的资源情况、接口的队列阈值、中间件中数据写入主题的偏移量,以及中间件中状态写入主题的偏移量;如中间件中数据写入主题的偏移量为最新,则判定数据完全被消费。
48.在本实施例的步骤s2中,当数据消费服务启动时,首先获取docker容器的资源情况,例如:cpu(中央处理器)和ram(内存)的最高阈值限制,以及接口的队列阈值等信息,加载在内存中,并获取中间件kafka中数据写入主题topic的偏移量是否为最新的偏移量,以数据写入主题topic的偏移量来确保中间件中的数据是否完全被消费,完全被消费,则此时系统内存中的标志参数isrealtime为是,数据接入时实时处理;否则进行异步处理,并将异步或同步结果写入kafka的状态写入topic中。在本实施例中,标志参数isrealtime的值为true,表示实时方式,保证数据的即时性;标志参数isrealtime的值为false,表示异步方
式,保证数据的完整性。
49.在本实施例中,中间件kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper 协调的开源分布式日志系统,常见可以用于web/nginx日志、访问日志,消息服务等等,比起大多数的消息系统来说,kafka有更好的吞吐量,内置的分区,冗余及容错性。本实施例中主题topic是指中间件kafka处理的消息源的不同分类,本实施例中主要包括数据写入主题和状态写入主题。
50.通过步骤s2可以判断数据消费服务的消费能力和消费方式,具体的,
51.s201.当消费服务启动时,首先确定中间件中数据写入topic是否存在未消费完全的数据,若存在未消费完成的数据,则标志是否实时处理的参数isrealtime的值赋为false,此时将 isrealtime的值按照规定状态写入的topic写入中间件中,并进行数据的异步处理。
52.s202.当不存在未完成消费的,首先通过linux自带方法top确定中央处理器和内存的使用率,若占用高于默认预设阈值,则将isrealtime的值赋为false。若占用未高于默认预设阈值,则再判断对应接口的接口队列中的队列值是否高于默认预设阈值,若占用高于默认预设阈值,则将isrealtime的值赋为false。若占用未高于默认预设阈值,则将isrealtime的值赋为true。每一次更新isrealtime的值,都须将isrealtime的值按照规定的状态写入topic写入中间件中,通知数据生产服务。
53.在本实施例的步骤s3中,当数据生产服务启动时,数据生产服务首先调用数据消费服务数据接入接口确认,确保消费服务正常运行,再确定中间件kafka中对应状态写入topic的数据偏移量是否为最新,若是最新,则调用kafka的再平衡接口,消费最后一条数据作为数据处理依据;若中间件kafka中对应状态写入topic的数据偏移量不是最新,则数据生产服务首先调用数据消费服务接入查询接口确认,确保消费服务正常运行,再以实际消费的最新的数据来进行处理。
54.通过步骤s3设置数据生产服务的生产方式,具体的,
55.s301.数据生产服务启动时,首先调用消费服务的数据接入接口,确保消费服务正常的运行,并能正确处理并返回数据。若调用接入接口并未能正常的处理请求,则直接进行数据的异步生产,将数据写入到kakfa中数据写入topic中,并不受中间件kafka中对应状态写入topic 中的最新的数据值控制。若调用接入接口并能正常的处理请求,则判断kafka中状态写入的 topic偏移量是否为最新。
56.s302.若kafka中状态写入topic无数据,则此时进行数据的同步生产。若此时kafka中状态写入topic有数据,且偏移量为最新,则调用kafka的再平衡接口,重新消费状态写入topic 的最后一条数据进行数据生产的依据。若不是kafka的状态写入topic偏移量不是为最新,则消费所有的数据,并以最后一条数据的生产方式为准。
57.s303.数据生产服务实时监听kafka中状态写入topic对应的偏移量变化,根据偏移量的变化,进行数据生产方式的改变。
58.在本实施例的步骤s4中,当服务异常重启的时候,数据生产服务和数据消费服务均以启动的模式重新确定服务是否正常,若消费服务异常,则默认发送数据到中间件中。
59.本实施例中的步骤s4主要包括服务在异常情况下的数据处理,具体的,
60.s401.若发生服务重启,则以服务启动的策略进行数据生产,全部以数据为依据,
参考步骤一和步骤二。
61.s402.若在实时的过程中,数据消费服务数据接入异常,并接口报错,则数据生产服务不用经过任何判断,直接切换至数据异步生产流程,将数据写入数据库中,若kafka中状态写入topic的对应的消费者状态数据一直未变更,则生产每隔30s进行一次实时尝试,尝试过程中,数据写入中间件中,直到尝试成功。
62.下面以一个具体实施例进行说明:
63.实施例1
64.本实施例中包括一套业务系统,其中,cpu(中央处理器)阈值为95%,ram(随机存储闪存)阈值为80%,topic1为数据写入主题,topic2为状态写入主题,接入接口队列阈值 80%。
65.在服务初始化的过程中,数据生产服务首先判断topic2中是否有数据,如果没有数据,调用数据消费服务接口确认数据消费服务是否正常运行,若不正常运行,则直接写入topic1 中,并30s去请求一次数据消费服务的接口,在请求成功之前,数据全部写入topic1中,并且不受topic2中数据消费服务isrealtime的值所影响,若能消费服务正常的返回,则直接调用消费服务接口进行数据实时写入。如果topic2中有数据,则消费所有的数据,并使用最后一条作为数据写入依据,若状态值为实时写入,则调用消费服务写入接口,若接口请求成功,则实时写入数据,若请求不成功,还是进行异步数据生产,将数据写入topic1中。数据消费服务启动时首先判断topic1中是否有数据,有数据则首先进行异步消费,并更新值isrealtime 到topic2中。topic1中无数据,则依次判断cpu和ram的阈值95%是否达到,达到则进行异步操作,并更新值isrealtime到topic2中,未达到则再判断接入接口的队列是是否达到接入接口队列阈值80%,未达到则进行实时处理,并更新值isrealtime到topic2中。达到80%以上则进行异步处理,并更新值isrealtime到topic2中,如图2所示。
66.相应地,本实施例还提供一种动态切换数据流系统,包括:
67.监控模块,用于监控数据服务状态,所述数据服务包括数据消费服务和数据生产服务;
68.切换模块,用于当所述数据消费服务启动时,若数据完全被消费,则进行实时处理,否则进行异步处理;以及用于当所述数据生产服务启动时,通过调用数据消费服务数据接入接口确认,使所述数据消费服务正常运行,并根据中间件中状态写入主题的偏移量的变化,改变数据生产方式。
69.本实施例中的动态切换数据流系统,根据上述方法流程进行工作,通过实时和异步处理的方式,最大限度的保障系统的健壮性和数据的即时性。
70.本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
71.本实施例还提供一种电子终端,包括:处理器及存储器;
72.所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行本实施例中任一项方法。
73.本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步
骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
74.本实施例提供的电子终端,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子终端执行如上方法的各个步骤。
75.在本实施例中,存储器可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non

volatile memory),例如至少一个磁盘存储器。
76.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signalprocessing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
77.在上述实施例中,说明书对“本实施例”、“一实施例”、“另一实施例”、或“其他实施例”的提及表示结合实施例说明的特定特征、结构或特性包括在至少一些实施例中,但不必是全部实施例。“本实施例”、“一实施例”、“另一实施例”的多次出现不一定全部都指代相同的实施例。
78.在上述实施例中,尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变形对本领域普通技术人员来说将是显而易见的。例如,其他存储结构(例如,动态ram(dram))可以使用所讨论的实施例。本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。
79.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
80.本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
81.本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
82.上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献