好久没有更新博客啦,也说明好久没有学习了,惭愧,捂脸(*/ω\*)
最近因为工作原因,学习引入API网关,springcloud系列的gateway,注册中心使用nacos,nacos后续再另外记录学习笔记吧,先记录一下gateway。第一课程,先来点简单的理论知识吧。说一说什么是网关。
什么是服务网关?
1.出现在系统边界,面向API,船型集中式的强管控服务;
2.是一个服务器,是系统对外的唯一入口;
3.聚合接口使得服务对调用者透明,客户端与后端的耦合度降低;
4.聚合后台服务(因为后台服务可能使用的不同的语言,不同的平台基础等),节省流量,提高性能,提高用户体验;
5.提供安全、流控、过滤、计费、监控等API管理功能。
----
为什么要使用网关?
说先要说说微服务情况下没有网关的弊端
1.客户端多次请求不同的微服务,增加了客户端的复杂性
2.存在跨域请求,在一定场景下处理相对复杂
3.身份认证问题,每个微服务都需要独立的身份认证
4.难以重构,随着项目的迭代,可能需要重新划分微服务
5.某些微服务可能使用了防火墙或者对浏览器不友好的协议,直接访问会有一定的困难;
在这种情况下,使用网关后的优势如下:
1.易于监控,可在微服务网关手机监控数据并将其推送到外部系统进行分析
2.易于认证,可在微服务网关上进行认证,然后再将请求转发到后端的微服务,从而无需再每个微服务中进行认证
3.减少了客户端与各个微服务之间的交互次数
使用网关的基本功能如下:
1.统一接入
2.协议适配
3.安全防控
4.流量管控
具体功能如下:
1.性能:API高可用,负载均衡,容错机制;
2.安全:权限身份认证、脱敏、流量清洗、后端签名,黑名单等;
3.日志:全链路跟踪日志;
4.缓存:数据缓存;
5.监控:记录请求响应数据,API耗时分析,性能监控;
6.限流:流量控制,错峰流控,可以定义多种限流规则;
7.灰度:线上灰度部署,可以减小风险;
8.路由:动态路由规则。
常用的网关都有哪些?
1.NGINX+lua(适合门户网关)
2.kong
3.traefik(go语言)
4.spring cloud netflix zuul
5.spring cloud gateway