CN113282400B - 基于接口路由的应用发布方法、装置、设备及存储介质 - Google Patents

基于接口路由的应用发布方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113282400B
CN113282400B CN202110729346.5A CN202110729346A CN113282400B CN 113282400 B CN113282400 B CN 113282400B CN 202110729346 A CN202110729346 A CN 202110729346A CN 113282400 B CN113282400 B CN 113282400B
Authority
CN
China
Prior art keywords
interface
target
identifier
application
routing
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.)
Active
Application number
CN202110729346.5A
Other languages
English (en)
Other versions
CN113282400A (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.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China 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 Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN202110729346.5A priority Critical patent/CN113282400B/zh
Publication of CN113282400A publication Critical patent/CN113282400A/zh
Application granted granted Critical
Publication of CN113282400B publication Critical patent/CN113282400B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration 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)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请涉及开发辅助技术领域,揭示了一种基于接口路由的应用发布方法、装置、设备及存储介质,其中方法包括:获取接口访问请求,接口访问请求携带有目标接口标识和目标会话状态数据;将目标接口标识在路由策略库中进行接口标识匹配,得到接口标识匹配结果;当接口标识匹配结果为成功时,根据路由策略库、目标接口标识和目标会话状态数据进行路由应用标识匹配,得到目标应用标识;当接口标识匹配结果为失败时,获取预设应用标识作为目标应用标识;根据目标接口标识,将接口访问请求路由到目标应用标识对应的应用中的接口。从而可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。

Description

