发明内容
本申请提供一种基于服务编排的服务请求和提供方法、装置以及电子设备,用于解决以下技术问题:在微服务架构中,客户端为了获得一项服务,需要分别向多个不同的服务组件发送对应的服务请求才能完成服务,这就会导致客户端发送服务请求的次数多,客户端等待服务的时间长,客户端的网络流量损耗多,最终导致用户体验不佳。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供的一种基于服务编排的服务提供方法,包括:
第一服务组件接收客户端发送的服务请求,所述服务请求携带服务编排数据;
根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请实施例提供的一种基于服务编排的服务请求方法,包括:
客户端发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据;
接收所述第一服务组件和/或第二服务组件返回的业务操作结果;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请实施例提供的一种基于服务编排的服务提供装置,包括:
接收模块,接收客户端发送的服务请求,所述服务请求携带服务编排数据;
服务模块,根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请实施例提供的一种基于服务编排的服务请求装置,包括:
所述装置位于客户端中,所述装置包括:客户端发送模块和客户端接收模块;
所述客户端发送模块,发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据;
所述客户端接收模块,接收所述第一服务组件和/或所述第二服务组件的返回的业务操作结果;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请实施例提供的一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为第一服务组件接收客户端发送的服务请求,所述服务请求携带服务编排数据;
根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请实施例提供的另一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为客户端发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据;
接收所述第一服务组件和/或所述第二服务组件返回的业务操作结果;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
本申请提供的一种基于服务编排的服务请求和提供方法、装置以及电子设备,能够达到以下有益效果:在客户端为了获得一项服务时,通过对所需的多个服务组件的顺序的编排,实现客户端只需发送一条服务请求即可完成一项涉及多个服务组件的服务,可以减少客户端发送服务请求的次数,可以减少客户端等待服务的时间,可以减少客户端的网络流量的损耗,从而有效提升用户的体验。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的方案的核心思想是:基于去中心化API网关微服务架构,随着服务功能的完善,服务组件的粒度越来越细,服务组件的数量越来越多,为了提升服务完成的效率,需要对服务组件的执行顺序进行服务编排;实现客户端只需发送一条服务请求即可完成一项涉及多个服务组件的服务,实现轻量级的服务编排,可以减少客户端发送服务请求的次数,可以减少客户端等待服务的耗时,可以减少客户端的网络流量的损耗,从而有效提升用户的体验。
图2为本申请实施例提供的一种基于服务编排的服务提供方法的流程示意图,图2中所示流程包括如下步骤:
步骤S11,第一服务组件接收客户端发送的服务请求,所述服务请求携带服务编排数据;其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
所述第一服务组件当中均包括一个网关组件和至少一个业务组件,第一服务组件包含的网关组件接收客户端发送的服务请求,该网关组件将服务请求中的网络协议进行转换,再将服务请求序列化为本地业务组件能够识别和执行的请求数据;通过第一服务组件中的网关组件调用本地业务组件,实现本地调用,可以提升业务执行效率。
服务请求中携带服务编排数据,其中,服务编排数据可以是预先定义的,在这种情况下,当客户端发起服务请求时,先直接获取预先定义的对应的服务编排数据,再将获取的服务编排数据携带在该服务请求中,发送给第一服务组件中的网关组件。
为了满足客户端对服务编排数据多样化、轻量化的需求,所述服务编排数据还可以由客户端根据实际需求实时生成,而不需要预先定义;具体来说,客户端发起服务请求时,客户端根据服务请求确定完成该服务所需的服务组件,然后再根据服务请求对各个服务组件的执行顺序进行服务编排,生成服务编排数据。
服务编排数据的生成还可以不依赖于客户端,根据客户端发送服务请求和该客户端中包括的应用信息,服务组件自动进行服务编排,生成服务编排数据。这个应用信息是客户端中包括的服务组件的应用信息,比如该服务组件的功能、服务类型、与其他服务组件的关联关系等信息。
例如,某客户端发起电影票订票服务请求,要完成该服务,就需要支付服务组件和售票服务组件按照订票、支付、出票的顺序执行;为了实现客户端实时生成服务编排数据,完成服务编排,可以建立支付服务组件与售票服务组件之间的关联关系,即当售票服务组件接到客户端的订票信息后,分析无误,自动关联到支付服务组件,通过支付服务组件完成支付操作后,自动关联到售票服务组件,使售票服务组件完成出票,即完成客户端需要的电影票的订票服务。
步骤S12,根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务。
所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序,这里所说的顺序是指各服务组件谁先执行业务操作,谁后执行业务操作,或者两个以上服务组件并列执行业务操作等。例如,第一服务组件执行业务操作后继续调用多个第二服务组件同时执行业务操作,或者第一服务组件执行业务操作后继续调用一个第二服务组件执行业务操作,然后,该第二服务组件进行设定次数的循环操作。
在本申请实施例中,目前很多服务组件是细粒度的,为了完成客户端的发起的一项服务,需要调用多个这样的服务组件,有的时候会出现循环、并行、分支的执行顺序,或对同一服务组件多次调用的情况,所以,需要通过服务编排数据记录多个服务组件的执行顺序。在服务编排数据中,不仅包含了完成此项服务的所需服务组件的信息,还包含了所需服务组件的执行顺序,该顺序包括循环、并行、串行、分支等执行业务操作的顺序。
根据服务编排数据指定的顺序,将业务操作结果和服务编排数据发送给一个或多个第二服务组件,以便于包括该第二服务组件在内的一个或多个第二服务组件根据所述顺序,执行业务操作;进一步地,一个或多个第二服务组件根据所述顺序,执行业务操作,得到对应的业务操作结果,再次根据所述服务编排数据指定的所述顺序,将该业务操作结果和服务编排数据作为服务请求,继续发送给第一服务组件和/或至少一个第二服务组件;服务组件根据服务编排数据的指定的顺序,或分支节点的操作结果,调用一个或多个服务组件,直到完成所有操作指令,第一服务组件和/或第二服务组件向客户端返回最终的业务操作结果。
例如,客户端发起订票请求,需要通过支付服务组件、订票服务组件来完成。其中,该订票服务组件相当于所述第一服务组件,该支付服务组件相当于所述第二服务组件。
具体执行业务操作的流程是,客户端发起订票请求,并与服务编排数据相关联,发送到订票服务组件;
订票服务组件接收到该服务请求,通过网关组件转换网络协议,再通过网关组件,序列化订票请求,获取订票的详细信息,包括订票者身份信息、车次、起始站等,然后将这些订票信息发送给本地业务组件进行订票业务操作,确认可以正常订票后,进一步将订票的业务操作结果和服务编排数据发送到支付服务组件;
支付服务组件中的网关组件接收到订票服务组件的服务请求,根据实际需要,解析网络协议,序列化请求数据,如果订票服务组件与支付服务组件采用相同的网络协议和数据格式,则可以直接提取确认信息;
然后,支付服务组件将支付请求反馈到客户端,客户端确认并完成支付,支付服务组件中的网关组件接收到该支付确认请求,经过服务请求的解析、序列化后,调用本地业务组件进行支付操作,将订票款支付的服务请求发给订票服务组件;
订票服务组件需要同时接收到客户端的支付款和服务请求,经过确认无误后,反馈订票成功的服务结果到客户端,完成客户端的订票服务。
需要说明的是,这里所述多个第二服务组件,可以是一类服务组件,也可以是多类服务组件。
在服务编排数据所包含的内容不同的情况下,实现服务编排数据调用方式也可以不同;具体地,服务编排数据为:服务编排脚本和/或服务编排脚本的标识信息;
当服务编排数据为服务编排脚本的标识信息时,根据服务编排数据,配合一个或多个第二服务组件执行业务操作,具体可以包括:第一服务组件根据服务请求携带的服务编排脚本的标识信息,从本地调用服务编排脚本;然后,根据该服务编排脚本,配合一个或多个第二服务组件执行业务操作。
例如,当服务编排数据是服务编排脚本的标识信息时,这里所述的服务编排脚本的标识信息包括:服务编排脚本的ID,是用于表征服务编排脚本唯一性的信息。服务编排脚本的ID存储在客户端本地,当客户端发起某项服务请求时,该服务请求同时关联到对应的完成该服务的所需要的服务编排脚本的ID,将具体的服务请求、服务编排脚本的ID和调用该服务编排脚本的请求同时发送到存储有该服务编排脚本的服务组件;然后服务组件根据接收到的服务编排脚本的ID调用对应的存储在服务组件中的服务编排脚本,服务组件根据服务编排脚本指定的执行顺序完成服务。这种方式具有很好的灵活性、方便脚本维护。
当服务编排数据是服务编排脚本时,根据该服务编排数据,配合一个或多个第二服务组件执行业务操作,具体可以包括:如果服务编排脚本位于客户端中,客户端根据服务请求,直接从客户端本地获取对应的服务编排脚本,这种方法方便不同的客户端根据自己常用服务请求类型选择性的添加需要的服务编排脚本,方便用户选择,实现轻量化的服务编排。
这里之所以采用服务编排脚本,是因为脚本在开发和维护时,都比较简单,成本低。可以根据需要将脚本存储到不同的设备当中,调用简单方便,有利于通过客户端直接实现轻量化的服务编排。
这里所述顺序包括:串行、并行、循环、分支,可以根据实际需求进行不同的顺序的组合。具体选择哪种顺序,需要用户根据自己的实际需求确定,结合图3a、图3b、图3c举例说明。
图3a为本申请实施例提供的执行业务操作的串行流程的示意图。串行的顺序执行,可以是第一服务组件完成业务操作后,将业务操作结果和服务编排脚本生成新的服务请求,发送到第二服务组件,第二服务组件根据第一服务组件返回的服务请求继续执行,完成业务操作后继续将业务操作结果和服务编排脚本发送给其他服务组件,依次类推的执行;
图3b为本申请实施例提供的执行业务操作的并行流程的示意图,并行的顺序执行,可以是多个服务组件同时执行业务操作,并将完成的多个业务操作结果和服务编排脚本发送给其他服务组件或者直接返回到客户端;
图3c为本申请实施例提供的执行业务操作的分支流程的示意图,分支的顺序执行,是指可以根据事件操作、判断条件或异常处理等作为操作的分支节点,根据分支节点的操作结果调用服务组件;
循环的顺序执行,可以是单独一个服务组件的多次循环,也可以是多个服务组件共同组成的一个循环的业务操作,该多个服务组件之间又可以包含串行、并行、循环或分支等操作。
在本申请实施例中,采用的是去中心化的服务组件,具有更好的稳定性,不会因其中一个节点的故障而影响到整个微服务架构的正常运行;同时,采用去中心化的服务组件中各个组件都是细粒度的服务组件,是最小功能单元,每个服务组件中包括网关组件和业务组件,方便实现业务组件的本地调用,能够有效缩短服务请求的响应时间;实现客户端只需发送一条服务请求即可完成一项涉及多个服务组件的服务,可以减少客户端发送服务请求的次数,可以减少客户端等待服务的时间,可以减少客户端的网络流量的损耗,从而有效的提升用户体验。
基于相同的发明构思,本实施例还提供一种基于服务编排的服务请求方法,如图4所示,图4为本申请实施例提供的一种基于服务编排服务请求方法的流程示意图。
图4中的流程可以包括以下步骤:
步骤S21,客户端发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据。
服务编排数据按照内容划分,可以是服务编排脚本的标识信息,对应的将该服务编排脚本的标识信息指定的服务编排脚本存储在对应的服务组件中;还可以是服务编排脚本,该服务编排脚本可以直接存储在客户端中。
服务编排数据按照生成阶段划分,可以是预定义服务编排数据,即根据服务请求的类型,定义好为了完成该服务需要调用的第一服务组件、以及相配合的一个或多个第二服务组件,和各个服务组件之间执行业务操作的顺序;还可以是实时生成的编排数据,即所述客户端根据服务请求,获取所需要的多个服务组件,在本地对多个服务组件的服务顺序进行编排,生成服务编排数据。
步骤S22,接收所述第一服务组件和/或第二服务组件返回的业务操作结果。
由于第一服务组件或各第二服务组件都是细粒度的组件,完成客户端提出的一项服务,需要调用多个服务组件执行;那么,可以通过第一服务组件或一个第二服务组件返回业务操作结果,还可以是通过第一服务组件和多个第二服务组件同时返回业务操作结果。
客户端发出的服务请求,根据该服务请求获得对应的服务编排数据,该服务编排数据的主要作用是多个服务组件的执行顺序进行编排,实现客户端只需发送一条服务请求即可完成一项涉及多个服务组件的服务,可以减少客户端发送服务请求的次数,可以减少客户端等待服务的时间、减少客户端的网络流量的损耗,有效的提升用户体验。
基于相同的发明构思,本申请还提供了一种基于服务编排的服务提供装置,如图5所示,图5为本申请实施例提供的一种基于服务编排的服务提供装置示意图。
该装置位于第一服务组件中,装置包括:
接收模块11,接收客户端发送的服务请求,所述服务请求携带服务编排数据;具体可以包括:第一服务组件中的接收模块11接收客户端发送的服务请求;在通过第一服务组件中的网关组件将该服务请求中的网络协议进行转换,将该服务请求进行序列化操作,转换为第一服务组件中的业务组件能够识别和执行的请求数据。为后续调用其他服务组件和本地调用业务组件执行业务操作做准备。
服务模块12,根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务;
其中,服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
在服务编排数据所包含的内容不同的情况下,实现服务编排数据调用方式也可以不同;具体地,服务编排数据为:服务编排脚本和/或所述服务编排脚本的标识信息;
当所述服务编排数据为服务编排脚本的标识信息时,根据服务编排数据指定的执行业务操作的顺序,使第一服务组件配合一个或多个第二服务组件执行业务操作,具体可以包括:服务模块12根据服务请求携带的服务编排脚本的标识信息,从第一服务组件本地调用服务编排脚本;根据服务编排脚本,配合一个或多个第二服务组件执行业务操作。
当服务编排数据为服务编排脚本时,客户端直接发送服务编排脚本到第一服务组件,然后通过服务模块12获取并执行该服务编排脚本。
服务模块12位于业务组件,根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,具体地,网关组件调用业务组件中的服务模块12执行业务操作;
根据服务编排数据指定的顺序,将业务操作结果和服务编排数据发送给各所述第二服务组件,以便于包括该第二服务组件在内的一个或多个第二服务组件根据所述顺序,执行业务操作;进一步的,一个或多个第二服务组件根据业务操作顺序,执行业务操作,得到对应的业务操作结果,再次根据所述服务编排数据指定的所述顺序,将该业务操作结果和服务编排数据生成服务请求,继续发送给第一服务组件和/或至少一个第二服务组件;服务组件根据服务编排数据的指定的顺序,依次逐步执行,直到完成所有操作指令,第一服务组件和/或所述第二服务组件向所述客户端返回最终的业务操作结果。
所述顺序包括以下一种或多种的组合:串行、并行、循环、分支。可以根据实际需求进行不同的顺序的组合。具体选择哪种顺序,需要用户根据自己的实际需求确定。
根据接收到的服务请求和该服务请求所携带的服务编排数据,编排服务组件的执行顺序,实现客户端只需发送一条服务请求即可完成一项涉及多个服务组件的服务,可以减少客户端发送服务请求的次数,可以减少客户端等待服务的时间,可以减少客户端的网络流量的损耗,从而有效的提升用户的体验。
基于相同的发明构思,本申请还提供了一种基于服务编排的服务请求装置,如图6所示,图6为本申请实施例提供的一种基于服务编排的服务请求装置示意图。
该装置位于客户端,装置包括:客户端发送模块21和客户端接收模块22;
客户端发送模块21,发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据;具体来说,客户端发起某项服务后,将服务请求与对应的服务编排数据相关联,携带该服务编排数据的服务请求通过客户端发送模块21发送到第一服务组件。其中,服务编排数据可以是服务编排脚本或服务编排脚本的标识信息,即发送的服务请求中所携带的服务编排数据可以是服务编排脚本本身,直接发送到对应的第一服务组件,并通过各服务组件执行;还可以是服务编排脚本的ID,客户端发送该服务编排脚本的ID给第一服务组件,该第一服务组件根据该服务编排脚本的ID调用本地对应的服务编排脚本。
客户端接收模块22,接收第一服务组件和/或第二服务组件的返回的业务操作结果;
其中,所述服务编排数据指定了第一服务组件和各第二服务组件的执行业务操作的顺序。进一步地,在本装置中还包括服务编排模块23,用于生成服务编排数据,以携带在服务请求中;该服务编排模块23接收到客户端发起的某项服务的请求后,提取出为了完成该服务所需要的各服务组件,进一步对这些服务组件的执行顺序进行实时的服务编排,避免了预定义服务编排数据的操作,节约是服务编排数据的存储空间,有利于轻量化的服务编排的实现;当然,根据实际需要也可以将常用的服务编排数据存储在该服务编排模块23中,避免了重复频繁的编排操作。
基于上述的发明构思,为了更好的说明本发明构思,下面具体说明一种去中心化API网关服务编排的实现方案:
图7为本申请实施例提供的去中心化API网关服务编排的流程示意图,图7中的流程包括如下步骤:
步骤S31,客户端发送服务请求,该服务请求中携带服务编排数据,首先服务请求到达第一服务组件31,在第一服务组件31中的网关组件31a中进行网络协议转换和请求内容的反序列化操作后,进一步调用第一服务组件31中的本地业务组件31b完成业务操作,并执行步骤S32,判断该操作是否完成,如果完成,则将该操作结果返回客户端;如果没有完成操作,则如步骤S33,将该操作结果和服务请求一起发给下一个服务组件,即第二服务组件32,作为第二服务组件32的服务请求,继续按照服务编排数据中的顺序执行。
第二服务组件32接收到请求后,如步骤S14所示,执行循环操作,完成规定次数的循环操作后,将循环操作的结果返回到第一服务组件31的网关组件31a中。如步骤S15所示,网关组件31a获得两次操作的结果,将两次操作结果返回给客户端。在确认完成上述步骤后,执行步骤S16,异步调用服务组件同步业务状态,即通过第三服务组件33的网关组件33a,同步业务状态。
与图7所示的去中心化API网关服务编排的流程示意图相对应的,图8为本申请实施例提供的去中心化API网关服务编排的系统结构示意图。服务编排装置43设置在客户端41当中,客户端41中还有客户端容器42,作为与多个网关组件实现连接的统一接口。第一服务组件31中包括网关组件31a、业务组件31b,第二服务组件32中包括网关组件32a、业务组件32b,第三服务组件33中包括网关组件33a和业务组件33b,当需要对服务编排时,执行步骤如图8中标注的步骤序号,首先客户端41发送服务请求到第一服务组件31,在第一服务组件31中的网关组件31a中完成网络协议转换和反序列化后,调用本地业务组件31b,对业务结果进行判断,如果成功则将该业务结果与服务请求一起发送给第二服务组件32中的网关组件32a,网关组件32a调用本地业务组件32b执行循环操作,完成设定的循环次数后,然后将循环操作的结果返回给第一服务组件31中的网关组件31a;第一服务组件31中的网关组件31a将两次操作结果同时返回给客户端21;当第一服务组件31完成处理后,异步调用第三服务组件33,同步业务状态和相关信息,该同步过程需要客户端先发送同步请求到第一服务组件31,再通过第一服务组件31调用第三服务组件33实现同步业务状态的操作。在本图中,服务编排装置43设置在客户端41中,这样在客户端有服务请求时,可以直接调用服务编排装置43,在客户端41直接生成服务编排脚本,实现轻量级的服务编排。
基于同样的发明思路,本申请实施例还提供了对应的一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为第一服务组件接收客户端发送的服务请求,所述服务请求携带服务编排数据;
根据所述服务编排数据,配合一个或多个第二服务组件执行业务操作,以向所述客户端提供所述服务请求对应的服务;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的执行业务操作的顺序。
基于同样的发明思路,本申请实施例还提供了另一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
为客户端发送服务请求到第一服务组件,以便所述第一服务组件配合一个或多个第二服务组件执行业务操作,所述服务请求携带服务编排数据;
接收所述第一服务组件和/或所述第二服务组件返回的业务操作结果;
其中,所述服务编排数据指定了所述第一服务组件和各所述第二服务组件的业务操作顺序。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的装置、电子设备、非易失性计算机存储介质与方法是对应的,因此,装置、电子设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、电子设备、非易失性计算机存储介质的有益技术效果。
本申请实施例提供的装置与方法是一一对应的,因此,装置也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。