前面两篇从其他地方抄来的文章主要是介绍以下微服务以及API Gateway ,以下就是我实现的API Gateway主要的功能以及实现的思路
技术选型
由于本人技术限制,大家已经猜到了
node(koa2) + mysql + VUE + nginx
前端和mysql没什么好说的,纯粹是我最熟悉就是他们两个了
对于大多数应用程序而言,API网关的性能和可扩展性通常都非常重要。因此,将 API网关构建在一个支持异步、I/O非阻塞的平台上是合理的。有多种不同的技术可以用于实现一个可扩展的API网关。在JVM上,可以使用一种基于 NIO的框架,比如Netty、Vertx、Spring Reactor或JBoss Undertow中的一种。一个非常流行的非JVM选项是Node.js,它是一个以Chrome JavaScript引擎为基础构建的平台。
功能实现
API网关作为微服务的入口点
这是API网关的基本功能
为了实现这个功能,我需要有一个具体的方案
因为gs的需求,我们只有http或者https两种,其他的协议方式可以留到以后进行优化
一般分为两种get/post请求方式
get方式
参数一: url
参数二:参数:query
参数三:gateway 地址
post方式
参数一: url
参数二:参数:props
参数三:gateway 地址
技术实现
1 | npm install --save request |
get
1 | const request = require('request'); |
post
1 |
|
post form
1 | const request = require('request'); |
匹配路由
(原方案是动态生成路由,不能满足方案,已放弃)
利用正则模糊匹配,根据参数决定具体的逻辑
匹配任何字符:[\s\S]*
没有成功
1 |
|
认证
使用access_token
每一个url根据用户生成一个assess_token,状态码为1(true)或者0(false)
1 |
|
数据聚合
可能是两个接口的数据的聚合
熔断
token认证中的状态码控制
监控
log4js日志收集响应日志,通过响应日志监控
每天会将日志导入到数据库中