基于接口路由的应用发布方法、装置、设备及存储介质
技术领域
本申请涉及到开发辅助技术领域,特别是涉及到一种基于接口路由的应用发布方法、装置、设备及存储介质。
背景技术
随着功能需求的变迁、代码逻辑的重构、技术的更新迭代、系统框架的升级,在应用系统的维护过程中,常常会遇到需要整个系统进行应用发布的情况,比如,更新系统框架需要应用发布、更换数据库需要应用发布。
传统的应用发布方法是:搭建新的应用系统环境,等新的应用系统部署完成之后在上线的时候采取一刀切的做法,停掉老的应用系统,启动新的应用系统,然后修改网关分发策略,所有请求均分发到新的应用系统上面。
发明人发现传统的应用发布方法较多,整个流程消耗的时间较长,系统服务中断的时间从几分钟到几小时都有可能,大大降低了系统的可用性。同时,切换到新的应用系统之后,如果上线之后验证功能异常导致生产问题还要通过发布紧急版本来修复,对于重要系统、关键系统等可用性要求较高的系统来说,发布风险较高。另外,传统的发布方法要求新的应用系统必须完成开发及验证完后才能上线,由于应用系统发布的改造涉及的工作内容较多,整体工作量通常会很大,需要经历的开发周期较长,从而导致了新的应用系统上线时间通常会比较晚。
发明内容
本申请的主要目的为提供一种基于接口路由的应用发布方法、装置、设备及存储介质,旨在解决现有技术的应用发布采用一刀切的做法,存在系统服务中断,发布风险较高,上线时间比较晚的技术问题。
为了实现上述发明目的,本申请提出一种基于接口路由的应用发布方法,所述方法包括:
获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;
当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
进一步的,所述根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,包括:
将所述目标接口标识在所述路由策略库中进行接口标识匹配,将在所述路由策略库中匹配到的接口标识对应的路由策略数据作为目标路由策略数据;
根据所述目标路由策略数据和所述目标会话状态数据进行路由应用标识匹配,得到所述目标应用标识。
进一步的,所述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,包括:
当所述目标应用标识是所述预设的第二版本应用标识时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
当所述目标应用标识是所述预设的第一版本应用标识时,判断所述目标应用标识对应的所述应用的拦截层中是否存在试点拦截器;
当所述拦截层不存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
当所述拦截层存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用的所述拦截层的所述试点拦截器,其中,所述试点拦截器用于将所述接口访问请求路由到所述目标接口标识对应的所述接口,获取试点配置数据,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,将所述待封装的应用标识发送给响应值封装模块,所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,将所述目标响应值发送给所述接口访问请求对应的目标客户端。
进一步的,所述根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,包括:
通过所述试点拦截器,将所述目标接口标识在所述试点配置数据中进行接口标识匹配,得到待分析的匹配结果;
当所述待分析的匹配结果为成功时,通过所述试点拦截器,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到所述待封装的应用标识。
进一步的,所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,包括:
通过所述响应值封装模块,根据所述接口访问请求进行响应值封装,在进行响应值封装时将所述待封装的应用标识封装到响应值的请求头或者Cookie中,将封装得到的响应值作为所述目标响应值。
进一步的,所述响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,包括:
响应所述接口访问请求,获取预设标志位关键字,根据所述预设标志位关键字,对所述接口访问请求的参数进行标志位解析,得到标志位解析结果;
当所述标志位解析结果为失败时,获取所述路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到所述接口标识匹配结果;
当所述标志位解析结果为成功时,根据所述标志位解析结果进行路由应用标识确定,得到所述目标应用标识。
进一步的,所述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口之后,还包括:
当所述目标应用标识是所述预设的第一版本应用标识时,调用所述预设的第一版本应用标识对应的第一数据同步插件,获取所述目标会话状态数据的用户标识在所述预设的第一版本应用标识对应的应用中的第一应用操作状态数据,根据所述第一应用操作状态数据更新所述预设的第二版本应用标识对应的第二应用操作状态数据;
当所述目标应用标识是所述预设的第二版本应用标识时,调用所述预设的第二版本应用标识对应的第二数据同步插件,获取所述目标会话状态数据的所述用户标识在所述预设的第二版本应用标识对应的应用中的所述第二应用操作状态数据,根据所述第二应用操作状态数据更新所述预设的第一版本应用标识对应的所述第一应用操作状态数据。
本申请还提出了一种基于接口路由的应用发布装置,所述装置包括:
请求获取模块,用于获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
接口标识匹配结果确定模块,用于响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
第一目标应用标识确定模块,用于当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;
第二目标应用标识确定模块,用于当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
路由模块,用于根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法。
本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法。
本申请的基于接口路由的应用发布方法、装置、设备及存储介质,其中方法通过首先获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据,其次响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,然后当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识,当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识,最后根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现了针对接口确定不同的路由分发策略,缩短了每个应用发布的切换时间,因可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。
附图说明
图1为本申请一实施例的基于接口路由的应用发布方法的流程示意图;
图2为本申请一实施例的基于接口路由的应用发布装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请实施例中提供一种基于接口路由的应用发布方法,所述方法包括:
S1:获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
S2:响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
S3:当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;
S4:当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
S5:根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
本实施例通过首先获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据,其次响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,然后当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识,当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识,最后根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现了针对接口确定不同的路由分发策略,缩短了每个应用发布的切换时间,因可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。
对于S1,可以获取用户通过目标客户端发送的接口访问请求,也可以是目标客户端根据预设接口调用规则主动触发的接口访问请求。
预设接口调用规则包括但不限于:按预设时间间隔调用。
目标接口标识,也就是接口访问请求想要访问的接口的接口标识。接口标识可以是接口名称、接口ID等唯一标识一个接口的数据。
目标会话状态数据,是所述接口访问请求对应的目标客户端的会话状态数据。
会话状态数据包括但不限于:最晚成功登录时间、用户状态数据和用户基本信息。最晚成功登录时间,是所述接口访问请求对应的目标客户端成功登录所述目标接口标识对应的应用的最晚时间。用户状态数据,是用户在所述目标接口标识对应的应用的操作数据。用户基本信息包括但不限于:用户标识、用户所属机构。用户标识可以是用户名称、用户ID等唯一标识一个用户的数据。用户所属机构可以是用户工作所属的机构,也可以是向用户提供服务的机构。
目标客户端,也就是客户端。客户端包括:移动设备的客户端、移动设备的网页端、电脑的客户端、电脑的网页端。
其中,客户端发送的接口访问请求经过用户校验模块时,用户校验模块会根据所述接口访问请求初始化一个会话状态数据作为接口访问请求携带的所述目标会话状态数据。
对于S2,响应所述接口访问请求,从服务网关对应的缓存或数据库中读取路由策略库。
路由策略库包括:接口标识和路由策略数据,每个接口标识对应一个路由策略数据。路由策略数据包括:路由分类数据、路由应用标识,每个路由分类数据对应一个路由应用标识,路由应用标识包括:预设的第二版本应用标识、预设的第一版本应用标识。路由分类数据可以是根据用户标识进行分类的数据,也可以是根据用户所属机构进行分类的数据,还可以是根据用户标识和用户所属机构进行分类的数据。比如,当用户标识为001-0010时路由应用标识为预设的第二版本应用标识,当用户标识为0011-0020时路由应用标识为预设的第一版本应用标识,在此举例不做具体限定。又比如,当用户所属机构为A1时路由应用标识为预设的第二版本应用标识,当用户所属机构为A2时路由应用标识为预设的第一版本应用标识,在此举例不做具体限定。
可以理解的是,在一条路由策略数据中,路由分类数据可以为空。比如,接口标识J001,对应的路由策略数据包括:空值(也就是路由分类数据)、预设的第二版本应用标识(也就是路由应用标识),在此举例不做具体限定。
其中,将所述目标接口标识在所述路由策略库中进行接口标识匹配,当匹配成功时确定所述接口标识匹配结果为成功,当匹配失败时确定所述接口标识匹配结果为失败。
对于S3,当所述接口标识匹配结果为成功时,意味着服务网关的路由策略库有配置相应的路由策略,因此,可以根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,将匹配得到的路由应用标识作为目标应用标识。
预设的第二版本应用标识对应的应用和预设的第一版本应用标识对应的应用是相同的应用,其中,预设的第二版本应用标识对应的应用是预设的第一版本应用标识对应的应用的替换版本。也就是说,预设的第二版本应用标识对应的应用在验证通过后将替换预设的第一版本应用标识对应的应用。
可以理解的是,预设的第二版本应用标识对应的应用和预设的第一版本应用标识对应的应用中的应用可以是应用系统,也可以是应用模块,还可以是应用组件。
对于S4,当所述接口标识匹配结果为失败时,意味着服务网关的路由策略库没有配置相应的路由策略,因此直接从数据库中获取所述预设应用标识,将获取的所述预设应用标识作为所述目标应用标识。
所述预设应用标识可以是预设的第一版本应用标识,也可以是预设的第二版本应用标识。
对于S5,根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现调用所述目标应用标识对应的应用中的所述目标接口标识对应的接口。
在一个实施例中,上述根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,包括:
S31:将所述目标接口标识在所述路由策略库中进行接口标识匹配,将在所述路由策略库中匹配到的接口标识对应的路由策略数据作为目标路由策略数据;
S32:根据所述目标路由策略数据和所述目标会话状态数据进行路由应用标识匹配,得到所述目标应用标识。
本实施例实现了根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,从而为基于接口进行路由提供了基础。
对于S31,将所述目标接口标识在所述路由策略库中进行接口标识匹配,将在所述路由策略库中匹配到的接口标识对应的路由策略数据作为目标路由策略数据,从而找到了针对所述目标接口标识的路由策略数据。
对于S32,分别将所述目标路由策略数据的每个路由分类数据,对所述目标会话状态数据进行匹配,当存在所述路由分类数据与所述目标会话状态数据匹配成功时,将与所述目标会话状态数据匹配成功的所述路由分类数据在所述目标路由策略数据中对应的路由应用标识作为所述目标应用标识。
在一个实施例中,上述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,包括:
S51:当所述目标应用标识是所述预设的第二版本应用标识时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
S52:当所述目标应用标识是所述预设的第一版本应用标识时,判断所述目标应用标识对应的所述应用的拦截层中是否存在试点拦截器;
S53:当所述拦截层不存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
S54:当所述拦截层存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用的所述拦截层的所述试点拦截器,其中,所述试点拦截器用于将所述接口访问请求路由到所述目标接口标识对应的所述接口,获取试点配置数据,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,将所述待封装的应用标识发送给响应值封装模块,所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,将所述目标响应值发送给所述接口访问请求对应的目标客户端。
本实施例在所述预设的第一版本应用标识对应的所述应用的拦截层设置试点拦截器,通过试点拦截器可以进行接口路由的配置,为针对接口确定不同的路由分发策略提供了基础。
对于S51,当所述目标应用标识是所述预设的第二版本应用标识时,因所述预设的第二版本应用标识是预设的第一版本应用标识对应的应用的替换版本,因此不需要在所述预设的第二版本应用标识对应的所述应用的拦截层中设置试点拦截器,直接将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口。
对于S52,当所述目标应用标识是所述预设的第一版本应用标识时,所述目标应用标识对应的应用的拦截层,也就是所述预设的第一版本应用标识对应的应用的filter(拦截)层。
试点拦截器,是自定义的拦截器。
其中,当所述目标应用标识是所述预设的第一版本应用标识时,通过所述预设的第一版本应用标识对应的应用,获取试点拦截器标识和拦截器列表,将所述试点拦截器标识所述拦截器列表中进行查找,当查找成功时确定所述拦截层存在所述试点拦截器,否则确定所述拦截层不存在所述试点拦截器。
对于S53,当所述拦截层不存在所述试点拦截器时,意味着所述预设的第一版本应用标识对应的应用没有为接口路由设置试点开关,因此可以将所述接口访问请求路由直接到所述目标应用标识对应的应用中的所述目标接口标识对应的接口。
对于S54,当所述拦截层存在所述试点拦截器时,意味着所述预设的第一版本应用标识对应的应用为接口路由设置试点开关,此时需要所述接口访问请求对应的目标客户端下一次访问所述目标接口标识对应的接口进行设置。
其中,通过所述试点拦截器,首先将所述接口访问请求路由到所述目标接口标识对应的所述接口,从所述预设的第一版本应用标识对应的应用对应的数据库中获取试点配置数据,其次根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,将匹配得到的路由应用标识作为所述待封装的应用标识,并且将所述待封装的应用标识发送给响应值封装模块。所述响应值封装模块在接收到所述待封装的应用标识之后,根据所述待封装的应用标识进行响应值封装,将封装得到的响应值发送给目标响应值。然后所述预设的第一版本应用标识对应的应用将所述目标响应值发送给所述接口访问请求对应的目标客户端。
试点配置数据包括:目标接口标识、试点策略数据。试点策略数据包括:试点分类数据、路由应用标识,每个试点分类数据对应一个路由应用标识。试点分类数据可以是根据用户标识进行分类的数据,也可以是根据用户所属机构进行分类的数据,还可以是根据用户标识和用户所属机构进行分类的数据。
在一个实施例中,上述根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,包括:
S5311:通过所述试点拦截器,将所述目标接口标识在所述试点配置数据中进行接口标识匹配,得到待分析的匹配结果;
S5312:当所述待分析的匹配结果为成功时,通过所述试点拦截器,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到所述待封装的应用标识。
本实施例实现了根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,从而为下一次所述目标接口标识对应的目标客户端访问所述目标接口标识对应的应用时设置了路由策略。
对于S5311,通过所述试点拦截器,将所述目标接口标识在所述试点配置数据中进行接口标识匹配,当匹配到接口标识时确定所述待分析的匹配结果为成功,当没有匹配到接口标识时确定所述待分析的匹配结果为失败。
对于S5312,当所述待分析的匹配结果为成功时,将所述目标接口标识在所述试点配置数据中进行接口标识匹配,将在所述试点配置数据中匹配到的接口标识对应的试点策略数据作为目标试点策略数据;通过所述试点拦截器,分别将所述目标试点策略数据中的每个所述试点分类数据,与所述目标接口标识和所述目标会话状态数据进行匹配,当存在所述试点分类数据匹配成功时,将匹配成功的所述试点分类数据在所述目标试点策略数据中对应的路由应用标识作为所述待封装的应用标识。
在一个实施例中,上述所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,包括:
S5321:通过所述响应值封装模块,根据所述接口访问请求进行响应值封装,在进行响应值封装时将所述待封装的应用标识封装到响应值的请求头或者Cookie中,将封装得到的响应值作为所述目标响应值。
本实施例将所述待封装的应用标识封装到响应值的请求头或者Cookie,从而实现将所述待封装的应用标识传递给所述接口访问请求对应的目标客户端。
所述接口访问请求对应的目标客户端,在收到所述目标响应值时,对所述目标响应值进行解析,将解析得到所述待封装的应用标识进行存储。所述接口访问请求对应的目标客户端在下一次向所述目标接口标识对应的接口发起接口访问请求时,将目标客户端存储的应用标识封装到新发起的接口访问请求的参数中。
在一个实施例中,上述响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,包括:
S21:响应所述接口访问请求,获取预设标志位关键字,根据所述预设标志位关键字,对所述接口访问请求的参数进行标志位解析,得到标志位解析结果;
S22:当所述标志位解析结果为失败时,获取所述路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到所述接口标识匹配结果;
S23:当所述标志位解析结果为成功时,根据所述标志位解析结果进行路由应用标识确定,得到所述目标应用标识。
本实施例实现了根据所述预设标志位关键字,对所述接口访问请求的参数进行标志位解析,标志位解析成功时根据将解析得到的应用标识作为目标应用标识,标志位解析失败时才采用路由策略库确定目标应用标识,从而实现了优先采用所述接口访问请求携带的参数中的路由策略。
对于S21,响应所述接口访问请求,从服务网关的数据库中获取预设标志位关键字,将所述预设标志位关键字在所述接口访问请求的参数的请求头和Cookie(储存在用户本地终端上的数据)中进行查找,当在请求头或Cookie中查找成功时确定所述标志位解析结果为成功,否则,确定所述标志位解析结果为失败。
也就是说,只要请求头或Cookie中查找预设标志位关键字时,确定所述标志位解析结果为成功。
对于S22,当所述标志位解析结果为失败时,意味着预设的第一版本应用标识对应的应用的配置数据中没有进行路由配置,此时需要将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到所述接口标识匹配结果。
对于S23,当所述标志位解析结果为成功时,意味着预设的第一版本应用标识对应的应用的配置数据中有进行路由配置,因此,此时需要将所述标志位解析结果对应的预设标志位关键字在所述接口访问请求的参数对应的应用标识作为所述目标应用标识。
在一个实施例中,上述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口之后,还包括:
S61:当所述目标应用标识是所述预设的第一版本应用标识时,调用所述预设的第一版本应用标识对应的第一数据同步插件,获取所述目标会话状态数据的用户标识在所述预设的第一版本应用标识对应的应用中的第一应用操作状态数据,根据所述第一应用操作状态数据更新所述预设的第二版本应用标识对应的第二应用操作状态数据;
S62:当所述目标应用标识是所述预设的第二版本应用标识时,调用所述预设的第二版本应用标识对应的第二数据同步插件,获取所述目标会话状态数据的所述用户标识在所述预设的第二版本应用标识对应的应用中的所述第二应用操作状态数据,根据所述第二应用操作状态数据更新所述预设的第一版本应用标识对应的所述第一应用操作状态数据。
由于用户会同时访问所述预设的第一版本应用标识对应的应用和所述预设的第二版本应用标识对应的应用的接口,因此提交数据跟展示数据的接口可能会分发到不同的服务器上,为了保证任意一台服务器都能获取用户会话中的操作状态数据,本实施例通过第一数据同步插件和第二数据同步插件,将所述预设的第一版本应用标识对应的应用中的应用操作状态数据和所述预设的第二版本应用标识对应的应用中的应用操作状态数据进行同步操作,从而保证始终保持所述预设的第一版本应用标识对应的应用和所述预设的第二版本应用标识对应的应用的应用操作状态数据相同。
对于S61,所述第一数据同步插件,基于Tomcat(小型的轻量级应用服务器)的DeltaManager(会话管理器)工具得到的插件,该插件通过在服务器启动过程中添加Cluster(集群)配置的方式实现了服务器之间(所述预设的第一版本应用标识对应的应用所在服务器和所述预设的第二版本应用标识对应的应用所在服务器之间)的应用操作状态数据的共享。
在所述预设的第一版本应用标识对应的应用的服务器启动过程中添加Cluster配置的方式包括:在web.xml中添加打开插件的配置、在server.xml中添加引用所述第一数据同步插件的配置。
其中,调用所述预设的第一版本应用标识对应的第一数据同步插件,根据所述第一应用操作状态数据,对所述预设的第二版本应用标识对应的第二应用操作状态数据进行相同类型的数据覆盖更新。
对于S62,所述第二数据同步插件,基于Tomcat的DeltaManager工具得到的插件,该插件通过在服务器启动过程中添加Cluster配置的方式实现了服务器之间的应用操作状态数据的共享。
在所述预设的第二版本应用标识对应的应用的在服务器启动过程中添加Cluster配置的方式包括:在web.xml中添加打开插件的配置、在server.xml中添加引用所述第二数据同步插件的配置。
其中,调用所述预设的第二版本应用标识对应的第二数据同步插件,根据所述第二应用操作状态数据,对所述预设的第一版本应用标识对应的所述第一应用操作状态数据进行相同类型的数据覆盖更新。
参照图2,本申请还提出了一种基于接口路由的应用发布装置,所述装置包括:
请求获取模块100,用于获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
接口标识匹配结果确定模块200,用于响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
第一目标应用标识确定模块300,用于当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;
第二目标应用标识确定模块400,用于当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
路由模块500,用于根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
本实施例通过首先获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据,其次响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,然后当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识,当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识,最后根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现了针对接口确定不同的路由分发策略,缩短了每个应用发布的切换时间,因可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存基于接口路由的应用发布方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于接口路由的应用发布方法。所述基于接口路由的应用发布方法,包括:获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
本实施例通过首先获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据,其次响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,然后当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识,当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识,最后根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现了针对接口确定不同的路由分发策略,缩短了每个应用发布的切换时间,因可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于接口路由的应用发布方法,包括:获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
上述执行的基于接口路由的应用发布方法,通过首先获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据,其次响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,然后当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识,当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识,最后根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,从而实现了针对接口确定不同的路由分发策略,缩短了每个应用发布的切换时间,因可以指定某个接口单独上线,从而缩小了试点的功能范围,不需中断服务,减小了发布风险,缩短了上线时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种基于接口路由的应用发布方法,其特征在于,所述方法包括:
获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识或预设的第一版本应用标识;
当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
2.根据权利要求1所述的基于接口路由的应用发布方法,其特征在于,所述根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,包括:
将所述目标接口标识在所述路由策略库中进行接口标识匹配,将在所述路由策略库中匹配到的接口标识对应的路由策略数据作为目标路由策略数据;
根据所述目标路由策略数据和所述目标会话状态数据进行路由应用标识匹配,得到所述目标应用标识。
3.根据权利要求1所述的基于接口路由的应用发布方法,其特征在于,所述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口,包括:
当所述目标应用标识是所述预设的第二版本应用标识时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
当所述目标应用标识是所述预设的第一版本应用标识时,判断所述目标应用标识对应的所述应用的拦截层中是否存在试点拦截器;
当所述拦截层不存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用中的所述目标接口标识对应的所述接口;
当所述拦截层存在所述试点拦截器时,将所述接口访问请求路由到所述目标应用标识对应的所述应用的所述拦截层的所述试点拦截器,其中,所述试点拦截器用于将所述接口访问请求路由到所述目标接口标识对应的所述接口,获取试点配置数据,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,将所述待封装的应用标识发送给响应值封装模块,所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,将所述目标响应值发送给所述接口访问请求对应的目标客户端。
4.根据权利要求3所述的基于接口路由的应用发布方法,其特征在于,所述根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到待封装的应用标识,包括:
通过所述试点拦截器,将所述目标接口标识在所述试点配置数据中进行接口标识匹配,得到待分析的匹配结果;
当所述待分析的匹配结果为成功时,通过所述试点拦截器,根据所述试点配置数据、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到所述待封装的应用标识。
5.根据权利要求3所述的基于接口路由的应用发布方法,其特征在于,所述响应值封装模块用于根据所述待封装的应用标识进行响应值封装,得到目标响应值,包括:
通过所述响应值封装模块,根据所述接口访问请求进行响应值封装,在进行响应值封装时将所述待封装的应用标识封装到响应值的请求头或者Cookie中,将封装得到的响应值作为所述目标响应值。
6.根据权利要求1所述的基于接口路由的应用发布方法,其特征在于,所述响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果,包括:
响应所述接口访问请求,获取预设标志位关键字,根据所述预设标志位关键字,对所述接口访问请求的参数进行标志位解析,得到标志位解析结果;
当所述标志位解析结果为失败时,获取所述路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到所述接口标识匹配结果;
当所述标志位解析结果为成功时,根据所述标志位解析结果进行路由应用标识确定,得到所述目标应用标识。
7.根据权利要求1所述的基于接口路由的应用发布方法,其特征在于,所述根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口之后,还包括:
当所述目标应用标识是所述预设的第一版本应用标识时,调用所述预设的第一版本应用标识对应的第一数据同步插件,获取所述目标会话状态数据的用户标识在所述预设的第一版本应用标识对应的应用中的第一应用操作状态数据,根据所述第一应用操作状态数据更新所述预设的第二版本应用标识对应的第二应用操作状态数据;
当所述目标应用标识是所述预设的第二版本应用标识时,调用所述预设的第二版本应用标识对应的第二数据同步插件,获取所述目标会话状态数据的所述用户标识在所述预设的第二版本应用标识对应的应用中的所述第二应用操作状态数据,根据所述第二应用操作状态数据更新所述预设的第一版本应用标识对应的所述第一应用操作状态数据。
8.一种基于接口路由的应用发布装置,其特征在于,所述装置包括:
请求获取模块,用于获取接口访问请求,所述接口访问请求携带有目标接口标识和目标会话状态数据;
接口标识匹配结果确定模块,用于响应所述接口访问请求,读取路由策略库,将所述目标接口标识在所述路由策略库中进行接口标识匹配,得到接口标识匹配结果;
第一目标应用标识确定模块,用于当所述接口标识匹配结果为成功时,根据所述路由策略库、所述目标接口标识和所述目标会话状态数据进行路由应用标识匹配,得到目标应用标识,所述目标应用标识包括:预设的第二版本应用标识和预设的第一版本应用标识;
第二目标应用标识确定模块,用于当所述接口标识匹配结果为失败时,获取预设应用标识作为所述目标应用标识;
路由模块,用于根据所述目标接口标识,将所述接口访问请求路由到所述目标应用标识对应的应用中的接口。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
CN202110729346.5A 2021-06-29 2021-06-29 基于接口路由的应用发布方法、装置、设备及存储介质 Active CN113282400B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110729346.5A CN113282400B (zh) 2021-06-29 2021-06-29 基于接口路由的应用发布方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110729346.5A CN113282400B (zh) 2021-06-29 2021-06-29 基于接口路由的应用发布方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113282400A CN113282400A (zh) 2021-08-20
CN113282400B true CN113282400B (zh) 2022-06-17

