当前位置: 首页 > 后端技术 > Java

api网关简介

时间:2023-04-02 01:06:04 Java

1.什么是网关?API网关是系统的唯一入口。它是许多分布式服务的唯一出路。实现了物理隔离,只有通过网关才能将内网服务暴露给外网,让其他人访问。简而言之:网关就是您家的大门2.提供什么功能?身份认证(oauth2/jwt)权限安全(黑白名单/爬虫控制)流量控制(请求大小/速率)数据转换(公共请求请求/响应)监控/指标跨域问题(前后端分离)-end)灰度发布(金丝雀发布/部分老客户端/部分新客户端)3.市面上有哪些比较好的开源网关OpenRestykongSpringCloudZuul/GatewayZuul2网关限制流量认证监控易用性可维护性成熟度Spring云网关可以通过IP、用户、集群限制流量,并提供相应接口扩展普通认证,auth2.0GatewayMetricsFilter简单易用Spring系列扩展性强,配置简单,可维护性好spring社区成熟,但是网关资源少差开源不久,资料少以后会维护很成熟的资料很多Kong按秒、分、时、日、月、年,根据用户限流。可以在原有代码的基础上进行开发。普通认证,KeyAuth认证,HMAC,auth2.0可以上报datadog,记录请求次数,请求数据量,响应数据量,收发时间间隔,状态码个数,kong内部运行时简单易用,通过管理员界面配置API转发,开发需要lua脚本。可维护性差,以后需要维护大量的lua库。比较成熟,用户问题总结,社区,插件开源4.如何做网关(SpringCloudGateway)第一个网关pom.xmlorg.springframework.cloudspring-cloud-starter-gatewayApplication.java@SpringBootApplicationpublicclassGatewayApplication{publicstaticvoidmain(String[]args){SpringApplication.run(GatewayApplication.class,args);}//相当于yml文件中的配置@BeanpublicRouteLocatorcustomRouteLocator(RouteLocatorBuilderbuilder){returnbuilder.routes().route(r->r.path("/test/aa").uri("http://www.baidu.com")).route(r->r.path("/baidu").uri("http://www.baidu.com")).route(r->r.path("/testa/**").uri("lb://servicea")).build();}}启动参数支持的路由方式LoadedRoutePredicateFactory[After]2020-06-1211:39:21.811INFO3680---[main]o.s.c.g.r.RouteDefinitionRouteLocator:LoadedRoutePredicateFactory[Before]2020-06-12:21.811INFO3680---[main]3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[Between]2020-06-1211:39:21.811INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[Cookie]2020-06:39:12:121.811INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[标头]2020-06-1211:39:21.812INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[主机]:2016-101-1020-1239:21.812INFO3680---[main]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[方法]2020-06-1211:39:21.812INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载的RoutePredicateFactory[路径]2020-06-1211:39:21.812INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载RoutePredicateFactory[查询]2020-06-1211:39:21.812INFO3680---[主要]o.s.c.g.r.RouteDefinitionRouteLocator:加载RoutePredicateFactory[远程地址]2020-06-1211:39:21.812信息3680---[主要]main]o.s.c.g.r.RouteDefinitionRouteLocator:LoadedRoutePredicateFactory[CloudFoundryRouteService]打开端点检查访问url:http://localhost:9002/actuato...pom.xml添加org.springframework.bootspring-boot-starter-actuatoryml添加配置endpoint开启管理:endpoints:web:exposure:include:"*"参考代码位置:https://github.com/jackssybin/springclouditems.git本文由多帖博客平台OpenWrite发布!