容器运行方法、装置、电子设备及计算机存储介质与流程

文档序号:29495123发布日期:2022-04-06 14:57阅读:73来源:国知局
容器运行方法、装置、电子设备及计算机存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及云计算、大数据、深度学习等人工智能技术领域。


背景技术:

2.随着计算机技术的发展,计算机技术的实现方式也越来越多样化。比如,计算机应用可以利用容器进行运行。容器是镜像的运行时实例。正如从虚拟机(virtual machine,vm)模板上启动vm一样,用户也同样可以从单个镜像上启动一个或多个容器。一般情况下,针对一个任务通常需要启动多个容器运行模块,这些容器运行模块由于属于同一个任务,通常需要进行信息共享,提高信息共享的简单程度和效率,有利于高效利用容器。


技术实现要素:

3.本公开提供了一种容器运行方法、装置、电子设备及计算机存储介质。
4.根据本公开的一方面,提供了一种容器运行方法,通过第一容器运行模块中运行的第一容器,获取第一容器运行模块中的目标信息;
5.将目标信息设置为第二容器运行模块能够获取的状态。
6.根据本公开的另一方面,提供了一种一种容器运行装置,包括:
7.目标信息获取模块,用于通过第一容器运行模块中运行的第一容器,获取第一容器运行模块中的目标信息;
8.状态设置模块,用于将目标信息设置为第二容器运行模块能够获取的状态。
9.根据本公开的另一方面,提供了一种电子设备,包括:
10.至少一个处理器;以及
11.与该至少一个处理器通信连接的存储器;其中,
12.该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开任一实施例中的方法。
13.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行本公开任一实施例中的方法。
14.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开任一实施例中的方法。
15.根据本公开的技术中,采用第一容器专门获取目标信息,同时在获取目标信息后,将目标信息设置为第二容器运行模块可获取的状态,第二容器运行模块获取第一容器运行模块的目标信息无需经过服务器,减少服务器的访问压力。
16.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
17.附图用于更好地理解本方案,不构成对本公开的限定。其中:
18.图1是根据本公开一实施例的容器运行方法示意图;
19.图2是根据本公开另一实施例的容器运行方法示意图;
20.图3是根据本公开又一实施例的容器运行方法示意图;
21.图4是根据本公开一示例的容器运行系统框架示意图;
22.图5是根据本公开一示例的容器运行方法示意图;
23.图6是根据本公开一实施例的容器运行装置示意图;
24.图7是根据本公开另一实施例的容器运行装置示意图;
25.图8是根据本公开又一实施例的容器运行装置示意图;
26.图9是根据本公开又一实施例的容器运行装置示意图;
27.图10是根据本公开又一实施例的容器运行装置示意图;
28.图11是根据本公开又一实施例的容器运行装置示意图;
29.图12是根据本公开又一实施例的容器运行装置示意图;
30.图13是用来实现本公开实施例的容器运行方法的电子设备的框图。
具体实施方式
31.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
32.根据本公开的实施例,提供了一种容器运行方法,图1是根据本公开实施例的容器运行方法的流程示意图,该方法可以应用于可创建、运行容器的电子设备,例如,该装置可以部署于终端或服务器或其它处理设备执行的情况下,可以执行运行容器、创建容器运行模块(pod)等步骤。其中,终端可以为用户设备(ue,user equipment)、移动设备、蜂窝电话、无绳电话、个人数字处理(pda,personal digital assistant)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,容器运行方法包括:
33.步骤s11:通过第一容器运行模块中运行的第一容器,获取第一容器运行模块中的目标信息;
34.步骤s12:将目标信息设置为第二容器运行模块能够获取的状态。
35.本公开实施例中,第一容器运行模块可以为用于启动、运行或维护至少一个容器的容器运行模块,即pod。
36.本公开实施例中的pod可以是kubernetes平台的pod。kubernetes是主流的集群管理和任务分发管理平台。目前主流的机器学习平台底层也都基于或者支持kubernetes。基于kubernetes开发应用进行分布式任务管理能提高整体效率并提供稳定的生产运行环境。分布式任务由多个工作节点共同完成同一个任务,在kubernetes中,以pod为最小调度和工作单元。pod既可以是kubernetes系统的基础单元,可以是在kubernetes中由用户创建和管理的、最小的可部署的计算单元,也可以是kubernetes系统上运行容器化应用的资源对象。
kubernetes集群中其他资源对象都是为pod这个资源对象做支撑来实现kubernetes管理应用服务的目的。api(application programming interface,应用程序接口)server(服务器)提供了集群与外部交互的接口,通过kubectl命令或者其他api客户端提交pod spec(pod specification,pod明细)给api server作为pod创建的起始。
37.pod(就像在鲸鱼荚或者豌豆荚中)还可以是一组(一个或多个)容器的持有模块或者运行模块;这些容器共享存储、网络、以及怎样运行这些容器的声明。pod中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。pod所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器,这些容器是相对紧密的耦合在一起的。在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。
38.在kubernetes的基本设计里,同一任务的不同pod为同一功能的不同副本,不同pod之间一般无相互感知,pod之间没有相互建立通信。不同的pod也采用差异化参数配置,如rank(级别)获取、节点状态、角色识别等的需求。在机器学习任务中,节点间相互通信,通信节点的角色差异、节点执行顺序都有了新的需求。
39.第一容器运行模块中的目标信息,可以是第一容器运行模块中的某个容器相关的信息,或者是第一容器运行模块关于容器运行的信息,还可以是第一容器运行模块自身的相关信息。
40.第一容器运行模块中运行的第一容器,可是在第一容器运行模块中所创建的、专门用于获取目标信息的容器,也可以是容器运行模块中的协同容器。
41.将目标信息设置为第二容器运行模块能够获取的状态,可以是通过主动推送或者被动允许获取的方式,将目标信息设置为第二容器运行模块能够获取的状态。
42.第二容器运行模块可以为不同于第一容器运行模块的其它容器运行模块。第一容器运行模块和第二容器运行模块可以是相对的,每个容器运行模块向其它容器运行模块提供信息时,为第一容器运行模块,获取其它容器运行模块提供的信息时,为第二容器运行模块。
43.在一种可能的实现方式中,将目标信息设置为第二容器运行模块能够获取的状态,可以是将目标信息设置为第二容器运行模块能够从第一容器中(直接或间接)获取的状态。
44.在一种可能的实现方式中,第一容器运行模块和第二容器运行模块可以为同一个应用运行任务的对应的容器运行模块,即第一容器运行模块和第二容器运行模块之间需要进行信息共享。比如,针对一个视频播放应用,在应用启动时,会同时启动多个对应于视频播放应用的容器运行模块,这些容器运行模块之间需要信息共享,这样的信息可以称为全局信息。针对同一个运行任务,相关容器运行模块之间的信息共享可能存在一定难度。
45.本实施例中,能够通过第一容器运行模块中的第一容器,获得第一容器运行模块中的目标信息,使得其它的第二容器运行模块能够获得第一容器运行模块中的目标信息,从而无需设置专门获取容器运行模块信息的模块,也无需多个容器运行模块访问服务器,在第二容器运行模块存在多个的情况下,能够以简单、低成本的方式实现各容器运行模块的信息共享。
46.在一种实施方式中,第一容器为第一容器运行模块中的用于运行业务进程的第二容器之外的其它容器。
47.一般情况下,容器运行模块中的容器用于运行业务进程,这种容器可以称为普通容器。业务进程具体可以是应用进程,比如视频播放应用的进程、音频播放应用的进程、图像获取应用的进程、数字计算应用的进程、网络信息处理应用的进程等。本实施例中,第一容器为第一容器运行模块中的用于运行业务进程的第二容器之外的其它容器,即第一容器的设置目的并非为了运行业务进程,而是专门用于获取目标信息。
48.第一容器为第一容器运行模块中的用于运行业务进程的第二容器之外的其它容器,即在第一容器运行模块中可以运行两种容器,专门用于获取目标信息的容器和用于运行业务进程的容器。第一容器运行模块中的第一容器和第二容器可以先后单独运行,也可以共同运行。
49.本实施例中,第一容器为第一容器运行模块中的用于运行业务进程的第二容器之外的其它容器,即第一容器的功能和第二容器的功能分开,从而避免目标信息的获取操作影响业务进程的正常运行。
50.针对引入外部依赖的分布式存储的方式,各个工作节点统一连接外部分布式存储,通过代码逻辑和程序自身约定获取需要协同的信息。这种方式需要增加一个中间件,中间件信息不固定,目标信息获取、共享的过程中需要寻找中间件。上述分布式存储比如可以是:etcd、zookeeper(动物园管理者)、redis(remote dictionary server,远程字典服务)。其中,etcd可为分布式、可靠key-value(键-值)存储的分布式系统。这种设置方式需要额外维护高可用的分布式存储,需要添加额外依赖,增加了系统复杂度,节点处理代码中需要额外添加和外部分布式存储交互的客户端、逻辑代码和用户代码耦合,功能依赖平台和业务代码。本公开实施例无需引入外部依赖,不需要开发连接依赖的客户端代码,也无需在任务代码中执行额外处理,且第一容器可以为通用逻辑,作为controller的一部分由平台提供。
51.针对主动查询的目标信息获取方式,在需要获取信息时,通过查询kubernetes的api server查询所需信息,获取信息后在代码逻辑中处理信息并处理相关流程。这种方式,需要实现查询具体信息的逻辑,并且运行在各个工作节点,实现复杂;配置查询kubernetes的apiserver需要对应权限,为工作节点配置该权限存在安全风险;增加了kubernetes的apiserver的负载。本公开实施例在controller中增加协同模块负责任务整体协同,这里controller只和api server交互,逻辑功能可对应于第一容器中的逻辑,但相对简单,避免引入额外依赖,获取目标信息无需要求第一容器具备权限,本身配置的资源控制权限增加exec(执行命令)子资源,但controller由集群管理方控制,无权限安全风险。同时,本公开实施例中,通过第一容器获取容器运行模块的目标信息,集群控制器可直接操作容器运行模块,从而第二容器运行模块通过第一容器运行模块的第一容器,获取第一容器运行模块的目标信息,无需访问api服务器,减少访问压力。
52.在一种实施方式中,在第一容器的容器类型与第二容器的容器类型不同的情况下,如图2所示,容器运行方法还包括:
53.步骤s21:在确定目标信息的获取操作完成的情况下,启动第二容器;
54.步骤s22:在第二容器中,运行业务进程。
55.本实施例中,可在针对一个运行任务的至少一个容器运行模块创建完成之后,通过所有容器运行模块中的第一容器,获得第一容器自身所在的容器运行模块的目标信息,将各容器运行模块的目标信息进行全局共享。在所有需要共享目标信息的容器运行模块的
目标信息准备就绪之后,启动第二容器。从而在本实施例中,第二容器可以后于第一容器启动。
56.本实施例中,第一容器可以是业务容器、init(初始)容器或临时容器中的任意一种。第二容器也可以是业务容器、init容器或临时容器中的任意一种。
57.本实施例中,在确定目标信息的获取操作完成的情况下,可以指在确定目标信息的获取操作完成、且所有目标信息处于可供容器运行模块共享的状态的情况下,启动用于运行业务进程的第二容器,从而避免第一容器获取目标信息的过程受到第二容器的运行的影响,且能够为第二容器的运行提供必要的其它容器运行模块共享的目标信息。
58.在一种实施方式中,在第一容器的容器类型与第二容器的容器类型相同的情况下,容器运行方法还包括:
59.在需要获取目标信息的情况下,在第一容器运行模块中启动第一容器。
60.本实施例中,在需要获取目标信息的情况下,启动第一容器,可以是在第二容器运行过程中,需要获取目标信息的情况下,启动第一容器。即第一容器可以先于或后于第二容器启动。
61.本实施例中,在需要获取目标信息的情况下,启动第一容器,还可以是在容器运行模块中的所有第二容器启动之前,需要获取目标信息的情况下,启动第一容器。
62.本实施例中,在需要获取目标信息的情况下,在第一容器运行模块中启动第一容器,从而避免第一容器在不需要使用的情况下运行,消耗第一容器运行模块的资源。
63.在一种实施方式中,如图3所示,容器运行方法还包括:
64.步骤s31:获取运行任务发布信息;
65.步骤s32:根据运行任务发布信息,创建运行任务和与运行任务对应的多个容器运行模块,多个容器运行模块包括第一容器运行模块和第二容器运行模块。
66.运行任务具体可以是深度学习相关任务,比如可以是paddle job(飞桨任务)。在应用程序启动,需要运行任务的情况下,进行任务发布。根据发布的任务,创建与任务对应的多个容器运行模块,多个容器运行模块的每个容器运行模块都可以将自己的目标信息分享给其它容器运行模块,针对同一个任务的多个容器运行模块,被其它容器运行模块获取目标信息的容器运行模块即可以称为本公开实施例中的第一容器运行模块,能够收到分享的目标信息的容器运行模块即可成为本公开实施例中的第二容器运行模块。
67.本公开实施例中,每个容器运行模块都可以运行对应任务的容器,容器内运行对应任务的进程。可通过控制器创建任务,也可以通过控制器创建任务对应的容器运行模块。
68.控制器(controller)是kubernetes管理某种资源类型的组件,它可以和api server交互,kubernetes集群组件主要包括主节点组件api server、controller manager(控制器管理器)、scheduler(调度器)以及子节点组件kubelet(kube口)、container runtime(容器运行时,如docker集装箱)、kube-proxy(kube代理)等,一般每种资源有一个活跃节点即可。控制器本身需要配置用于相关资源的操作权限包括增加、删除、修改、查询等,负责管理对应资源的生命周期。
69.本实施例中,在获取到运行任务发布信息时,启动容器运行模块,并在容器运行模块中启动并运行容器,从而能够通过容器运行模块中的容器获得目标信息。
70.在一种实施方式中,将目标信息设置为第二容器运行模块能够获取的状态,包括:
71.将目标信息共享给第二容器运行模块的第一容器,使得第二容器运行模块能够从第二容器运行模块的第一容器获得目标信息。
72.本实施例中,将目标信息共享给第二容器运行模块的容器,第二容器运行模块能够从其它容器运行模块中获取自己运行所需的信息。
73.在一种实施方式中,将目标信息设置为第二容器运行模块能够获取的状态,包括:
74.通过设置第二容器运行模块的配置信息,将目标信息共享给第二容器运行模块的第二容器,使得第二容器运行模块能够从容器运行模块配置信息获取目标信息。
75.本实施例中,配置信息可以为第二容器运行模块pod环境变量或目录设置。设置第二容器运行模块的配置信息,可以是通过配置图,将目标信息的获取方式、获取地址等信息设置在配置信息中,使得第二容器运行模块能够从配置信息中获得第一容器运行模块的目标信息,或者根据配置信息能够确定目标信息或者获取目标信息的方式。
76.本实施例中,第二容器运行模块能够获得第一容器运行模块的目标信息,从而不同的容器运行模块之间能够实现信息共享。
77.本公开示例中的kubelet可以为一个部署在机器上的组件,可用于拉起container。本公开示例提供的kubelet的结构如图4所示,在一个kubelet集群中,包括api服务器41、控制器42,以及多个容器运行模块pod43。控制器42可通过api服务器41创建多个pod43,并能够接收多个pod43发送的信息。
78.在一种示例中,如图5所示,容器运行方法可包括:
79.步骤s51:api server接受分布式任务声明。
80.步骤s52:controller监控到任务,通过api server创建需要的pod声明。
81.步骤s53:调度器调度pod,把指令下发到机器,分配任务。
82.步骤s54:kubelet根据需要创建pod,首先启动initcontainer(initial container,初始容器)。本示例中的initcontainer可以等同于其它实施例中的协同容器。
83.本示例中,所创建的pod向其它pod提供目标信息时,为前述实施例的第一容器运行模块,获取其它pod提供的目标信息时,为前述实施例的第二容器运行模块。
84.步骤s55:initcontainer启动预定义程序,等待全局信息。本示例中,所有同一任务对应容器运行模块的目标信息,可构成全局信息。
85.步骤s56:controller监控到所有pod进入等待状态(即可以获取全局信息)时,收集ip(internet protocol,网际互连协议)地址等全局信息通过apiserver远程操作initcontainer,发送信息到initcontaier,使其执行操作。
86.步骤s57:controller将全局信息传递给pod的配置。如通过configmap(配置图)配置为pod的环境变量或目录,使得pod能用。
87.步骤s58:initcontainer通过exec(执行命令)资源操作的变化获取全局信息,可以(7不执行则此处不执行)将全局信息写入对应目录,并结束等待(协同完成),正常退出。
88.步骤s59:工作container启动,获取全局信息。可通过步骤s57或步骤s58中配置获取全局信息执行对应任务。
89.此外,依赖此方法,通过步骤s56控制信息的不同使步骤s58步按不同顺序执行可以实现不同工作节点启动顺序的调整和保证。
90.在本公开示例中,如图6所示,用户可通过api服务器61发布运行任务,控制器62可
在kbuelet集群节点(node)63中,创建多个容器运行模块64,每个容器运行模块64中,启动和维护初始容器65和普通容器66。本示例中的普通容器66可以是除了初始容器之外的其它容器,比如用于运行业务的业务容器、临时容器等。
91.本公开实施例还提供一种容器运行装置,如图7所示,包括:
92.目标信息获取模块71,用于通过第一容器运行模块中运行的第一容器,获取第一容器运行模块中的目标信息;
93.状态设置模块72,用于将目标信息设置为第二容器运行模块能够获取的状态。
94.在一种实施方式中,第一容器为第一容器运行模块中的用于运行业务进程的第二容器之外的其它容器。
95.在一种实施方式中,在第一容器的容器类型与第二容器的容器类型不同的情况下,如图8所示,容器运行装置还包括:
96.第二容器启动模块81,用于在确定目标信息的获取操作完成的情况下,启动第二容器;
97.业务进程运行模块82,用于在第二容器中,运行业务进程。
98.在一种实施方式中,在第一容器的容器类型与第二容器的容器类型相同的情况下,如图9所示,容器运行装置还包括:
99.第一容器启动模块91,用于在需要获取目标信息的情况下,在第一容器运行模块中启动第一容器。
100.在一种实施方式中,如图10所示,容器运行装置还包括:
101.发布信息获取模块101,用于获取运行任务发布信息;
102.创建模块102,用于根据运行任务发布信息,创建运行任务和与运行任务对应的多个容器运行模块,多个容器运行模块包括第一容器运行模块和第二容器运行模块。
103.在一种实施方式中,如图11所示,状态设置模块包括:
104.第一设置单元111,用于将目标信息共享给第二容器运行模块的第一容器,使得第二容器运行模块能够从第二容器运行模块的第一容器获得目标信息。
105.在一种实施方式中,如图12所示,状态设置模块包括:
106.第二设置单元121,用于通过设置第二容器运行模块的配置信息,将目标信息共享给第二容器运行模块的第二容器,使得第二容器运行模块能够从容器运行模块配置信息获取目标信息。
107.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
108.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
109.图13示出了可以用来实施本公开的实施例的示例电子设备130的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
110.如图13所示,设备130包括计算单元131,其可以根据存储在只读存储器(rom)132中的计算机程序或者从存储单元138加载到随机访问存储器(ram)133中的计算机程序,来执行各种适当的动作和处理。在ram 133中,还可存储设备130操作所需的各种程序和数据。计算单元131、rom 132以及ram 133通过总线134彼此相连。输入/输出(i/o)接口135也连接至总线134。
111.设备130中的多个部件连接至i/o接口135,包括:输入单元136,例如键盘、鼠标等;输出单元137,例如各种类型的显示器、扬声器等;存储单元138,例如磁盘、光盘等;以及通信单元139,例如网卡、调制解调器、无线通信收发机等。通信单元139允许设备130通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
112.计算单元131可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元131的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元131执行上文所描述的各个方法和处理,例如容器运行方法。例如,在一些实施例中,容器运行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元138。在一些实施例中,计算机程序的部分或者全部可以经由rom 132和/或通信单元139而被载入和/或安装到设备130上。当计算机程序加载到ram 133并由计算单元131执行时,可以执行上文描述的容器运行方法的一个或多个步骤。备选地,在其他实施例中,计算单元131可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行容器运行方法。
113.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
114.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
115.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或
上述内容的任何合适组合。
116.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
117.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
118.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
119.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
120.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1