Family

ID=77286074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110729346.5A Active CN113282400B (zh) 2021-06-29 2021-06-29 基于接口路由的应用发布方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113282400B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115103016B (zh) * 2022-06-21 2023-11-03 浙江浩瀚能源科技有限公司 基于c/s架构的路由调用的处理方法、装置、设备及介质
CN117648362B (zh) * 2024-01-29 2024-06-04 北京谷器数据科技有限公司 一种第三方数据库的链接方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6836794B1 (en) * 1998-09-21 2004-12-28 Microsoft Corporation Method and system for assigning and publishing applications
US9158518B2 (en) * 2013-03-11 2015-10-13 Blackberry Limited Collaborative application development environment using a connected device
CN104216724B (zh) * 2013-06-03 2018-01-02 阿里巴巴集团控股有限公司 一种网络应用程序接口升级的方法及系统
CN107220066B (zh) * 2017-06-28 2020-08-28 北京金山安全软件有限公司 应用商店中应用软件的发布方法及装置
CN109542461A (zh) * 2018-10-16 2019-03-29 深圳壹账通智能科技有限公司 应用安装包的发布方法、终端设备及介质
CN109510748B (zh) * 2018-12-29 2021-06-29 北京润科通用技术有限公司 节点及节点交互方法和系统
CN112540772B (zh) * 2020-12-23 2024-06-18 京东方科技集团股份有限公司 应用发布方法及其系统、电子设备、存储介质

