CN112860235A - 处理文本的方法、装置、设备和存储介质 - Google Patents

处理文本的方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN112860235A
CN112860235A CN202110157697.3A CN202110157697A CN112860235A CN 112860235 A CN112860235 A CN 112860235A CN 202110157697 A CN202110157697 A CN 202110157697A CN 112860235 A CN112860235 A CN 112860235A
Authority
CN
China
Prior art keywords
bytecode
target object
text
cache
service
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.)
Granted
Application number
CN202110157697.3A
Other languages
English (en)
Other versions
CN112860235B (zh
Inventor
侯树成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110157697.3A priority Critical patent/CN112860235B/zh
Publication of CN112860235A publication Critical patent/CN112860235A/zh
Application granted granted Critical
Publication of CN112860235B publication Critical patent/CN112860235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开公开了一种处理文本的方法、装置、设备和存储介质,涉及互联网技术领域,尤其涉及云服务技术领域和信息流技术领域。具体实现方案为:获取配置信息和待加载字节码文本,配置信息包括针对至少一个预定对象的配置项;确定至少一个预定对象中待加载字节码文本调用的对象,作为目标对象;根据针对目标对象的配置项,生成针对目标对象的降级服务的字节码;在待加载字节码文本中插入针对目标对象的降级服务的字节码,得到增强后字节码文本;以及加载增强后字节码文本,以将增强后字节码文本存储至预定空间。

Description

处理文本的方法、装置、设备和存储介质
技术领域
本公开涉及互联网技术领域,尤其涉及云服务和信息流技术领域,更具体地涉及一种处理文本的方法、装置、设备、介质和程序产品。
背景技术
随着互联网技术的发展,对于互联网应用产品,经常会存在高并发、大流量需求的情况。为了便于应用产品的开发部署,由多个微服务组成一个应用产品的方案已成为应用产品开发的主流趋势。
应用产品中多个微服务彼此之间具有关联关系,为了保证应用产品的高可用性和产品弹性,需要在开发阶段进行大量的代码部署工作,例如为多个微服务中重要程度高或影响力大的微服务单独开发弹性逻辑。随着应用产品的功能多样化,应用产品包括的微服务量增多,应用产品的开发和维护难度明显增大。
发明内容
提供了一种用于降低开发成本的处理文本的方法、装置、设备、介质和程序产品。
根据第一方面,提供了一种处理文本的方法,包括:获取配置信息和待加载字节码文本,配置信息包括针对至少一个预定对象的配置项;确定至少一个预定对象中待加载字节码文本调用的对象,作为目标对象;根据针对目标对象的配置项,生成针对目标对象的降级服务的字节码;在待加载字节码文本中插入针对目标对象的降级服务的字节码,得到增强后字节码文本;以及加载增强后字节码文本,以将增强后字节码文本存储至预定空间。
根据第二方面,提供了一种处理文本的装置,包括:信息获取模块,用于获取配置信息和待加载字节码文本,配置信息包括针对至少一个预定对象的配置项;对象确定模块,用于确定至少一个预定对象中待加载字节码文本调用的对象,作为目标对象;字节码生成模块,用于根据针对目标对象的配置项,生成针对目标对象的降级服务的字节码;字节码插入模块,用于在待加载字节码文本中插入针对目标对象的降级服务的字节码,得到增强后字节码文本;以及文本加载模块,用于加载增强后字节码文本,以将增强后字节码文本存储至预定空间。
根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的处理文本的方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的处理文本的方法。
根据第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开提供的处理文本的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的处理文本的方法、装置、设备和存储介质的应用场景示意图;
图2是根据本公开实施例的处理文本的方法的流程示意图;
图3是根据本公开实施例的处理文本的方法的原理示意图;
图4是根据本公开实施例的确定目标对象的运行信息的原理示意图;
图5是根据本公开另一实施例的处理文本的方法的原理示意图;
图6是根据本公开再一实施例的处理文本的方法的原理示意图;
图7是根据本公开实施例的处理文本的装置的结构框图;以及
图8是用来实现本公开实施例的处理文本的方法的电子设备框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开提供了一种处理文本的方法,该方法在将新增的微服务开发代码加载至支持微服务运行的虚拟机时,可以获取配置信息和待加载字节码文本,配置信息包括针对至少一个预定对象的配置项。解析获取的配置信息,可以确定至少一个预定对象中待加载字节码文本调用的对象为目标对象,并从配置信息中挑选针对目标对象的配置项。根据针对目标对象的配置项可以生成针对目标对象的降级服务的字节码,并在待加载字节码文本中插入针对目标对象的降级服务的字节码,以得到增强后字节码文本。通过加载增强后字节码文本,可以将增强后字节码文本存储至预定空间,从而在微服务运行时可以运行增强后字节码,并根据需求来运行为微服务增加的降级服务。
以下将结合图1对本公开提供的方法和装置的应用场景进行描述。
图1是根据本公开实施例的处理文本的方法、装置、设备和存储介质的应用场景图。
如图1所示,该实施例的应用场景100例如可以包括第一终端设备110、服务器120和第二终端设备130。第一终端设备110与服务器120之间,服务器120与第二终端设备130之间例如可以通过网络通信,网络例如可以包括无线或有线通信链路等。
示例性地,第一终端设备110例如可以安装有各种客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。该第一终端设备110例如可以为具有显示屏并且具有处理功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便捷计算机和台式计算机等等。第一终端设备110响应于用户对运行的客户端应用展示的页面的操作,向服务器120发送页面请求,并接收服务器120响应于该页面请求反馈的文字、图像或音视频等信息。
示例性地,服务器120可以是提供各种服务的服务器,例如对用户利用第一终端设备110所浏览的网站或所使用的客户端应用提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的页面请求等进行响应,并将响应结果(例如根据页面请求获取或生成的网页、文字、图像或音视频等)反馈给第一终端设备110。
示例性地,如图1所示,服务器120例如可以安装有用于支持第一终端设备110所浏览的网站或所使用的客户端应用运行的虚拟机140。服务器120可以经由虚拟机140执行针对客户端应用的代码来实现对页面请求的响应。其中,针对客户端应用的代码例如可以通过对第二终端设备130提供的脚本编译得到。对脚本的编译用于将应用开发人员经由第二终端设备130编写的脚本转换为服务器120能够识别的文本。
示例性地,在应用开发人员采用Java语言编写脚本时,可以得到如图1所示的.java文件150。通过对.java文件150编译,可以得到虚拟机140(例如Java虚拟机(JavaVirtual Machine,JVM))能够识别的.class文件160。在服务器编译得到.class文件160后,该实施例可以采用类加载器170将.class文件160加载至虚拟机140中,以便于在第一终端设备110启动客户端应用时,根据加载的.class文件生成实例化对象,并对第一终端设备110发送的页面请求进行响应处理。其中,类加载器170可以采用相关技术中已有的类加载器或者开发人员根据需求自定义的类加载器。加载器负责将网络或磁盘上的.class文件加载到服务器内存中,并为该.class文件生成对应的java.lang.class对象。
根据本公开的实施例,第一终端设备110安装的客户端应用例如可以采用微服务架构(Microservice Architecture)构成,即客户端应用由多个微服务组成,多个微服务之间例如可以通过事件流和消息代理的组合相互通信。该微服务架构旨在通过将功能分解到各个离散的微服务中以实现对客户端应用中多个功能的解耦,降低客户端应用系统的耦合性,从而为用户提供更加灵活的服务支持。
根据本公开的实施例,在采用微服务架构时,若某个微服务的调用响应时间过长或者不可用,与该某个微服务具有关联的其他微服务可能无法正常调用。同时该某个微服务的调用会占用越来越多的系统资源,进而会使得客户端应用运行异常。为了提高客户端应用运行的稳定性及微服务的高可用性,应用开发人员例如可以在脚本中编译针对微服务或针对微服务调用的方法的降级服务代码。以在降级服务所针对的微服务或方法调用异常时,根据降级服务代码来支持客户端应用的运行。
需要说明的是,本公开提供的处理文本的方法可以由服务器120执行。相应地,本公开提供的处理文本的装置可以设置在服务器120中。对脚本的编译例如可以由服务器120执行,也可以由第二终端设备130执行。在由第二终端设备130对客户端应用的脚本进行编译时,第二终端设备130可以将编译得到的.class文件经由网络发送给服务器120。
应该理解,图1中的第一终端设备、服务器、第二终端设备和虚拟机的类型和数目仅仅是示意性的。根据实现需要,可以具有任意类型和数目的第一终端设备、服务器、第二终端设备和虚拟机。
以下将结合图1描述的应用场景,通过图2~图6对本公开提供的处理文本的方法进行详细描述。
图2是根据本公开实施例的处理文本的方法的流程示意图。
如图2所示,该实施例的处理文本的方法200可以包括操作S210、操作S230、操作S250、操作S270和操作S290。该处理文本的方法200可以由前文描述的服务器执行。
在操作S210,获取配置信息和待加载字节码文本,配置信息包括针对至少一个预定对象的配置项。
根据本公开的实施例,在向虚拟机中加载微服务的字节码文本(例如.class文件)时,例如可以获取开发人员提供的配置信息。其中,待加载字节码文本可以为支持客户端应用中任意一个微服务运行的代码文本。配置信息包括针对微服务和/或方法的配置项,即,预定对象可以为微服务和/或方法。
示例性地,当预定对象为微服务时,预定对象可以包括待加载字节码文本所提供的服务,也可以包括待加载字节码文本所提供的服务归属的客户端应用所包括的其他微服务。当预定对象为方法时,预定对象可以为待加载字节码文本提供的服务所归属的客户端应用包括的多个微服务中,任意一个微服务的字节码文本中定义的方法,或任意一个字节码文本中调用的方法。
根据本公开的实施例,配置信息例如可以通过解析与待加载字节码文本同时提供的配置文本得到。配置文本中可以定义有针对预定对象的配置项,及配置项的取值。对配置文本的解析例如可以采用字符识别方法,以识别得到配置文本中配置项的名称。与配置项位于同一行的代码为配置项的取值。可以理解的是,上述对配置文本解析的方法仅作为示例以利于理解本公开,本公开对此不做限定。
示例性地,在预定对象为方法,且针对方法的降级服务的类型为缓存降级时,配置文本中例如可以包括以下代码。可以理解的是,在预定对象为微服务时,或者降级服务的类型为其他类型(例如限流服务等)时,本领域技术人员可以根据实际需求,采用与以下代码类似的代码来设定配置文本,本公开对此不再赘述。
Figure BDA0002933728460000061
解析以上配置文本得到的配置项、配置项的取值如下表所示,为了便于理解各配置项,下表中列出了各配置项的配置说明。
Figure BDA0002933728460000071
在操作S230,确定至少一个预定对象中待加载字节码文本调用的对象,作为目标对象。
根据本公开的实施例,该操作S230例如可以通过前述对配置文本的解析,得到配置信息所针对的预定对象。通过对待加载字节码文本的解析,可以提取到待加载字节码文本中调用的对象。然后将配置信息所针对的预定对象与从待加载字节码文本中提取的每个对象进行匹配,若存在匹配成功的预定对象,则将该预定对象作为目标对象。
示例性地,由于JVM在加载字节码文本(.class文件)时,先加载类中的所有静态成员(包括方法、变量、静态代码块等),因此可以通过类加载器获取到待加载字节码文本中调用的对象。例如,类加载器获取到的信息可以为唯一表示调用的对象的方法名和微服务标识。类似地,对配置文本解析到的信息为预定对象的名称或对象标识。对象之间是否匹配例如可以根据对象之间的相似度大小来确定。其中,对象之间的相似度例如可以采用余弦距离等现有指标来表示,本公开对此不做限定。
在操作S250,根据针对目标对象的配置项,生成针对目标对象的降级服务的字节码。
根据本公开的实施例,该操作可以将针对目标对象的配置项作为降级服务的预定模板中变量的取值,得到针对目标对象的降级服务的字节码。
根据本公开的实施例,配置项例如可以包括降级类型,该实施例在生成降级服务的字节码时,可以先确定与降级类型匹配的预定模板,然后将配置项作为该确定的预定模板中变量的取值。
根据本公开的实施例,在生成降级服务的字节码时,可以为降级服务的处理逻辑定义方法,将针对处理逻辑的代码作为方法体的定义代码,以此便于对降级服务进行调用。相应地,操作S250在生成针对目标对象的降级服务的字节码时,可以根据目标对象的对象名,生成定义降级服务的方法名称的第一字节码。根据针对目标对象的配置项,生成定义降级服务的方法体的第二字节码。
示例性地,在生成第一字节码时,可以将目标对象的对象名作为方法名称的一部分,以此将降级服务与降级服务所针对的目标对象进行关联。例如,可以将降级服务的方法名称定义为xx_fallback,其中,“xx”为降级服务所针对的目标对象的对象名。
在操作S270,在待加载字节码文本中插入针对目标对象的降级服务的字节码,得到增强后字节码文本。
根据本公开的实施例,可以将针对目标对象的降级服务的字节码插入至待加载字节码文本的文本末尾。或者可以根据实际需求将针对目标对象的降级服务的字节码插入至待加载字节码文本的任意位置处。
根据本公开的实施例,可以采用ASM框架来实现对待加载字节码文本的修改。该ASM框架提供了核心类ClassReader和ClassWriter。其中,ClassReader用来解析待加载字节码文本,可以解析得到待加载字节码文本中的类名、方法名、父类名等,以便于确定目标对象,为针对目标对象的降级服务的字节码的生成提供条件。ClassWriter用来生成针对目标对象的降级服务的字节码。
根据本公开的实施例,可以采用自定义的代理来对配置文本进行解析,并将生成的针对目标对象的降级服务的字节码插入到待加载字节码文本中。其中,自定义的代理例如可以为代码生成库(Code Generation Library,CGLib)动态代理等。
可以理解的是,上述采用的代理和对待加载字节码文本进行修改的框架仅作为示例以利于理解本公开,本公开可以根据实际需求,采用相关技术中的任意方法来实现对待加载字节码文本的增强,得到增强后字节码文本。
在操作S290,加载增强后字节码文本,以将增强后字节码文本存储至预定空间。
根据本公开的实施例,可以采用类加载器对增强后字节码文本进行加载。具体地,可以采用类加载器从磁盘中查找到待加载字节码文本,并经由前述操作在查找到的待加载字节码文本中插入针对目标对象的降级服务的字节码。随之对增强后字节码文本进行数据正确性的检查,并为增强后字节码文本中类的静态变量分配存储空间。通过对分配了存储空间的静态变量进行初始化,来完成对增强后字节码文本的加载,将增强后字节码文本存储至预定空间。其中,预定空间例如可以为用于运行增强后字节码文本的虚拟机所在的服务器的内存。
本公开实施例通过在加载字节码文本的过程中,根据配置信息向待加载字节码文本添加针对目标对象的降级服务的字节码,可以实现降级服务处理逻辑的自动生成。尤其对于通用的降级逻辑,仅需应用开发人员提供配置信息,无需预先在JAR包中写入降级服务处理逻辑。因此可以在一定程度上降低应用开发过程中代码编写的工作量,提高应用开发效率。同时,通过在待加载字节码文本中添加降级服务的字节码,可以有效保证待加载字节码文本所提供服务的高可用性,便于在所提供服务异常时,向用户提供降级服务。
根据本公开的实施例,在获取到前述配置文本时,例如还可以先判断配置项enabled的取值是否为true,若为true,则可以确定对配置文本中规定的方法(即配置项name的取值对应的方法)进行降级服务的配置。采用前述操作来实现降级服务的配置。若enabled的取值为false,则跳过前述操作,采用类加载器将待加载字节码文本从磁盘读入至虚拟机所在的服务器的内存中。
根据本公开的实施例,在通过前述操作未找到与待加载字节码文本中调用的对象匹配的预定对象时,可以跳过前述操作S250和操作S270,采用类加载器将待加载字节码文本从磁盘读入至虚拟机所在的服务器的内存中。
根据本公开的实施例,在客户端应用脚本为Java语言编写的脚本的情况下,加载待加载字节码文本时,例如可以先将自定义代理挂接到虚拟机上,通过调用自定义代理中类的premain方法,获取增强器(Instrumentation),便于后续使用。然后在premain方法中,对虚拟机加载的所有类进行过滤,识别到目标对象所调用的类。在对该些类进行加载时,应用多个转换器(transformer)来对类做修改。修改完成后,修改完的类的二进制内容会被虚拟机加载使用。其中,使用Instrumentation,开发者可以在构建一个独立于应用程序的代理程序时,用来监测和协助运行在JVM上的程序,甚至能够替换和修改某些类的定义,有了这样的功能,开发者可以实现更为灵活的运行时虚拟机监控和Java类操作。例如,在Instrumentation的实现当中,存在一个JVM工具界面(JVM Tool Interface,JVMTI)的代理程序,通过调用JVMTI当中Java类相关的函数来完成Java类的动态操作。
根据本公开的实施例,在加载的字节码文本中有针对目标对象的降级服务的字节码时,可以在目标对象的调用异常时,运行降级服务的字节码,以向需要调用目标对象的请求提供降级服务。
图3是根据本公开实施例的处理文本的方法的原理示意图。
如图3所示,在该实施例300中,终端设备310可以响应于用户320对网页页面或客户端应用页面的操作,向应用服务器330发送页面请求(即执行操作S311)。
应用服务器330在接收到页面请求后,可以先执行操作S321,确定页面请求是否为针对目标对象的页面请求。例如可以先根据页面请求中的微服务标识来确定反馈页面请求所需调用的微服务。在微服务为目标对象或微服务中调用的方法包括目标对象时,确定接收的页面请求为调用目标对象的页面请求。其中,可以根据页面请求中的微服务标识查询虚拟机加载的降级服务的类列表,在列表中存在命名包括微服务标识对应的微服务名称时,确定所需调用的微服务为目标对象。类似地,可以通过微服务标识来查询虚拟机加载的类列表中属于所需调用的微服务中的方法类,然后将查询的方法类的方法名作为备选方法名,查询降级服务的类列表中是否存在命名包括备选方法名的类。若查询到命名包括某个备选方法名的类,则确定采用该某个备选方法名的方法为目标对象。
在确定页面请求为调用目标对象的页面请求时,该实施例可以执行操作S322,确定目标对象的运行是否正常,即确定目标对象的运行状态。具体地,可以根据对前述确定的目标对象的历史调用信息来确定目标对象的运行状态。例如,可以设定调用目标对象得到反馈信息的时长阈值。若根据历史调用信息确定目标对象最近一次调用所需的时长大于该时长阈值的情况下,确定目标对象运行异常。否则确定目标对象运行正常。
在目标对象运行正常,即运行状态指示目标对象运行正常的情况下,执行操作S323,运行预定空间存储的增强后字节码文本中调用目标对象的字节码。在目标对象运行异常,即运行状态指示目标对象运行异常的情况下,执行操作S324,运行预定空间存储的增强后字节码文本中针对目标对象的降级服务的字节码。
根据本公开的实施例,虚拟机例如可以基于栈的体系结构来执行字节码。例如,先建立字节码执行线程,线程创建后,会产生程序计数器和栈。程序计数器存放下一条要执行的指令在字节码文本中的偏移量。在该实施例中,例如可以先扫描加载的字节码文本,定位得到调用目标对象字节码的起始位置和针对目标对象的降级服务的字节码的起始位置。在目标状态运行异常时,将针对目标对象的降级服务的字节码的起始位置作为初始偏移量。在目标状态运行正常时,将调用目标对象字节码的起始位置作为初始偏移量。
在运行调用目标对象的字节码后,例如可以将运行得到的第一反馈信息发送给终端设备310,以使得终端设备展示第一反馈信息(执行操作S312)。在运行针对目标对象的降级服务的字节码后,可以将运行得到的第二反馈信息发送给终端设备310,以使得终端设备展示第二反馈信息(执行操作S313)。
示例性地,在页面请求为请求地区A的天气预报时,第一反馈信息例如可以为地区A的实时天气预报,第二反馈信息例如可以为预设定的默认信息,例如指示用户稍后查询的提示信息。该默认信息例如可以为应用开发人员在配置文本中配置的信息。
根据本公开的实施例,在页面请求需要由微服务a处理,微服务a处理页面请求的过程中需要调用微服务b,且微服务b包括目标对象的情况下,通过运行针对目标对象的降级服务的字节码,微服务b例如可以向微服务a反馈默认信息,使得微服务a根据该默认信息来确定响应于页面请求的反馈信息,得到第二反馈信息。通过运行调用目标对象的字节码后,微服务b向微服务a反馈的信息通常不同于默认信息,此时微服务a确定的反馈信息为不同于第二反馈信息的第一反馈信息。
本公开实施例通过在目标对象运行异常时,通过运行针对目标对象的降级服务的字节码,可以向调用目标对象的微服务或终端设备反馈默认信息,相较于相关技术,可以在客户端应用采用微服务架构时,避免因目标对象运行异常导致的客户端应用运行异常、系统崩溃等效应。
图4是根据本公开实施例的确定目标对象的运行信息的原理示意图。
根据本公开的实施例,可以采用断路器(Circuit Breaker)来监控目标对象的运行状态。其中,断路器是软件开发的设计模式,用于侦测错误,并避免不断地触发相同的错误。具体可以将目标对象封装在一个可以监控故障的断路器对象中,当故障达到一定阈值,断路器将跳闸(trip,处于打开状态),则所有后继调用将不会发往受保护的目标对象而由断路器对象返回错误。
示例性地,本公开可以将前述至少一个预定对象中的每个预定对象封装在一个可以监控故障的断路器对象中,预定对象与断路器对象一一对应。前述在确定目标对象的运行状态时,可以先获取与目标对象对应的断路器对象的状态,并根据该断路器对象的状态来确定目标对象是否运行异常。
示例性地,如图4所示的实施例400,在终端设备410响应于用户420对网页页面或客户端应用页面的操作,向虚拟机430所在的应用服务器发送页面请求(执行操作S411)。采用前文类似的方式可以确定页面请求是否为针对目标对象的页面请求。在确定为针对目标对象的页面请求时,针对目标对象的断路器431可以拦截该页面请求,并由针对目标对象的断路器431获取自身状态(执行操作S421)。根据该断路器431的自身状态确定目标对象的运行状态。其中,针对目标对象的断路器431与目标对象所属的微服务432运行于同一虚拟机430上。
示例性地,断路器431可以执行操作S422,判断自身状态是否为打开状态。若为打开状态,则确定目标对象运行异常。若为非打开状态,则确定目标对象运行正常。其中,在断路器431的状态为非打开状态时,可以将拦截的页面请求发送给目标对象所属的微服务432,由微服务432接收页面请求(执行操作S431),并执行操作S432,运行预定空间存储的增强后字节码文本中调用目标对象的字节码。在断路器431的状态为打开状态时,断路器可以采用降级服务对页面请求进行反馈。例如执行操作S423,运行预定存储空间存储的增强后字节码文本中针对目标对象的降级服务的字节码。其中,断路器例如可以根据目标对象的名称,查找加载的字节码文本中查找方法名包括该目标对象的名称的方法,并运行定义该方法的方法体的字节码,以实现对针对目标对象的降级服务的字节码的运行。
示例性地,在运行操作S432后,微服务432可以向终端设备410发送第一反馈信息,以使得终端设备410展示该第一反馈信息(执行操作S412)。在运行操作S423后,断路器431可以向终端设备410发送第二反馈信息,以使得终端设备410展示该第二反馈信息(执行操作S413)。
根据本公开的实施例,断路器例如可以具有关闭状态、打开状态和半打开状态共三种状态。以下将结合该三种状态对断路器的工作原理进行解释:
关闭状态:当断路器所针对的目标对象一切正常时,断路器保持闭合状态,所有调用都可以访问到服务。当故障数超过预定阈值时,断路器跳闸,并进入打开状态。
打开状态:执行降级服务为目标对象的调用返回默认信息。
打开状态超时后,断路器切换至半开状态,以测试目标对象的异常是否仍然存在。在半开状态下若对目标对象的单次调用失败,则断路器再次进入打开状态。如果单次调用成功,断路器则重置为正常关闭状态。
图5是根据本公开另一实施例的处理文本的方法的原理示意图。
根据本公开的实施例,前述配置信息中的配置项例如还可以包括降级类型,该降级类型可以包括缓存降级、限流降级等。其中,在降级服务为缓存降级时,可以在目标对象正常运行时,将目标对象所能提供的信息预先缓存至指定的存储空间。以在目标对象出现异常时将缓存信息作为页面请求的反馈信息。相较于仅向用户反馈默认信息的情况,可以在一定程度上提高用户体验。
示例性地,配置项还可以包括该指定的存储空间的缓存地址。在提供缓存降级的降级服务时,针对目标对象的降级服务的字节码可以包括:从缓存地址指示的存储空间获取缓存信息的读取字节码,以及将缓存信息作为页面请求的反馈信息的反馈字节码。如此,在目标对象运行异常时,通过运行该降级服务的字节码,可以将缓存信息发送给终端设备。
根据本公开的实施例,可以在目标对象响应于页面请求正常运行的情况下,将正常运行的反馈信息缓存至指定的存储空间。如此,无需将目标对象能够提供的所有信息预先缓存,可以在一定程度上避免对存储资源的浪费及计算资源的占用。相应地,在生成针对目标对象的降级服务的字节码的同时,还可以生成将目标对象的调用反馈信息缓存至缓存地址指示的存储空间的缓存字节码,并在待加载字节码文本中插入该缓存字节码。该缓存字节码的生成方法与降级服务的字节码的生成方法类似,可以先从配置信息中筛选出针对目标对象的存储地址,随后将存储地址作为预定缓存字节码模板的变量的值,得到缓存字节码。
示例性地,如图5所示,该实施例500可以根据针对目标对象的配置信息510生成降级服务字节码521和缓存字节码522。该降级服务字节码521和缓存字节码522可以插入待加载字节码文本中,从而得到增强后字节码文本530。其中缓存字节码522例如可以插入在待加载字节码文本中调用目标对象的字节码与调用其他对象的字节码之间,或者也可以插入在待加载字节码文本的末尾位置等任意的位置,本公开对此不做限定。如此,加载至运行于应用服务器540的虚拟机的字节码文本中不仅包括降级服务字节码521,还包括缓存字节码522。
示例性地,在前述实施例确定目标对象运行正常的情况下,在运行调用目标对象的字节码之后,加载了增强后字节码文本的虚拟机例如还可以获取运行调用目标对象的字节码得到的调用反馈信息。随后运行缓存字节码522,以将调用反馈信息缓存至缓存地址指示的存储空间。在前述实施例确定目标对象运行异常的情况下,加载了增强后字节码文本和断路器的虚拟机可以运行降级服务字节码521,以向用户提供降级服务。
示例性地,缓存字节码例如可以为将调用反馈信息序列化存储至缓存地址指示的存储空间的字节码。如此通过将调用反馈信息以序列化形式缓存,可以提高对存储空间的利用效率。相应地,运行读取字节码时的处理逻辑可以为从缓存地址指示的存储空间中读取数据,并将数据反序列化处理后得到页面请求的反馈信息。
根据本公开的实施例,在前述确定目标对象后,例如还可以在加载增强后字节码文本之前,向增强后字节码文本中调用目标对象的字节码添加标签,以指示针对目标对象的降级类型。例如,若降级类型为缓存降级,则该标签为1,若降级类型为限流降级,则该标签为0。相应地,在目标对象运行正常的情况下,虚拟机在执行调用目标对象的字节码时,可以先读取该字节码的标签,根据标签的值确定是否在运行完成调用目标对象的字节码后对反馈信息进行缓存。若标签指示缓存降级时,才运行缓存字节码,将调用反馈信息缓存至缓存地址指示的存储空间。通过该标签的设定,可以便于虚拟机确定运行缓存字节码的条件和时机。
根据本公开的实施例,不同微服务提供的信息的更新周期存在差异,例如,若微服务提供的信息为天气信息,则更新周期较长,若微服务提供的信息为交通信息,则更新周期较短。该实施例中,配置信息中针对预定对象的配置项例如还可以包括缓存周期,以此在目标对象运行正常时,可以根据该缓存周期对运行调用目标对象的字节码得到的反馈信息进行缓存。如此,在某一微服务提供的信息更新周期较长,且被重复调用的情况下,无需对反馈信息进行重复缓存,可以在一定程度上减少不必要的资源消耗。
示例性地,向调用目标对象的字节码添加的标签除了可以指示降级服务类型外,还可以用于指示缓存周期。相应地,在目标对象运行正常的情况下,通过运行缓存字节码,可以根据标签指示的缓存周期,将目标对象的调用反馈信息周期性地缓存至缓存地址指示的存储空间。则缓存字节码包括将目标对象的调用反馈信息根据缓存周期缓存至缓存地址指示的存储空间的代码。
根据本公开的实施例,根据实际需求,配置项例如还可以包括缓存类型,以根据实际需求将调用反馈信息缓存至数据库或远程字典服务(Remote Dictionary Server,Redis)数据库。其中,在存储至Redis数据库时,可以将页面请求作为key值,将调用反馈信息作为value值来对调用反馈信息进行存储。如此,在读取缓存信息时,可以以页面请求为依据查找匹配的信息作为反馈信息。
图6是根据本公开再一实施例的处理文本的方法的原理示意图。
根据本公开的实施例,该实施例的处理文本的方法例如还可以基于远程配置对加载后的字节码文本进行动态更改,以实现降级服务的动态增加、移除和修改。从而可以便于开发人员对降级服务进行灵活设置,以便于提高用户体验。
如图6所示,该实施例600中,云端610响应于应用开发人员的操作得到的配置更新信息630,例如可以由云端610经由网络推送给应用服务器620。应用服务器620可以响应于获取到云端610推送的配置更新信息,根据配置更新信息,确定针对目标对象的更新后配置项640。随后根据更新后配置项640,更改针对目标对象的降级服务的字节码。其中,更改针对目标对象的降级服务的字节码时,例如可以采用动态代码演化虚拟机650(Dynamic CodeEvolution Virtual Machine,DCEVM)来实现对运行于应用服务器620中的虚拟机所加载的字节码的动态更改。其中,DCEVM为JVM的补丁程序,目的是实现运行时的类替换。
示例性地,云端发送的配置更新信息可以为文本形式,则该实施例可以采用与前文描述的解析配置文本的方法类似的方法对接收到的文本进行解析,从而解析得到配置项和配置项的取值。由DCEVM根据该解析到的配置项额配置项的取值,对运行环境下加载的字节码文本进行更改。
基于前文描述的处理文本的方法,本公开还提供了一种处理文本的装置。以下将结合图7对该装置进行详细描述。
图7是根据本公开实施例的处理文本的装置的结构框图。
如图7所示,该实施例的处理文本的装置700可以包括信息获取模块710、对象确定模块730、字节码生成模块750、字节码插入模块770和文本加载模块790。
信息获取模块710用于获取配置信息和待加载字节码文本,该配置信息包括针对至少一个预定对象的配置项。在一实施例中,信息获取模块710可以用于执行前文描述的操作S210,在此不再赘述。
对象确定模块730用于确定至少一个预定对象中待加载字节码文本调用的对象,作为目标对象。在一实施例中,对象确定模块730可以用于执行前文描述的操作S230,在此不再赘述。
字节码生成模块750用于根据针对目标对象的配置项,生成针对目标对象的降级服务的字节码。在一实施例中,字节码生成模块750可以用于执行前文描述的操作S250,在此不再赘述。
字节码插入模块770用于在待加载字节码文本中插入针对目标对象的降级服务的字节码,得到增强后字节码文本。在一实施例中,字节码插入模块770可以用于执行前文描述的操作S270,在此不再赘述。
文本加载模块790用于加载增强后字节码文本,以将增强后字节码文本存储至预定空间。在一实施例中,文本加载模块790可以用于执行前文描述的操作S290,在此不再赘述。
根据本公开的实施例,字节码生成模块750例如可以包括名称定义子模块和方法体定义子模块。名称定义子模块用于根据目标对象的对象名,生成定义降级服务的方法名称的第一字节码,该方法名称包括对象名。方法体定义子模块用于根据针对目标对象的配置项,生成定义降级服务的方法体的第二字节码。
根据本公开的实施例,上述处理文本的装置700例如还可以包括运行状态确定模块、第一字节码运行模块和第二字节码运行模块。其中,运行状态确定模块用于响应于接收到调用目标对象的页面请求,确定目标对象的运行状态。第一字节码运行模块用于在运行状态指示目标对象运行正常的情况下,运行预定空间存储的增强后字节码文本中调用目标对象的字节码。第二字节码运行模块用于在运行状态指示目标对象运行异常的情况下,运行存储空间存储的增强后字节码文本中针对目标对象的降级服务的字节码。
根据本公开的实施例,运行状态确定模块可以包括断路器状态获取子模块和状态确定子模块,断路器状态获取子模块用于获取针对目标对象的断路器的状态,该断路器用于监控目标对象的运行信息。状态确定子模块用于在断路器的状态为打开状态时,确定目标对象运行异常。
根据本公开的实施例,配置项包括降级类型,在针对目标对象的降级类型为缓存降级的情况下,配置项还包括缓存地址,字节码生成模块750生成的针对目标对象的降级服务的字节码包括:从所述缓存地址指示的存储空间获取缓存信息的读取字节码;以及将缓存信息作为页面请求的反馈信息的反馈字节码。
根据本公开的实施例,在针对目标对象的降级类型为缓存降级的情况下,上述字节码生成模块750还用于在文本加载模块790加载增强后字节码文本之前,生成将目标对象的调用反馈信息缓存至缓存地址指示的存储空间的缓存字节码;上述字节码插入模块770还用于在待加载字节码文本中插入缓存字节码。上述处理文本的装置700还包括反馈信息获取模块,用于在第一字节码运行模块运行调用目标对象的字节码之后,获取运行调用目标对象的字节码得到的调用反馈信息。上述文本处理装置700还可以包括第三字节码运行模块,用于运行缓存字节码,以将调用反馈信息缓存至缓存地址指示的存储空间。
根据本公开的实施例,上述处理文本的装置还包括标签添加模块,用于在文本加载模块790加载增强后字节码文本之前,向增强后字节码文本中调用目标对象的字节码添加标签,以指示针对目标对象的降级类型,其中,第三字节码运行模块在确定调用目标对象的字节码的标签指示缓存降级的情况下运行缓存字节码。
根据本公开的实施例,上述配置项还包括缓存周期,上述标签还用于指示缓存周期。上述字节码生成模块750生成的缓存字节码包括:将目标对象的调用反馈信息根据缓存周期缓存至缓存地址指示的存储空间的代码。
根据本公开的实施例,上述处理文本的装置700还可以包括配置项确定模块和字节码更改模块。配置项确定模块用于在文本加载模块790加载增强后字节码文本之后,响应于获取到配置更新信息,根据配置更新信息,确定针对目标对象的更新后配置项。字节码更改模块用于根据更新后配置项,更改针对目标对象的降级服务的字节码。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实现本公开实施例的处理文本的方法的电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如处理文本的方法。例如,在一些实施例中,确定处理文本的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的处理文本的方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行处理文本的方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (13)

1.一种处理文本的方法,包括:
获取配置信息和待加载字节码文本,所述配置信息包括针对至少一个预定对象的配置项;
确定所述至少一个预定对象中所述待加载字节码文本调用的对象,作为目标对象;
根据针对所述目标对象的配置项,生成针对所述目标对象的降级服务的字节码;
在所述待加载字节码文本中插入针对所述目标对象的降级服务的字节码,得到增强后字节码文本;以及
加载所述增强后字节码文本,以将所述增强后字节码文本存储至预定空间。
2.根据权利要求1所述的方法,其中,生成针对所述目标对象的降级服务的字节码包括:
根据所述目标对象的对象名,生成定义降级服务的方法名称的第一字节码,所述方法名称包括所述对象名;以及
根据针对所述目标对象的配置项,生成定义所述降级服务的方法体的第二字节码。
3.根据权利要求1所述的方法,还包括:
响应于接收到调用所述目标对象的页面请求,确定所述目标对象的运行状态;
在所述运行状态指示所述目标对象运行正常的情况下,运行所述预定空间存储的增强后字节码文本中调用所述目标对象的字节码;以及
在所述运行状态指示所述目标对象运行异常的情况下,运行所述预定空间存储的增强后字节码文本中针对所述目标对象的降级服务的字节码。
4.根据权利要求3所述的方法,其中,确定所述目标对象的运行信息包括:
获取针对所述目标对象的断路器的状态,所述断路器用于监控所述目标对象的运行信息;以及
在所述断路器的状态为打开状态时,确定所述目标对象运行异常。
5.根据权利要求3所述的方法,其中,所述配置项包括降级类型;
在针对所述目标对象的降级类型为缓存降级的情况下,所述配置项还包括缓存地址;针对所述目标对象的降级服务的字节码包括:
从所述缓存地址指示的存储空间获取缓存信息的读取字节码;以及
将所述缓存信息作为所述页面请求的反馈信息的反馈字节码。
6.根据权利要求5所述的方法,还包括在针对所述目标对象的降级类型为缓存降级的情况下:
在加载所述增强后字节码文本之前:
生成将所述目标对象的调用反馈信息缓存至所述缓存地址指示的存储空间的缓存字节码;以及
在所述待加载字节码文本中插入所述缓存字节码;
在运行调用所述目标对象的字节码之后:
获取运行调用所述目标对象的字节码得到的调用反馈信息;以及
运行所述缓存字节码,以将所述调用反馈信息缓存至所述缓存地址指示的存储空间。
7.根据权利要求6所述的方法,还包括在加载所述增强后字节码文本之前:
向所述增强后字节码文本中调用所述目标对象的字节码添加标签,以指示针对所述目标对象的降级类型;
其中,所述缓存字节码在确定调用所述目标对象的字节码的标签指示缓存降级的情况下运行。
8.根据权利要求7所述的方法,其中,所述配置项还包括缓存周期;
所述标签还用于指示所述缓存周期;
所述缓存字节码包括:将所述目标对象的调用反馈信息根据所述缓存周期缓存至所述缓存地址指示的存储空间的代码。
9.根据权利要求1所述的方法,还包括在加载所述增强后字节码文本之后:
响应于获取到配置更新信息,根据所述配置更新信息,确定针对所述目标对象的更新后配置项;以及
根据所述更新后配置项,更改针对所述目标对象的降级服务的字节码。
10.一种处理文本的装置,包括:
信息获取模块,用于获取配置信息和待加载字节码文本,所述配置信息包括针对至少一个预定对象的配置项;
对象确定模块,用于确定所述至少一个预定对象中所述待加载字节码文本调用的对象,作为目标对象;
字节码生成模块,用于根据针对所述目标对象的配置项,生成针对所述目标对象的降级服务的字节码;
字节码插入模块,用于在所述待加载字节码文本中插入针对所述目标对象的降级服务的字节码,得到增强后字节码文本;以及
文本加载模块,用于加载所述增强后字节码文本,以将所述增强后字节码文本存储至预定空间。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1~9中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1~9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1~9中任一项所述的方法。
CN202110157697.3A 2021-02-04 2021-02-04 处理文本的方法、装置、设备和存储介质 Active CN112860235B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110157697.3A CN112860235B (zh) 2021-02-04 2021-02-04 处理文本的方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110157697.3A CN112860235B (zh) 2021-02-04 2021-02-04 处理文本的方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN112860235A true CN112860235A (zh) 2021-05-28
CN112860235B CN112860235B (zh) 2023-09-05

Family

ID=75988699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110157697.3A Active CN112860235B (zh) 2021-02-04 2021-02-04 处理文本的方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112860235B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590231A (zh) * 2021-08-17 2021-11-02 上海微盟企业发展有限公司 组件加载方法、系统、装置及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170262261A1 (en) * 2016-03-08 2017-09-14 Mastercard International Incorporated Systems and methods for processing extensible markup language data during runtime
CN108279993A (zh) * 2018-01-03 2018-07-13 阿里巴巴集团控股有限公司 实现业务降级的方法及装置和电子设备
CN110968325A (zh) * 2019-10-28 2020-04-07 苏宁云计算有限公司 一种小程序转换方法及装置
CN111262898A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务降级处理方法、装置及电子设备
US10684940B1 (en) * 2018-09-18 2020-06-16 Amazon Technologies, Inc. Microservice failure modeling and testing
CN111752795A (zh) * 2020-06-18 2020-10-09 多加网络科技(北京)有限公司 一种全流程监控报警平台及其方法
CN111782340A (zh) * 2020-06-29 2020-10-16 中国工商银行股份有限公司 一种基于字节码的数据处理方法、装置、设备及系统
CN112231168A (zh) * 2020-09-03 2021-01-15 平安信托有限责任公司 微服务器管控方法、装置、设备及存储介质
CN112306659A (zh) * 2020-11-02 2021-02-02 北京中电普华信息技术有限公司 一种应用的降级保护方法及业务处理系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170262261A1 (en) * 2016-03-08 2017-09-14 Mastercard International Incorporated Systems and methods for processing extensible markup language data during runtime
CN108279993A (zh) * 2018-01-03 2018-07-13 阿里巴巴集团控股有限公司 实现业务降级的方法及装置和电子设备
US10684940B1 (en) * 2018-09-18 2020-06-16 Amazon Technologies, Inc. Microservice failure modeling and testing
CN111262898A (zh) * 2018-12-01 2020-06-09 阿里巴巴集团控股有限公司 服务降级处理方法、装置及电子设备
CN110968325A (zh) * 2019-10-28 2020-04-07 苏宁云计算有限公司 一种小程序转换方法及装置
CN111752795A (zh) * 2020-06-18 2020-10-09 多加网络科技(北京)有限公司 一种全流程监控报警平台及其方法
CN111782340A (zh) * 2020-06-29 2020-10-16 中国工商银行股份有限公司 一种基于字节码的数据处理方法、装置、设备及系统
CN112231168A (zh) * 2020-09-03 2021-01-15 平安信托有限责任公司 微服务器管控方法、装置、设备及存储介质
CN112306659A (zh) * 2020-11-02 2021-02-02 北京中电普华信息技术有限公司 一种应用的降级保护方法及业务处理系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590231A (zh) * 2021-08-17 2021-11-02 上海微盟企业发展有限公司 组件加载方法、系统、装置及存储介质
CN113590231B (zh) * 2021-08-17 2024-05-10 上海微盟企业发展有限公司 组件加载方法、系统、装置及存储介质

Also Published As

Publication number Publication date
CN112860235B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN108958729B (zh) 一种数据处理方法、装置及存储介质
KR20050076750A (ko) 인터-포지션된 메시지 변경을 사용하는, 코드에 대한 수신메시지의 적응성 디스패치
CN112947965B (zh) 容器化的服务更新方法和装置
CN113179188B (zh) 服务降级动态实现方法、装置、计算机设备及存储介质
JP2015219637A (ja) 処理実行プログラム、処理実行方法、及び情報処理装置
CN112860235B (zh) 处理文本的方法、装置、设备和存储介质
CN114490126A (zh) 页面处理方法、装置、电子设备和存储介质
CN113900896A (zh) 一种代码运行的监测方法、装置、设备及存储介质
CN114328073A (zh) 线程监控方法、装置、设备及存储介质
CN109408057B (zh) 自动生成代码的方法、装置、介质和计算设备
CN114115884A (zh) 一种编程服务的管理方法以及相关装置
CN111831437A (zh) 设备管理方法、装置、存储介质及电子设备
US20180373512A1 (en) Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal
CN112783574B (zh) 应用程序开发方法、装置、设备和存储介质
US11429358B2 (en) Representing asynchronous state machine in intermediate code
CN115705294A (zh) 用于获取函数调用信息的方法、装置、电子设备和介质
CN109634636B (zh) 应用处理方法、装置、设备和介质
CN111931111A (zh) 一种网页开发方法、网页展示方法、装置及设备
CN112650502A (zh) 批处理任务处理方法、装置、计算机设备和存储介质
US11689630B2 (en) Request processing method and apparatus, electronic device, and computer storage medium
CN110795076B (zh) 用于实现基础逻辑算法的数据处理方法及装置
CN110647405A (zh) 系统消息处理方法、电子设备和计算机可读存储介质
CN113032169B (zh) 跨语言软件系统的资源调用方法、设备及存储介质
CN113535187B (zh) 服务上线方法、服务更新方法及服务提供方法
US11907194B2 (en) Systems and methods for executing and hashing modeling flows

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
GR01 Patent grant
GR01 Patent grant