目录:
1.api网关怎么实现
2.API网关作用
3.api网关和前端网关
4.api网关和网关区别
5.通过网关调用接口
6.api网关的优缺点
7.api网关与服务总线区别
8.api网关技术总结
9.api网关什么用
10.什么是API网关
1.api网关怎么实现
来源:公众号代码如诗 , 作者 朴瑞卿 如何设计实现一个轻量的开放API网关.文章地址: https://blog.piaoruiqing.com/blog/2019/08/05/开放api网关实践/
2.API网关作用
前言随着业务的发展, 所对接的第三方越来越多, 各个业务系统面临着同样一个问题: 如何让第三方安全快速接入. 此时有一个集验签、鉴权、限流、降级等功能于一身的API网关服务变得尤为重要.接下来将分享如何设计实现一个轻量级的API开放网关, 包括接口设计、数据库设计、签名验签方案、鉴权等. 本文侧重于总体设计, 具体实现细节将陆续在后续的文章中分享.
3.api网关和前端网关
API网关简介API网关在微服务中尤为重要, 其抽象了鉴权、限流、降级等各个业务系统通用的功能. 作为众多内部业务系统外的一层屏障.基本需求签名及验签鉴权路由权限及资源管理总体设计验签、鉴权等功能以职责链的方式进行处理, 网关根据配置进行路由并附加参数用以配合业务系统进行处理(如数据过滤等). 简要请求处理流程如下:
4.api网关和网关区别
接口设计网关最基本的功能是转发请求, 常见的方式是根据配置中的路由规则将请求转发给内部服务, 如:将/order/*的请求转发给内部的订单系统、/user/*的请求转发给内部的用户系统, 这种做法常用于对整个业务系统负责的基础网关.
5.通过网关调用接口
而本文所设计的是服务于第三方的开放API网关, 并未使用上述做法, 而是将请求的资源作为参数放到请求体中, 其原因如下:开放API服务于第三方, 屏蔽内部路径, 有利于提供命名统一且规范的接口.请求接口的映射由网关的路由表维护, 内部接口升级甚至切换到新服务对外接口不变.
6.api网关的优缺点
能够更细粒度地针对接口进行权限控制、限流、统计等.地址开放API网关对外提供唯一入口, 具体请求的资源作为参数传入.公共参数为了简化签名和验签的操作, 同时也提高灵活度, 唯一入口的约定了固定的公共参数和返回值, 如下:
7.api网关与服务总线区别
公共请求参数
8.api网关技术总结
app_id: 应用ID, 应用ID是授权的主体, 是调用方的身份标识method: 请求方法, 与内部URL对应, 由网关的路由表维护.timestamp和nonce用来防重放攻击.biz_content: 业务参数, 这个参数将转发给内部业务系统.
9.api网关什么用
公共返回参数
10.什么是API网关
biz_content: 返回业务参数, 网关转发业务系统的返回值.[版权声明]本文发布于朴瑞卿的博客, 允许非商业用途转载, 但转载必须保留原作者朴瑞卿 及链接:http://blog.piaoruiqing.com. 如有授权方面的协商或合作, 请联系邮箱: piaoruiqing@gmail.com.
签名方案调用方和服务方均生成2048位RSA秘钥, 交换公钥. 私钥用于签名, 公钥用于验签, 开放API网关对外接口使用https, 故暂不需额外做加密处理.签名算法
签名规则签名参数内容剔除sign之后的全部参数.签名参数排序按照参数名的ASCII码递增排序(字母升序排序).签名生成方式排序后的参数列表组合成参数名a=参数值a&参数名b=参数值b&…&参数名z=参数值z的字符串, 并使用私钥生成sign.
数据库设计数据库用于存储秘钥权限等配置, 程序和数据库之间有多级缓存用以提高访问速度. 简要ER图如下:
app: 调用方主体, 用于标识请求方身份.group: 组, app分组, 可通过group统一进行授权.subject: 主体(app/group).resource: 资源, 维护请求资源与内部接口的映射关系, url+http_method 对应唯一的resource_id.
技术选型网关除了满足功能上的需求外, 性能上的需求也需要着重考虑, 毕竟作为各个业务系统对外的唯一入口, 网关的性能可能会成为整个业务系统的瓶颈. 业务并不复杂, 性能要求高, 响应式编程正是一个不错的选择.
Spring WebFlux + netty: 响应式Web框架.Spring Data Reactive Redis + Lettuce: 响应式redis客户端.Guava: Google工具包, 使用LoadingCache作为进程内缓存.
结语网关作为内部系统外面的一层屏障和入口, 除基本功能和性能上的需求外, 监控、统计、日志等都是需要考虑到的问题, 网关方面开源产品众多, 但选择时一定要考虑自身业务, 适合自身的前提下参考各个成熟的方案进行实践.
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容