CN113110968A - 基于Go语言的数据处理方法、装置、电子设备和存储介质 - Google Patents
基于Go语言的数据处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113110968A CN113110968A CN202110320976.7A CN202110320976A CN113110968A CN 113110968 A CN113110968 A CN 113110968A CN 202110320976 A CN202110320976 A CN 202110320976A CN 113110968 A CN113110968 A CN 113110968A
- Authority
- CN
- China
- Prior art keywords
- data
- scheduling
- target
- coroutine
- coroutines
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请的实施例提供了一种基于Go语言的数据处理方法、装置、电子设备和存储介质,该方法包括:确定目标IP的数量和数据的更新频率;根据目标IP的数量确定待开启的协程的数量;根据待开启的协程的数量和更新频率确定每个协程的调度间隔;开启相应数量的协程;根据调度间隔调度协程从目标IP处采集数据。本申请能够改善采集数据时网络拥堵的情况。
Description
技术领域
本申请涉及数据处理技术领域,尤其是涉及一种基于Go语言的数据处理方法、装置、电子设备和存储介质。
背景技术
传统的数据采集采用线程池的方式进行采集,在数据量较大的情况下,采用线程池的方式采集数据,数据传输会出现较大的波峰波谷,从而造成网络拥堵,影响数据的传输。
发明内容
为了改善采集数据时网络拥堵的情况,本申请提供一种基于Go语言的数据处理方法、装置、电子设备和存储介质。
第一方面,本申请提供了一种基于Go语言的数据处理方法,包括:确定目标IP的数量和数据的更新频率,一个所述目标IP对应矿场内的一个矿机;根据目标IP的数量确定待开启的协程的数量;根据所述待开启的协程的数量和所述更新频率确定每个协程的调度间隔;开启相应数量的协程;根据所述调度间隔调度所述协程从所述目标IP处采集所述数据。
优选的,所述根据所述调度间隔调度所述协程从所述目标IP处采集所述数据包括:调度一个所述协程从所述目标IP处采集所述数据;经过所述调度间隔后,再次调度该协程从所述目标IP处采集所述数据。
优选的,所述根据所述调度间隔调度所述协程从所述目标IP处采集所述数据之后,还包括:过滤每个协程采集的所述数据,以形成最小指令集,所述最小指令集包括矿机的算力、矿机中风扇的转速、矿机中CPU的温度、矿池信息以及芯片信息;以最小指令集的形式上传过滤后的所述数据。
优选的,所述以最小指令集的形式上传过滤后的所述数据包括:设定管道的容量和过滤后的所述数据上传的时间间隔;根据所述容量和所述时间间隔,采用所述管道以最小指令集的形式上传过滤后的所述数据。
第二方面,本申请提供了一种基于Go语言的数据处理装置,包括:参数确定模块,用于确定目标IP的数量和数据的更新频率,一个所述目标IP对应矿场内的一个矿机;数量确定模块,用于根据目标IP的数量确定待开启的协程的数量;时间确定模块,用于根据所述待开启的协程的数量和所述更新频率确定每个协程的调度间隔;协程开启模块,用于开启相应数量的协程;协程调度模块,用于根据所述调度间隔调度所述协程从所述目标IP处采集所述数据。
优选的,所述协程调度模块具体用于,调度一个所述协程从所述目标IP处采集所述数据;经过所述调度间隔后,再次调度该协程从所述目标IP处采集所述数据。
优选的,所述装置还包括:数据过滤模块,用于过滤每个协程采集的所述数据,以形成最小指令集,所述最小指令集包括矿机的算力、矿机中风扇的转速、矿机中CPU的温度、矿池信息以及芯片信息;数据上传模块,用于以最小指令集的形式上传过滤后的所述数据。
优选的,所述数据上传模块具体用于,设定管道的容量和过滤后的所述数据上传的时间间隔;根据所述容量和所述时间间隔,采用所述管道以最小指令集的形式上传过滤后的所述数据。
第三方面,本申请提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如第一方面中任一项所述的方法。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面中任一项所述的方法。
在本申请实施例提供的基于Go语言的数据处理方法、装置、电子设备和存储介质中,通过确定目标IP的数量和数据的更新频率,根据目标IP的数量确定待开启的协程的数量,根据待开启的协程的数量和更新频率确定每个协程的调度间隔,开启相应数量的协程,根据调度间隔调度协程从目标IP处采集数据,从而能够改善采集数据时网络拥堵的情况。
应当理解,发明内容部分中所描述的内容并非旨在限定本申请的实施例的关键或重要特征,亦非用于限制本申请的范围。本申请的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本申请各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本申请的实施例的矿机管理系统的架构图;
图2示出了根据本申请实施例的矿机自动配置方法的流程图;
图3示出了根据本申请实施例的基于Go语言的数据处理方法的流程图;
图4示出了根据本申请实施例的本地服务器和云服务器的数据同步方法的流程图;
图5示出了根据本申请实施例的矿机自动配置装置的方框图;
图6示出了根据本申请实施例的基于Go语言的数据处理装置的方框图;
图7示出了根据本申请实施例的本地服务器和云服务器的数据同步装置的方框图;
图8示出了适于用来实现本申请实施例的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
术语解释
矿池,是一个完全节点,矿池是通过一种将少量算力合并联合运作的方法,整合区块链中的零散算力,并在所有成员中共享奖励。
矿场,又叫挖矿基地,是指地理上集中的矿机分布形式。
矿机,是用于赚取比特币的电脑,这类电脑一般有专业的挖矿晶元,多采用烧显卡的方式工作,耗电量较大。
线程,是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
线程池,是一种多线程处理形式,处理过程中将任务添加对队列,然后在创建线程后自动启动这些任务。
协程,本质上是一种用户态线程,不需要操作系统来进行抢占式调度,并且在真正的实现中寄存于线程中,因此系统开销极小,可以有效的提高线程任务的并发性,而避免多线程的缺点。
管道,在Go语言中管道是一种特殊的类型。在任何时候,同时只能有一个goroutine访问管道进行发送和获取数据。goroutine间通过管道可以通信。管道像一个传送带或者队列,总是遵循先入先出(First In First Out)的规则,保证收发数据的顺序。
图1示出了根据本申请的实施例的矿机管理系统的架构图。
参见图1,在该矿机管理系统中包括多个矿机101、多个交换机102、本地服务器103、云服务器104和客户端105。
矿机101与交换机102之间、本地服务器103与交换机102之间、本地服务器103和云服务器104之间以及本地服务器103和客户端105之间均通过有线网络连接。
在管理系统中,多个交换机102可以分为一级交换机、二级交换机以及三级交换机,二级交换机和三级交换机均可以包括一个或多个交换机102。每个三级交换机分别连接有多个矿机101,每个二级交换机分别连接有多个三级交换机,多个二级交换机和本地服务器103均与一级交换机连接,一级交换机和云服务器104连接。
本地服务器103例如可以包括处理器、存储器、通信装置和嗅探器。处理器用于执行程序指令,该程序指令可以采用比如Golang、x86、Arm、RISC、MIPS、SSE等架构的指令集。存储器例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。通信装置例如能够进行有线或无线通信。嗅探器例如能够从交换机102处采集数据。
云服务器104可以是刀片服务器、机架式服务器等,也可以是部署在云端的服务器集群,在此不作限定。
在一些实施例中,处理器中存储有指令,该指令用于控制嗅探器进行操作以实施或者支持实施根据本说明书的至少部分实施例的基于Go语言的数据处理方法;该指令也用于控制处理器进行操作或者支持实施根据本说明书的至少部分实施例的矿机自动配置方法。
在另一些实施例中,本地服务器103和云服务器104中的处理器中均存储有指令,该指令用于控制本地服务器103和云服务器104进行操作以实施或者支持实施根据本说明书至少部分实施例的本都服务器和云服务器的数据同步方法。
技术人员可以根据本说明书所公开方案设计指令。指令如何控制嗅探器、本地服务器以及云服务器进行操作,这属于本领域公知常识,在此不再详细描述。
需要说明的是,图1所示的管理系统仅是解释性的,绝不是为了限制本申请实施例的应用或用途。例如,该管理系统中可以包括多个本地服务器103、多个云服务器104和多个客户端105。
在本申请的一个实施例中,矿机管理系统包括还包括至少两个移动终端,其中至少一个移动终端与客户端105通讯连接,至少另一个移动终端与云服务器104通讯连接。
多个交换机102、本地服务器103和客户端105均部署在矿场内,矿场内的矿机101、本地服务器103和客户端105均连接至同一局域网,由此可知,矿机101、本地服务器103和客户端105不受外部网络信号影响,只需保证矿场不断电即可正常工作。
本地服务器103内配置有嗅探器,嗅探器用于采集矿机101的运行参数。
在一示例中,矿机的运行参数例如可以包括每台矿机的编号信息、位置信息、CPU温度信息、算力信息、算力板数量以及风扇转速等。
本地服务器103可以是刀片服务器、机架式服务器等。本地服务器103用于对该运行参数进行分析处理以生成展示信息和/或报警信息,并将展示信息和/或报警信息通过局域网传输至客户端105。
在一示例中,展示信息例如可以包括矿场内所有的矿机的编号信息、位置信息以及对应该矿机的CPU温度信息、算力信息、算力板数量、风扇转速等。报警信息例如可以包括算力板故障、CPU温度异常、无算力等。
客户端105例如可以为台式电脑。客户端105用于展示该展示信息和/或报警信息。
本地服务器103和云服务器104通过有线网络进行通信。在本地服务器103和云服务器104之间的通信正常时,本地服务器103在将展示信息和/或报警信息通过局域网传输至客户端105时,还将该展示信息和/或报警信息通过有线网络同步至云服务器104。
云服务器104可以是部署在云端的服务器集群。云服务器104用于存储展示信息和/或报警信息,并将展示信息和/或报警信息通过无线网络下发至至少一个移动终端。
移动终端例如可以是手机、平板电脑、手环等可穿戴设备,本申请实施例对此不作具体限定。移动终端中的操作系统为安卓(Android)操作系统。
需要说明的是,连接至客户端105的移动终端可以由矿场内的维护人员使用,连接至云服务器104的移动终端可以由矿场所有者使用。其具体数量可以根据需要来选择,此处不作限定。当然,连接至客户端105的移动终端110也可以由矿场所有者使用,连接至云服务器104的移动终端也可以由矿场内的维护人员使用。
例如,矿场内的维护人员在对矿机进行日常维护时,可以通过移动终端来接收由云服务器104下发的展示信息和/或报警信息,由于展示信息和/或报警信息内包含有矿机的位置信息和编号信息,因此在某台矿机出现异常时,维护人员能够通过移动终端快速、准确地找到该矿机并对其进行维护。
又例如,矿场所有者在需要查看其矿场内矿机的运行状态时,可以通过移动终端来接收由云服务器104下发的展示信息和/或报警信息,从而能够清楚地了解其所有的矿机的运行状态。
在一些实施例中,矿场内的矿机上或者矿机附近设置有条形码(例如,一维条形码或二维码),该条形码用于表征矿机在矿场内的分布位置信息。在本地服务器103和云服务器104中均配置有矿机在矿场内的分布拓扑图,该分布拓扑图中的每台矿机与矿场内相应位置处的矿机对应,也就是说,矿机的实际位置和分布拓扑图内的位置存在对应关系。
例如,维护人员在日常维护过程中,可以使用移动终端来扫描条形码以解析出该条形码对应的矿机的位置信息,将该位置信息发送至云服务器104,云服务器104根据该位置信息查找到其对应的矿机及其运行参数,并将该运行参数下发至移动终端以供维护人员查看。
当然,获取运行参数的方式还可以是由云服务器104将上述位置信息传输至本地服务器103,由本地服务器103根据该位置信息查找到其对应的矿机及其运行参数,并将该运行参数传输至云服务器104,由云服务器104下发至移动终端以供维护人员查看。
在一些实施例中,为防止本地服务器103和云服务器104之间通信故障时,影响系统的正常工作,该系统可以包括无线网络模块,该无线网络模块可以设置在交换机中,在本地服务器103和云服务器104之间通信故障时,本地服务器103通过无线网络模块将展示信息和/或报警信息下发至移动终端,以使得矿场内的维护人员能够及时地接收到该信息,以对故障进行处理。
在一些实施例中,在本地服务器103和云服务器104之间的通信故障时,移动终端扫描条形码时,可以通过无线网络模块将该条形码所代表的位置信息发送至本地服务器103,以从本地服务器103处获取该条形码对应的矿机的运行状态信息。
根据本申请的实施例,在矿场内部署客户端和本地服务器并通过本地局域网连接,本地服务器对由嗅探器采集的矿机运行参数进行分析处理并生成展示信息和/或报警信息,客户端用于显示展示信息和/或报警信息,并且本地服务器还能够将展示信息和/或报警信息同步至云服务器,在网络出现故障时,即本地服务器和云服务器之间的通讯断开,不会影响采集装置、客户端和本地服务器的正常工作,从而能够避免由于网络问题而影响矿场的维护工作。
下面结合具体的实施例来对矿机管理系统的每部分分别进行详细说明。
矿机在初次使用时,需要对矿池信息进行配置,以改变其挖矿产生的收益归属。下面首先介绍如何对矿机中矿池信息进行配置。
图2示出了根据本申请实施例的矿机自动配置方法的流程图。在一些实施例中,矿机自动配置方法可以由图1中的客户端105执行。
参见图2,矿机自动配置方法包括以下步骤:
步骤210,将矿场内的矿机连接至同一局域网,并为每台矿机生成识别编码。
步骤220,在满足预设条件时,将配置信息下发至对应识别编码的矿机,使得配置信息写入矿机。
其中,预设条件包括首次检测到矿机的固有参数、首次检测到与矿机绑定的参数以及对应矿机的IP地址首次变为活跃IP地址中的一种或多种。
在本实施例中,矿机的固有参数包括但不限于矿机中风扇的转速、矿机的温度以及芯片信息。与矿机绑定的参数包括但不限于与矿机绑定的矿池URL、子账号名和密码。在首次检测到矿机的固有参数或者首次检测到与矿机绑定的参数时,说明该矿机是在该矿场内首次上电,此时需要将配置信息下发至该矿机,使得配置信息写入矿机,以改变其挖矿产生的收益归属。
在本实施例中,矿场内可以放置多个机架,机架上可以放置有多台矿机。那么,可以为每个机架单独分配一个IP号段,用来建立该IP号段中的IP地址与该机架上的矿机的对应关系;也可以多个机架共用一个IP号段,用来建立该IP号段中的IP地址与多个机架上的矿机的对应关系。
例如,可以根据IP号段中的IP地址的数量和机架上矿机的数量来确定IP号段的分配,IP号段192.168.100.1~192.168.100.254中包含有254个IP地址,每个机架上放置有80台矿机,则可以将该IP号段192.168.100.1~192.168.100.254分配至3个机架,每个机架上的每台矿机分别对应该IP号段中的一个IP地址。
又例如,还可以绘制矿场内机架和放置于机架上的矿机的分布拓扑图,为每个机架分配一个IP号段,并为该机架中每台矿机分配一个IP地址,该IP地址属于该IP号段,以建立矿机与IP地址的对应关系。
在IP号段中出现新的活跃IP地址时,即与该IP地址对应的矿机首次上电和/或首次连接网络时,其对应的IP地址即为新的活跃IP地址,此时需要将配置信息下发至该矿机,使得配置信息写入矿机,以改变其挖矿产生的收益归属。
在本实施例中,配置信息包括矿池URL、子账号名和密码。矿池URL,用来连接矿池,获取并提交任务,以完成PoW的工作量;子账号名,在矿池创建的子账号名,作为旷工在矿池中PoW贡献工作量的标识;密码,一般不作为密码使用,但可以用来设定矿机接受矿池任务的难度下限。
在一些实施例中,一个矿池URL、一个子账号名、一个密码构成一组完整的矿池配置,配置信息可以包含有三组矿池配置。其中,第一组矿池配置作为主矿池配置,其他两组矿池配置作为备用矿池配置,当第一组矿池配置无法正常连接获取矿池任务时,会一次尝试后两组矿池配置进行连接,从而确保矿机工作的稳定性。
在一些实施例中,在将配置信息下发至对应识别编码的矿机后,该方法还包括以下步骤:首先,记录已写入配置信息的矿机的MAC地址;然后,创建对应该MAC地址的标识信息;最后,将标识信息与指定用户信息绑定。
在本实施例中,通过记录矿机的MAC地址,并创建对应该MAC地址的标识信息,将该标识信息与指定用户绑定,从而能够为矿机归属的判断提供依据。
根据本申请的实施例,通过将矿场内的矿机连接至同一局域网,并为每台矿机生成识别编码,然后在首次检测到矿机的固有参数,或者首次检测到与矿机绑定的参数,或者对应矿机的IP地址首次变为活跃IP地址时,将配置信息下发至对应识别编码的矿机,使得配置信息写入矿机,相比于手动配置节省了大量的配置时间,同时也避免了在配置时由于人工失误而造成的错误。
在对矿机配置完成后,矿机可以投入正常的挖矿工作,但是在矿机挖矿过程中,需要实时采集矿机的参数以对矿机进行监控。
在一些应用场景中,例如需要对7000台神马矿机的数据进行采集,并实现每分钟采集一次。
在采用线程池的方式对上述矿机的数据进行采集时,每台神马矿机具有80端口和4028端口两个端口,在一次数据采集过程中,80端口需要被访问3次,4028端口需要被访问1次,线程访问一次端口并返回平均耗时10s,也就是说,在对神马矿机进行一次数据采集耗时40s。
但是,在线程返回时,由于I/O密集,线程在返回时会存在大量的等待,导致延迟返回,造成网络拥堵,从而导致不能实现每分钟采集一次。
为此,本申请实施例提供一种基于Go语言的数据处理方法、装置、电子设备和存储介质,能够改善采集数据时网络拥堵的情况。
图3示出了根据本申请实施例的基于Go语言的数据处理方法的流程图。在一些实施例中,基于Go语言的数据处理方法可以由图1中的本地服务器103执行。
参见图3,该方法包括以下步骤:
步骤310,确定目标IP的数量和数据的更新频率。
目标IP的数量例如可以根据矿场内矿机的数量来确定,在对矿机的数据进行采集时,需要为每台矿机配置一个IP地址,即目标IP的数量可以与矿机的数量相同。例如,一个矿场内具有10000台矿机,需要对该10000台矿机实现数据采集,则能够确定所需的目标IP的数量为10000个。
数据的更新频率例如可以是每60秒更新一次,也可以是每30秒更新一次,还可以是其他时间更新一次,其具体数据可以由本领域技术人员根据实际需要来自行设定,此处不做限定。
步骤320,根据目标IP的数量确定待开启的协程的数量。
每个协程只负责从一个目标IP处采集数据并返回,则待开启的协程的数量可以与目标IP的数量相同。
步骤330,根据待开启的协程的数量和更新频率确定每个协程的调度间隔。
调度间隔,即上一个协程被调度执行采集数据操作到下一个协程被调度执行采集数据操作之间的时间间隔。
调度间隔例如可以通过如下公式进行计算:
例如,需要对10000台矿机进行数据采集,更新频率为60秒,则待开启的协程的数量为10000。那么,每个协程的调度间隔通过上式计算为6毫秒,也就是说,每间隔6毫秒,调度一个协程从其对应的目标IP处采集矿机的数据。
步骤340,开启相应数量的协程。
相应数量即步骤202中确定的待开启的协程的数量。
步骤350,根据调度间隔调度协程从目标IP处采集数据。
在一些实施例中,根据调度间隔调度协程从目标IP处采集数据可以采用以下步骤:
调度一个协程从目标IP处采集数据;
经过调度间隔后,再次调度该协程从目标IP处采集数据。
在一些实施例中,在根据调度间隔调度协程从目标IP处采集数据之后需要对数据进行上传,其上传的具体步骤如下:
步骤360,定义最小指令集,以最小指令集过滤每个协程采集的数据。
在本实施例中,最小指令集包括矿机的算力、矿机中风扇的转速、矿机的温度、矿池信息以及芯片信息。
例如,最小指令集可以表示如下:
需要说明的是,由于矿机的种类很多,在采集能够表示矿机性能的数据时,需要对数据以最小指令集的形式进行过滤,将其余的数据过滤掉,以防止本地服务器的磁盘在长时间运行下产生大量的碎片。
但是,在过滤后由于不同品牌的矿机在表示同一参数时所用的单位也可能不同,因此在过滤后还需要对其单位进行统一,以方便兼容不同品牌、不同型号的矿机。
步骤370,上传过滤后的数据。
在一些实施例中,上传过滤后的数据可以采用以下步骤:
步骤3701,设定管道的容量和过滤后的数据上传的时间间隔。
由于管道总是遵循先入先出(First In First Out)的规则,保证收发数据的顺序,通过设定管道的容量,可以实现数据在管道内的队列,使得管道内的数据遵循先入先出的规则;通过设定过滤后的数据上传的时间间隔,可以实现过滤后的数据按照该时间间隔逐个上传。
步骤3702,根据容量和时间间隔,采用管道上传过滤后的数据。
在本实施例中,通过采用管道的方式上传数据,能够避免数据上传时出现较大的波峰波谷,保证了数据上传的平稳性。
根据本申请的实施例,通过确定目标IP的数量和数据的更新频率,根据目标IP的数量确定待开启的协程的数量,根据待开启的协程的数量和更新频率确定每个协程的调度间隔,开启相应数量的协程,根据调度间隔调度协程从目标IP处采集数据,由于每个协程之间不存在优先级,所有协程执行的优先级均相同,而且在进行数据采集时,针对同一个目标IP,只有一个协程在执行采集、返回操作,不会造成网络拥堵,从而能够改善采集数据时网络拥堵的情况。
本地服务器103在采集到矿机的运行数据后,需要与云服务器104进行数据同步,具体的同步方法参见图4,图4示出了根据本申请实施例的本地服务器和云服务器的数据同步方法的流程图。
如图4所示,该方法包括以下步骤:
步骤410,本地服务器向云服务器上传数据:本地服务器将数据上传至Kafka集群,云服务器从Kafka集群抓取数据。
在本实施例中,本地服务器向Kafka集群上传数据时,可以根据定时任务来上传。
在一些实施例中,本地服务器向Kafka集群上传数据时,可以首先对数据进行清洗、整理及加工处理,处理后的数据在上传至Kafka集群。
例如,对数据过滤时可以遵循预设的条件来进行过滤,预设的条件包括但不限于矿机的4028端口异常、矿机的MAC地址异常等;对数据过滤还可以根据具体的业务类型来设定过滤的条件。
例如,在对数据进行整理时,可以将数据进行结构化归类。
例如,在对数据进行加工时,可以将数据形成报表的形式。
步骤420,云服务器向本地服务器下发控制指令:在本地服务器和云服务器之间建立Websocket通道,云服务器通过Websocket通道向本地服务器下发控制指令。
在本实施例中,控制指令包括头部和数据,头部用于指示一个控制指令需要执行的操作类型,数据包括对应操作类型的具体操作内容、是否需要返回操作的结构以及标识信息。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本申请所述方案进行进一步说明。
图5示出了根据本申请实施例的矿机自动配置装置的方框图。在一些实施例中,该装置可以被包括在图1的客户端102中或者被实现为客户端102。
如图5所示,该矿机自动配置装置包括:
编码生成模块510,用于将矿场内的矿机连接至同一局域网,并为每台矿机生成识别编码。
信息配置模块404,用于在满足预设条件时,将配置信息下发至对应识别编码的矿机,使得配置信息写入所述矿机。
其中,预设条件包括首次检测到矿机的固有参数、首次检测到与矿机绑定的参数以及对应矿机的IP地址首次变为活跃IP地址中的一种或多种。
在一些实施例中,该装置还包括:
信息记录模块,用于记录已写入配置信息的矿机的MAC地址。
信息创建模块,用于创建对应MAC地址的标识信息。
信息绑定模块,用于将标识信息与指定用户信息绑定,以作为矿机归属的判断依据。
在一些实施例中,配置信息包括矿池URL、子账号名和密码。
图6示出了根据本申请实施例的基于Go语言的数据处理装置的方框图。在一些实施例中,该装置可以被包括在图1的本地服务器103中或者被实现为本地服务器103。
如图6所示,该装置包括:
参数确定模块610,用于确定目标IP的数量和数据的更新频率,一个目标IP对应矿场内的一个矿机。
数量确定模块620,用于根据目标IP的数量确定待开启的协程的数量。
时间确定模块630,用于根据待开启的协程的数量和更新频率确定每个协程的调度间隔。
协程开启模块640,用于开启相应数量的协程。
协程调度模块650,用于根据调度间隔调度协程从目标IP处采集数据。
在一些实施例中,协程调度模块650具体用于,调度一个所述协程从目标IP处采集数据;经过调度间隔后,再次调度该协程从目标IP处采集数据。
在一些实施例中,该装置还包括:
数据过滤模块660,用于定义最小指令集,以最小指令集过滤每个协程采集的数据,最小指令集包括矿机的算力、矿机中风扇的转速、矿机的温度、矿池信息以及芯片信息。
数据上传模块670,用于上传过滤后的数据。
在一些实施例中,数据上传模块670具体用于,设定管道的容量和过滤后的数据上传的时间间隔;根据容量和时间间隔,采用管道上传过滤后的数据。
图7示出了根据本申请实施例的本地服务器和云服务器的数据同步装置的方框图。
如图7所示,该装置包括:
数据上传装置710,用于使得本地服务器将数据上传至Kafka集群。
数据抓取装置720,用于使得云服务器从Kafka集群抓取数据。
通道建立模块730,用于在本地服务器和云服务器之间建立Websocket通道。
指令下发模块740,用于使得云服务器通过Websocket通道向本地服务器下发控制指令。
在一些实施例中,数据上传装置710具体用于,使得本地服务器根据定时任务将数据上传至Kafka集群。
在一些实施例中,数据上传装置710具体还用于:使得本地服务器对数据进行清洗、整理及加工处理;将处理后的数据根据定时任务将数据上传至Kafka集群。
在一些实施例中,控制指令包括头部、和数据信息;头部用于指示一个控制指令需要执行的操作类型;数据信息包括对应操作类型的具体操作内容、是否需要返回操作的结构以及标识信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图8示出了适于用来实现本申请实施例的电子设备的结构示意图。
如图8所示,电子设备包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本申请的实施例,上文参考流程图图2、图3以及图4描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括编码生成模块和信息配置模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,编码生成模块还可以被描述为“用于将矿场内的矿机连接至同一局域网,并为每台矿机生成识别编码的模块”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述前述程序被一个或者一个以上的处理器用来执行描述于本申请的矿机自动配置方法、基于Go语言的数据处理方法以及本地服务器和云服务器的数据同步方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种基于Go语言的数据处理方法,其特征在于,包括:
确定目标IP的数量和数据的更新频率,一个所述目标IP对应矿场内的一个矿机;
根据目标IP的数量确定待开启的协程的数量;
根据所述待开启的协程的数量和所述更新频率确定每个协程的调度间隔;
开启相应数量的协程;
根据所述调度间隔调度所述协程从所述目标IP处采集所述数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述调度间隔调度所述协程从所述目标IP处采集所述数据包括:
调度一个所述协程从所述目标IP处采集所述数据;
经过所述调度间隔后,再次调度该协程从所述目标IP处采集所述数据。
3.根据权利要求1所述的方法,其特征在于,所述根据所述调度间隔调度所述协程从所述目标IP处采集所述数据之后,还包括:
定义最小指令集,以所述最小指令集过滤每个协程采集的所述数据,所述最小指令集包括矿机的算力、矿机中风扇的转速、矿机的温度、矿池信息以及芯片信息;
上传过滤后的所述数据。
4.根据权利要求3所述的方法,其特征在于,所述上传过滤后的所述数据包括:
设定管道的容量和过滤后的所述数据上传的时间间隔;
根据所述容量和所述时间间隔,采用所述管道上传过滤后的所述数据。
5.一种基于Go语言的数据处理装置,其特征在于,包括:
参数确定模块,用于确定目标IP的数量和数据的更新频率,一个所述目标IP对应矿场内的一个矿机;
数量确定模块,用于根据目标IP的数量确定待开启的协程的数量;
时间确定模块,用于根据所述待开启的协程的数量和所述更新频率确定每个协程的调度间隔;
协程开启模块,用于开启相应数量的协程;
协程调度模块,用于根据所述调度间隔调度所述协程从所述目标IP处采集所述数据。
6.根据权利要求5所述的装置,其特征在于,所述协程调度模块具体用于,
调度一个所述协程从所述目标IP处采集所述数据;
经过所述调度间隔后,再次调度该协程从所述目标IP处采集所述数据。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
数据过滤模块,用于定义最小指令集,以所述最小指令集过滤每个协程采集的所述数据,所述最小指令集包括矿机的算力、矿机中风扇的转速、矿机的温度、矿池信息以及芯片信息;
数据上传模块,用于上传过滤后的所述数据。
8.根据权利要求7所述的装置,其特征在于,所述数据上传模块具体用于,
设定管道的容量和过滤后的所述数据上传的时间间隔;
根据所述容量和所述时间间隔,采用所述管道上传过滤后的所述数据。
9.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320976.7A CN113110968A (zh) | 2021-03-25 | 2021-03-25 | 基于Go语言的数据处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110320976.7A CN113110968A (zh) | 2021-03-25 | 2021-03-25 | 基于Go语言的数据处理方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113110968A true CN113110968A (zh) | 2021-07-13 |
Family
ID=76712181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110320976.7A Pending CN113110968A (zh) | 2021-03-25 | 2021-03-25 | 基于Go语言的数据处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113110968A (zh) |
-
2021
- 2021-03-25 CN CN202110320976.7A patent/CN113110968A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105071969B (zh) | 基于jmx的定制化实时监控及自动化异常处理的系统及方法 | |
CN104239181A (zh) | 累计用于电子系统的硬件计数的方法和电子系统 | |
CN102739802A (zh) | 面向业务应用的it集中运维分析系统 | |
CN102156729A (zh) | 监控多个数据库服务器的系统和方法 | |
CN102932447A (zh) | 配电室远程数据采集分析系统 | |
CN116980958B (zh) | 一种基于数据识别的无线设备电故障监测方法及系统 | |
WO2015192664A1 (zh) | 设备监控方法及装置 | |
CN105306267A (zh) | 一种光缆网管系统 | |
CN103888284A (zh) | 远程无线升级现场设备系统及现场设备远程无线升级的方法 | |
CN109491873A (zh) | 缓存监控方法、介质、装置和计算设备 | |
CN113114736A (zh) | 矿机管理方法和系统 | |
CN110855481B (zh) | 数据采集系统及方法 | |
CN112884176B (zh) | 管理系统及方法 | |
CN111082855A (zh) | 一种基于otdr的光缆测试方法、系统、终端及存储介质 | |
CN113110968A (zh) | 基于Go语言的数据处理方法、装置、电子设备和存储介质 | |
CN113114485A (zh) | 矿机自动配置方法、装置、服务器和可读存储介质 | |
CN112911022A (zh) | 本地服务器和云服务器的数据同步方法和装置 | |
CN211579988U (zh) | 基于运行状态监测的远程运维系统 | |
CN103763157A (zh) | 一种基于传感器数据采集的开放式监测系统平台 | |
CN106911662B (zh) | 一种恶意样本养殖高交互转化低交互的系统及方法 | |
CN115909532A (zh) | 一种监控终端巡检的方法、装置、电子设备以及介质 | |
CN116260747A (zh) | 终端测试设备的监测方法、装置及电子设备 | |
CN210466459U (zh) | 一种二次供水泵房维修派单系统 | |
CN111913758A (zh) | 组件监控任务的自动化添加方法、装置及系统 | |
CN114884798B (zh) | 跨专业故障分析方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220314 Address after: 322, F3, No. 9, Zhixin Road, Haidian District, Beijing 100089 Applicant after: ADDING Inc. Address before: 100089 a2162, 2nd floor, College Park, Dongsheng Science Park, Zhongguancun, No.18, Xueqing Road, Haidian District, Beijing Applicant before: Beijing Digital Panshi Technology Co.,Ltd. |