Also Published As

Publication number Publication date
CN113282400A (zh) 2021-08-20

Similar Documents

Publication Publication Date Title
CN113282400B (zh) 基于接口路由的应用发布方法、装置、设备及存储介质
CN110290112B (zh) 权限控制方法、装置、计算机设备及存储介质
CN112153155B (zh) 服务器集群中的服务请求方法、装置、计算机设备及介质
CN111666514A (zh) 网页端实现跨域请求的数据处理方法、装置及相关设备
CN110224996A (zh) 应用程序的网络访问方法、装置、计算机设备和存储介质
CN112769924B (zh) RocketMQ的分布式部署方法、装置、设备及介质
CN111506367B (zh) 多集群式人工智能在线服务方法及系统
CN112395140B (zh) 去中心化的任务调度方法、装置、设备及介质
CN110633160A (zh) 接口调用方法、装置、计算机设备和存储介质
CN109669703A (zh) 微服务信息配置方法、装置、计算机设备和存储介质
CN109460252B (zh) 基于git的配置文件处理方法、装置和计算机设备
CN110597918A (zh) 一种账户管理方法、装置及计算机可读存储介质
CN113489650B (zh) 客户端的路由方法、装置、设备及存储介质
CN108595280B (zh) 接口适配方法、装置、计算机设备和存储介质
CN110727588A (zh) 网络应用的测试方法、系统、计算机设备和可读存储介质
CN114168179A (zh) 微服务管理方法、装置、计算机设备和存储介质
US8291406B2 (en) Data imaging system and methods
CN113315754A (zh) 容器出访防火墙智能联动方法及装置、设备、介质
CN115509756A (zh) 多集群计算任务提交方法及相关装置、设备
US9058313B2 (en) Test method for distributed processing system and distributed processing system
CN111866197B (zh) 一种域名解析方法及系统
CN115244912A (zh) 文件分发方法、装置、电子设备和计算机可读存储介质
CN108259477B (zh) 基于sdn的网络访问控制方法、装置和计算机设备
CN113206845B (zh) 网络访问控制方法、装置、计算机设备和存储介质
CN116566656A (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
GR01 Patent grant
GR01 Patent grant