CN111610979B - 一种经过持久化和耦合度优化的api网关及其方法 - Google Patents
一种经过持久化和耦合度优化的api网关及其方法 Download PDFInfo
- Publication number
- CN111610979B CN111610979B CN202010294300.0A CN202010294300A CN111610979B CN 111610979 B CN111610979 B CN 111610979B CN 202010294300 A CN202010294300 A CN 202010294300A CN 111610979 B CN111610979 B CN 111610979B
- Authority
- CN
- China
- Prior art keywords
- service
- plug
- micro
- data
- api gateway
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种经过持久化和耦合度优化的API网关及其方法。该API网关包括:核心业务模块、持久化业务模块、插件模块和可视化管理模块;其中:核心业务模块包括Core业务单元、前置组件单元和后置组件单元;所述Core业务单元用于转发微服务消费者的请求数据和回传微服务的返回数据;所述前置组件单元和所述后置组件单元用于插入插件模块中的插件,利用插件提供过滤业务和插件服务;持久化业务模块,用于采用数据库对配置信息和路由表进行持久化,并将指定数据进行内存缓存;其中,所述路由表用于存储注册于API网关上的微服务的信息;插件模块包括多个插件,每个插件在持久化业务模块中均对应有各自的数据库;可视化管理模块,用于动态显示微服务的状态。
Description
技术领域
本发明涉及软件工程技术领域,尤其涉及一种经过持久化和耦合度优化的API网关及其方法。
背景技术
软件应用系统的规模逐渐增大,规模的扩大导致软件结构中包含的独立业务逻辑开始互相交错、管理困难,并且由于所有业务都在使用共同的数据库或数据库统一平台,导致某些需要大规模读写的业务影响到了其他业务的数据库读写性能,整个软件应用系统变得十分脆弱。微服务的出现有效解决了这些问题,软件应用系统的微服务化,是将整个软件应用系统中的交错复杂的业务逻辑尽可能的抽象成一个个独立业务逻辑,每个独立业务逻辑拥有属于自己的数据库。微服务化后的软件应用系统中必然会出现一些公共业务逻辑——例如日志服务、登录服务或定位服务,它们可能会被其他业务频繁调用。
随着软件应用系统规模的进一步扩大,软件开发者可能会从一个部门拓展到多个部门,从一个企业拓展为多单位联合开发,微服务的数量也在不断增加——含有公共业务逻辑的微服务也是这样。大量的微服务产生了大量的RPC(Remote Procedure Call,远程过程调用)接口,也产生了多种调用标准,如果一个开发者同时使用了多个企业的开放软件开发工具包,那么他必然要了解多种不同的调用规则,业务逻辑也要做分别适配。对于多单位和部门联合开发的情况,不同单位负责实现了大量的不同微服务,接口交互成本将越来越高昂。此时就需要API网关来解决这个问题。API网关是一种完全托管的服务,可以协助托管服务开发者开发或者需要部署的服务,开发者的RPC服务发布到网络上后,将RPC调用地址在API网关注册,调用者通过对API网关的统一访问,由API网关将调用者的请求转发给已注册的RPC服务,实现RPC服务的调用,而不再需要过多关心RPC服务的调用路径多样化的问题,规则也是统一的——否则API网关将不予注册这个微服务。
随着互联网对API网关需求的增长,大型企业开发了自己的API网关,并将稳定版本作为商业产品供其他企业购买使用,这种API网关搭建在大型分布式高性能集群上,性能优越,大型企业有能力组建专业运维团队,所有对于API网关的企业用户来说,可维护性好,但对于中小企业来说,使用商用API网关的成本是高昂的,高性能集群的成本和维护成本最终会转嫁给商用API网关的用户;一些开源项目团队也开发了自己的开源API网关,供开发者使用,使用目前流行的开源API网关,需要使用的企业自行搭建,并且需要考量其性能指标,额外加入一些模块对API网关进行性能优化,如果不进行性能优化,其性能指标就较低。同时API网关的过滤器业务的编码比较复杂,需要经验丰富的开发人员进行维护,这就意味着使用流行的开源API网关时所面对的性能、开发成本和维护成本也是不小的问题。
发明内容
针对商业化API网关成本高昂的问题,以及流行的开源原生API网关在使用时需要额外开发流程、维护成本高、性能优化考虑不充分的问题,本发明提供一种经过持久化和耦合度优化的API网关及其方法,对API网关内的各个模块之间的耦合度进行了进一步的优化,使耦合度下降,并在API网关内加入了数据库持久化机制,并对持久化部分的业务进行了I/O性能优化,在使用过程中成本低、易维护且性能优。
本发明提供一种经过持久化和耦合度优化的API网关,包括:核心业务模块、持久化业务模块、插件模块和可视化管理模块;其中:
核心业务模块包括Core业务单元、前置组件单元和后置组件单元;所述Core业务单元用于转发微服务消费者的请求数据和回传微服务的返回数据;所述前置组件单元和所述后置组件单元用于插入插件模块中的插件,利用插件提供过滤业务和插件服务;
持久化业务模块,用于采用数据库对配置信息和路由表进行持久化,并将指定数据进行内存缓存;其中,所述路由表用于存储注册于API网关上的微服务的信息;
插件模块包括多个插件,每个插件在持久化业务模块中均对应有各自的数据库;
可视化管理模块,用于动态显示微服务的状态。
进一步地,所述Core业务单元的RPC引擎采用HPROSE。
进一步地,所述路由表的存储形式包括文本形式、配置文件形式和数据库表形式中的一种或多种。
进一步地,所述将指定数据进行内存缓存,具体为:将指定数据存放至API网关所部署的计算机的运行内存中。
进一步地,所述插件的插件类型分为:含有过滤规则的插件和不含过滤规则的插件;其中:
含有过滤规则的插件,用于过滤发送到API网关的请求和/或由API网关发出的请求;
不含过滤规则的插件,用于管理API网关自身业务和状态以及数据库中的数据。
本发明还提供一种基于上述的API网关的微服务请求处理方法,包括:
前置组件单元中的插件接收微服务消费者发送的请求数据;
所述前置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据和所述请求数据进行计算,若计算结果符合所述前置组件单元中的插件中的过滤规则,则将所述请求数据转发至Core业务单元;
Core业务单元将所述请求数据转发至对应的微服务,并接收微服务的返回数据,将所述返回数据转发至后置组件单元中的插件;
所述后置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据以及所述请求数据和/或返回数据进行计算,若计算结果符合所述后置组件单元中的插件中的过滤规则,则将所述返回数据转发至微服务消费者。
进一步地,所述请求数据的数据结构包括:请求来源的地址、请求来源所被分配的鉴权标志、微服务所需的且符合微服务发布者规定格式的全部入参、在转发API网关登记且向所有微服务消费者公开的微服务的服务名称。
进一步地,所述返回数据的数据结构包括:返回结果所附带的返回代码、返回结果的备注信息、微服务的返回值、请求来源的地址。
本发明的有益效果:
(1)由于降低了API网关各个业务模块间的耦合度,且引入了持久化数据库业务,因此降低了开发成本和维护成本。
(2)考虑到了性能问题,对数据库I/O性能进行了优化,结合低耦合度设计,大大提升了API网关的数据传输和转发效率。相较于不进行性能优化的API网关,本发明所优化设计的API网关在进行配置信息读写时,最少节省了29.18%的时间,最多节省了62.63%的时间;相较于当前流行的原生API网关,本发明所优化设计的API网关在进行完整调用时,响应速率最低提升312.45%,最高提升332.46%,平均提升323.20%。
(3)拥有自定义插件的设计,对插件库持续的维护和继续开发工作将会使基于本发明实现的API网关功能不断壮大,且深度适配所使用企业的业务场景。
附图说明
图1为本发明实施例提供的一种经过持久化和耦合度优化的API网关的框架结构示意图;
图2为本发明实施例提供的一种经过持久化和耦合度优化的API网关的性能分析图;
图3为本发明实施例提供的一种经过持久化和耦合度优化的API网关与现有传统API网关的性能对比分析图;
图4中,(a)为大型企业进行销售的商用API网关的成本(Cost)-性能(Performance)-可维护性(Maintainability)模型示意图,(b)为开源的原生API网关的成本-性能-可维护性模型示意图,(c)为本发明实施例提供的经过持久化和耦合度优化的API网关的成本-性能-可维护性模型示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种经过持久化和耦合度优化的API网关,包括:核心业务模块、持久化业务模块、插件模块和可视化管理模块;其中:
核心业务模块包括Core业务单元、前置组件单元和后置组件单元;所述Core业务单元用于转发微服务消费者的请求数据和回传微服务的返回数据;所述前置组件单元和所述后置组件单元用于插入插件模块中的插件,利用插件提供过滤业务和插件服务;持久化业务模块用于采用数据库对配置信息和路由表进行持久化,并将指定数据进行内存缓存;其中,所述路由表用于存储注册于API网关上的微服务的信息;插件模块包括多个插件,每个插件在持久化业务模块中均对应有各自的数据库;可视化管理模块用于动态显示微服务的状态。
具体地,Core业务单元与前置组件单元、后置组件单元相关联。本发明实施例中,由于Core业务单元仅关注对微服务消费者请求数据的转发和微服务返回数据的回传,业务逻辑高度独立,使其具有微服务业务逻辑的特性,大大降低核心业务模块的耦合度,为插件拓展、集群部署提供了很大的便利。
持久化业务模块则取代了zuul网关的配置文件与相关的读取业务,将原本在配置文件中的信息转化为数据库表中的信息,实现了配置信息和路由表的数据库持久化。其中,可以采用SQLITE数据库作为持久化载体。例如,图1中,持久化业务模块将路由表独立成一个核心业务专有数据库,进一步降低了其他业务在进行数据读写时的性能影响,此时Core业务单元具有了微服务的特性,被独立成一个微服务,专门负责请求的转发,与其他业务的耦合度极低,实现了API网关核心业务的耦合度优化。此外,持久化业务模块通过将指定数据(例如比较常用的数据)进行内存缓存,例如,如果插件本次需要查找的微服务的基本信息是存储在内存中的,则直接从内存中读取,反之则继续前往该插件对应的数据库读取,然后读取结束后可将读取结果缓冲到内存中进行备份,以供下次直接从内存缓冲中读取。由此可见,无论是数据可靠性还是读写性能,本发明实施例中的API网关均优于当前开源API网关的配置文件模式。
插件模块取代了传统API网关的过滤器部分,并将过滤器进一步微服务化,与数据库业务结合(即每一个插件均具有各自的数据库),形成了独立插件,插件之间影响很小,灵活插拔,降低了插件业务修改时的维护成本,实现了API网关插件业务的耦合度优化。
在使用本发明实施例的API网关时,可以选择插件的前置拓展(即,将插件置于前置组件单元中)和后置拓展(即,将插件置于后置组件单元中),通过调用开放的数据库读写接口,不断地拓展新的插件加入这个模块。例如数据库中存在某个微服务的启停状态、负载数量、集群编号字段,就可以对应拓展微服务状态判断、负载均衡的插件。如果选择进一步拓展数据库字段,就可以使一个插件作为一个独立的微服务,拓展的字段形成原数据库表中的字表,在调用核心业务模块之前或者之后调用这个插件微服务。可见,本发明实施例中的API网关的插件模块是完全微服务化的,耦合性极低,增强了可用性。
可视化管理模块也可以看成是插件模块中的插件之一。可视化管理模块通过调用开放的数据库读写接口,呈现出当前API网关的注册的微服务的状态,也可以进行手动开启或关闭某个微服务的调用接口。该模块读取的数据库为API网关的核心业务专有数据库,根据数据库表中的各个微服务的状态信息,在界面上动态显示微服务的状态,以便于API网关的管理者进行管理,也便于API网关的微服务消费者查看微服务状态。
在上述实施的基础上,本发明实施例中,所述Core业务单元的RPC引擎采用HPROSE(High Performance Remote Object Service Engine,高性能远程对象服务引擎)。
路由表的存储形式包括文本形式、配置文件形式和数据库表形式中的一种或多种。
所述将指定数据进行内存缓存,具体为:将指定数据存放至API网关所部署的计算机的运行内存中(而不是存放在内存数据库中)。
插件模块中的插件的插件类型分为:含有过滤规则的插件和不含过滤规则的插件;其中:含有过滤规则的插件,用于过滤发送到API网关的请求和/或由API网关发出的请求;不含过滤规则的插件,用于管理API网关自身业务和状态以及数据库中的数据。
具体地,两种类型的插件的持久化业务的逻辑不同,其中,含有过滤规则的插件,不需要读取Core业务单元所使用的核心业务专有数据库的数据。该类型插件所依赖的数据库表被分离为一个个独立的数据库(类似将Core业务单元所依赖的路由表独立成核心业务专有数据库的原理),每个插件都可以作为一个独立的微服务,这样插件与API网关核心业务、插件之间的耦合度就得以降低。例如负载均衡插件即为含有过滤规则的插件,它只需要获取各个微服务的负载状态,如果没有新的微服务注册到API网关,那么它就不需要关心API网关核心业务所使用的数据库的数据。
不含过滤规则的插件,需要读取Core业务单元所使用的数据库的数据。因为如果插件想要获得新注册微服务的信息,则必然需要读取“路由表”所在的数据库,该类型插件会对一些新增的数据筛选并同步到其他插件的独立数据库中。由于该类插件本身不具有过滤规则,所以即使这类插件失效,也只会对未同步的微服务信息产生影响,而对于现有的微服务没有任何影响,这也就不会导致一个插件失效进而引起后续依赖插件连锁失效的问题。
基于上述实施例提供的API网关,本发明实施例还提供一种微服务请求处理方法,包括以下步骤:
S101:前置组件单元中的插件接收微服务消费者发送的请求数据;
S102:所述前置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据和所述请求数据进行计算,若计算结果符合所述前置组件单元中的插件中的过滤规则,则将所述请求数据转发至Core业务单元;
S103:Core业务单元将所述请求数据转发至对应的微服务,并接收微服务的返回数据,将所述返回数据转发至后置组件单元中的插件;
S104:所述后置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据以及所述请求数据和/或返回数据进行计算,若计算结果符合所述后置组件单元中的插件中的过滤规则,则将所述返回数据转发至微服务消费者。
具体地,前置组件单元中的过滤规则和后置组件单元中的过滤规则为用户自定义规则,每个插件根据其自身的业务功能从其对应的数据库中获取计算过程中需要的相关数据,然后结合该相关数据以及请求数据和/或返回数据进行相应地计算。
需要说明的是,对于插件模块中已经存在的插件,当插件下线,则参数在传递给下线插件进行过滤时会传回下线标记,业务就跳过这个下线插件,这样就实现了在前置组件单元和后置组件单元中的插件的热插拔。
所述请求数据的数据结构包括:请求来源的地址、请求来源所被分配的鉴权标志、微服务所需的且符合微服务发布者规定格式的全部入参、在转发API网关登记且向所有微服务消费者公开的微服务的服务名称。如表1所示。微服务消费者发送的数据包中的数据结构应符合JSON格式标准。
表1微服务消费者发送的请求数据的数据结构
所述返回数据的数据结构包括:返回结果所附带的返回代码、返回结果的备注信息、微服务的返回值、请求来源的地址。如表2所示。
表2微服务发送的返回数据的数据结构
KEY | VALUE |
Code | 返回结果所附带的返回代码(字符串) |
Message | 返回结果的备注信息(字符串) |
Return Values | 微服务的返回值(字符串) |
Request Source | 请求来源的地址(字符串) |
下面对本发明实施例提供的API网关优化结果的有效性进行如下测试实验,实验环境如表3所示。
表3测试环境
软硬件 | 型号或版本 |
CPU | Intel Core-i7 7700 |
RAM | DDR4-2400MHz24GB |
Disk | Samsung 860EVO 1TB |
DataBase | Sqlite Version 3.0 |
JDK | Version 11 |
Springboot | Version 2.2.0 |
Springcloud | Version 2.2.0 |
Zuul(for springcloud) | Version 2.2.0 |
Eureka(for springcloud) | Version2.2.0 |
Nginx | Version 1.16.1 |
Network card | KillerE2500Gigabit Ethernet |
从性能分析和实验对比方面对基于本发明提供的一种经过持久化和耦合度优化的API网关设计而实现的API网关的性能进行归纳分析。
首先,对持久化业务部分的I/O性能优化进行实验。实验所使用的程序设计语言为JAVA,RPC调用引擎库为HPROSE,数据库选择SQLITE,内存缓冲选择使用JAVA接口的公共成员变量模拟实现。分别进行100次、500次、1000次、5000次、10000次、50000次、100000次连续调用,每组调用分别进行20次,并计算平均合计调用时长,实验统计结果如图2所示。
结合两个实验的实验结果进行进一步的计算分析,得出性能提升比率。使用式(1)计算性能提升比率。其中P表示性能提升比率,t0表示加入主动内存缓冲前的单组结果平均调用时间,t1表示加入主动内存缓冲后的单组结果平均调用时间。
由于图2中记录的数据已经是基于多次实验结果计算的平均值,故在式(1)的计算中不再取平均值。计算分析结果如表4所示。
表4内存缓冲结合数据库模式和直连数据库模式的性能提升比率
由实验结果和计算可见,相较于通过数据库直接读取路由表,通过内存缓冲和数据库共同读取路由表的方式最少节省了29.18%的时间,最多节省了67.35%的时间,具有良好的效果。
然后,对优化后的API网关的完整调用过程进行性能对比实验。测试的对比对象为Springcloud和Zuul结合的API网关、基于Nginx搭建的API网关;假定所访问的微服务仅进行入参返回且无计算业务,以避免微服务的性能对测试造成影响;访问来源、API网关、微服务的程序部署环境一致;三种API网关没有加入任何需要规模计算的过滤规则,以避免过滤规则对性能产生影响;测试时对三种API网关分别进行2000个线程、4000个线程、8000个线程、16000个线程的完整访问,每个线程访问一次;获取测试结果后,使用式(2)所示的系统吞吐量计算公式进行计算,TPS(Transaction Per Second)是衡量软件系统并发性能的重要指标,式(2)中的n表示并发事务的数量,单位为个次,t表示单次实验中所有并发事务从请求开始到获取响应的完整时间,单位为秒,TPS为每秒处理事务的数量,即API网关的响应速率,单位为次/秒。
实验结果如图3所示。结合对三种不同的API网关进行的三组实验的实验结果进行进一步的计算分析,得出响应速率提升比。使用式(3)计算响应速率提升比。其中R表示响应速率提升比,r0表示Springcloud与Zuul结合的API网关或基于Nginx搭建的API网关的响应速率,r1表示优化后的API网关的响应速率。
由于图3中记录的数据已经是基于多次实验结果计算的平均值,故在式(3)的计算中不再取平均值。对于Springcloud与Zuul结合的API网关响应速率和本发明的基于优化后的API网关策略实现的API网关的响应速率的计算分析结果如表5所示。对于基于Nginx搭建的API网关的响应速率和基于优化后的API网关策略实现的API网关的响应速率的计算分析结果如表6所示。
表5本发明的API网关与对于Springcloud与Zuul结合的API网关在响应速率比方面的计算分析结果
表6本发明的API网关和对于基于Nginx搭建的API网关在响应速率比方面的计算分析结果
由实验结果可见,优化后的API网关加入了数据库持久化机制,并对数据库I/O进行了主动内存缓冲,在高并发和连续访问的状态下,从数据库读取数据的效率要高于Springcloud与Zuul结合的API网关从配置文件中读取数据的效率,当需要读取的数据在内存缓冲中被命中时,效率会更高,最终优化后的API网关相较于Springcloud与Zuul结合的API网关,响应速率最低提升212.44%,最高提升232.44%,平均提升223.14%。
基于Nginx搭建的API网关由于Nginx本身的限制,即Nginx原生带有一些初始的过滤规则,而前文已经提到,Nginx的过滤规则影响了业务功能的耦合度,所以优化后的API网关相对基于Nginx搭建的API网关,不仅拥有了数据库持久化与主动内存缓冲结合的性能优势,在耦合度上也具有优势,在高并发和连续调用的状态下,这种耦合度优势在性能上体现出来,最终优化后的API网关相较于基于Nginx搭建的API网关,响应速率最低提升1683.70%,最高提升2770.90%,平均提升2057.47%。
可以很明显地看到,基于本发明提供的一种经过持久化和耦合度优化的API网关在性能上有较大提升,在开发成本和维护成本上有很大优势。对于希望降低各方面成本、没有专业优化团队、高性能集群但对API网关又有需求的企业是一种很好的选择。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种经过持久化和耦合度优化的API网关,其特征在于,包括:核心业务模块、持久化业务模块、插件模块和可视化管理模块;其中:
核心业务模块包括Core业务单元、前置组件单元和后置组件单元;所述Core业务单元用于转发微服务消费者的请求数据和回传微服务的返回数据;所述前置组件单元和所述后置组件单元用于插入插件模块中的插件,利用插件提供过滤业务和插件服务;所述Core业务单元的RPC引擎采用HPROSE;
持久化业务模块,用于采用数据库对配置信息和路由表进行持久化,并将指定数据进行内存缓存;其中,所述路由表用于存储注册于API网关上的微服务的信息;
插件模块包括多个插件,每个插件在持久化业务模块中均对应有各自的数据库;
可视化管理模块,用于动态显示微服务的状态。
2.根据权利要求1所述的API网关,其特征在于,所述路由表的存储形式包括文本形式、配置文件形式和数据库表形式中的一种或多种。
3.根据权利要求1所述的API网关,其特征在于,所述将指定数据进行内存缓存,具体为:将指定数据存放至API网关所部署的计算机的运行内存中。
4.根据权利要求1所述的API网关,其特征在于,所述插件的插件类型分为:含有过滤规则的插件和不含过滤规则的插件;其中:
含有过滤规则的插件,用于过滤发送到API网关的请求和/或由API网关发出的请求;
不含过滤规则的插件,用于管理API网关自身业务和状态以及数据库中的数据。
5.基于权利要求1至4任一所述的API网关的微服务请求处理方法,其特征在于,包括:
前置组件单元中的插件接收微服务消费者发送的请求数据;
所述前置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据和所述请求数据进行计算,若计算结果符合所述前置组件单元中的插件中的过滤规则,则将所述请求数据转发至Core业务单元;
Core业务单元将所述请求数据转发至对应的微服务,并接收微服务的返回数据,将所述返回数据转发至后置组件单元中的插件;
所述后置组件单元中的插件在其对应的数据库中获取相关数据,并根据所述相关数据以及所述请求数据和/或返回数据进行计算,若计算结果符合所述后置组件单元中的插件中的过滤规则,则将所述返回数据转发至微服务消费者。
6.根据权利要求5所述的微服务请求处理方法,其特征在于,所述请求数据的数据结构包括:请求来源的地址、请求来源所被分配的鉴权标志、微服务所需的且符合微服务发布者规定格式的全部入参、在转发API网关登记且向所有微服务消费者公开的微服务的服务名称。
7.根据权利要求5所述的微服务请求处理方法,其特征在于,所述返回数据的数据结构包括:返回结果所附带的返回代码、返回结果的备注信息、微服务的返回值、请求来源的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010294300.0A CN111610979B (zh) | 2020-04-15 | 2020-04-15 | 一种经过持久化和耦合度优化的api网关及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010294300.0A CN111610979B (zh) | 2020-04-15 | 2020-04-15 | 一种经过持久化和耦合度优化的api网关及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111610979A CN111610979A (zh) | 2020-09-01 |
CN111610979B true CN111610979B (zh) | 2023-06-13 |
Family
ID=72203685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010294300.0A Active CN111610979B (zh) | 2020-04-15 | 2020-04-15 | 一种经过持久化和耦合度优化的api网关及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111610979B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261059B (zh) * | 2020-10-30 | 2022-05-13 | 江苏华邦网络科技有限公司 | 一种基于java网关技术平台通用性的接口方法及系统 |
CN112565093A (zh) * | 2020-12-11 | 2021-03-26 | 山东大学 | 一种基于内存数据库实现微服务路由动态变更的方法、存储介质 |
CN112988274B (zh) * | 2021-03-25 | 2023-01-31 | 北京滴普科技有限公司 | 微服务网关插件动态加载方法、装置、系统及其存储介质 |
CN113595925B (zh) * | 2021-07-06 | 2024-01-30 | 中企云链(北京)金融信息服务有限公司 | 一种智能网关动态限流实现方法 |
CN113765701B (zh) * | 2021-08-02 | 2024-02-20 | 中企云链(北京)金融信息服务有限公司 | 一种基于永久内存缓存的网关控制方法 |
CN114416314B (zh) * | 2022-01-18 | 2023-01-10 | 北京计算机技术及应用研究所 | 一种基于api网关的服务编排方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606794B1 (en) * | 2015-12-16 | 2017-03-28 | International Business Machines Corporation | Generating and managing applications using any number of different platforms |
WO2019232961A1 (zh) * | 2018-06-05 | 2019-12-12 | 平安科技(深圳)有限公司 | 接口自动化方法、系统、计算机设备和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577780B (zh) * | 2015-12-21 | 2018-12-04 | 武汉理工大学 | 一种基于微服务的高校教学云平台 |
CN106130759B (zh) * | 2016-06-22 | 2021-02-09 | 白杨 | 面向服务的模块化系统体系架构 |
CN106775498B (zh) * | 2017-01-23 | 2020-05-12 | 深圳国泰安教育技术有限公司 | 一种缓存数据同步方法及系统 |
CN107645508A (zh) * | 2017-10-16 | 2018-01-30 | 深圳市买买提乐购金融服务有限公司 | 一种数据处理系统、方法、客户端及服务器 |
CN108415944B (zh) * | 2018-01-30 | 2019-03-22 | 长安大学 | 一种交通环境下基于微服务的实时计算系统及其实现方法 |
US10613878B2 (en) * | 2018-02-27 | 2020-04-07 | Avid Technology, Inc. | Plug-ins as microservices |
CN109327509B (zh) * | 2018-09-11 | 2022-01-18 | 武汉魅瞳科技有限公司 | 一种主/从架构的低耦合的分布式流式计算系统 |
CN109191008A (zh) * | 2018-09-30 | 2019-01-11 | 江苏农牧科技职业学院 | 一种用于水产品质量安全监管系统的微服务框架系统 |
CN109639754B (zh) * | 2018-10-29 | 2021-02-09 | 南京南瑞继保电气有限公司 | 一种电网调度服务网关数据审计的实现方法 |
CN109597610A (zh) * | 2018-12-10 | 2019-04-09 | 南京华苏科技有限公司 | 一种基于微服务架构的应用结构组件化构建方法 |
-
2020
- 2020-04-15 CN CN202010294300.0A patent/CN111610979B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606794B1 (en) * | 2015-12-16 | 2017-03-28 | International Business Machines Corporation | Generating and managing applications using any number of different platforms |
WO2019232961A1 (zh) * | 2018-06-05 | 2019-12-12 | 平安科技(深圳)有限公司 | 接口自动化方法、系统、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
微服务体系结构实现框架综述;辛园园;钮俊;谢志军;张开乐;毛昕怡;;计算机工程与应用(第19期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111610979A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111610979B (zh) | 一种经过持久化和耦合度优化的api网关及其方法 | |
CN102968339B (zh) | 基于云计算架构实现复杂事件处理的系统及其方法 | |
CN107395674A (zh) | 一种应用系统访问异构区块链平台的方法及装置 | |
CN111414389A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112766646B (zh) | 任务流程的生成、处理方法、装置、设备和存储介质 | |
CN103399894A (zh) | 一种基于共享存储池的分布式事务处理方法 | |
CN110109958A (zh) | 缓存处理方法、装置、设备及计算机可读存储介质 | |
US20230072930A1 (en) | Database query splitting | |
CN110188307A (zh) | 一种多租户数据隔离方法、服务器及系统 | |
CN103455335A (zh) | 一种多级分类的Web实现方法 | |
US20100313207A1 (en) | Service provider management device, service provider management program, and service provider management method | |
CN111611089A (zh) | 一种基于异步的声明式的微服务调度方法 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
CN110177144B (zh) | 一种基于私有云一键复制应用环境的方法 | |
CN114282011B (zh) | 知识图谱的构建方法和装置、图计算方法及装置 | |
US11847120B2 (en) | Performance of SQL execution sequence in production database instance | |
US20090192842A1 (en) | Computer Programs, Methods, Apparatus and Systems Providing Improved Evaluation of Business Processes | |
CN110727700A (zh) | 多源流式数据整合成事务型流数据的方法及系统 | |
CN112541816A (zh) | 互联网金融消费信贷批量业务分布式流计算处理引擎 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN115604344B (zh) | 一种微服务的限流方法及装置 | |
US8406401B2 (en) | Interactive voice response system to business application interface | |
CN116975052A (zh) | 数据处理方法及相关设备 | |
CN115617924A (zh) | 金融数据处理方法、装置、设备及存储介质 | |
CN109635042B (zh) | Oltp与olap一体化的汽车金融大数据系统 |
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 |