目录
1.什么是网关和网关的应用情景
2.网关是如何演化来的,在微服务中有什么作用?
3.网关的基本功能
4.Spring Cloud gateway的发展史
5.和网关类似的功能组件:
6.为什么微服务当中一定要有网关
7.微服务网关的优点
8.gateway的搭建过程(做一个网关)
一个域名对应一个服务器,前端将域名通过dns解析到域名所在的服务器(nginx),网关是一个springboot程序,也是一个集群。由nginx对这三个网关做负载均衡,这三个网关服务一般还有个api,而服务只有rpc远程调用
①、api的好处
a、后台服务只提供RPC接口,传输更加高效。因为dubbo可以用二进制传输文件。
b、api可以对所有对外暴露的端口做入参出参的限制
①、随着单体架构转化为微服务架构的时候,由一个后台服务由一个单一的服务变成了多个微服务,前端应用需要调用多个服务的接口,为了解决这个问题,网关就产生了。网关就是说微服务架构当中一个对外的统一入口,解耦客户端与内部服务。
①、网关的核心功能就是路由转发(反向代理),因为不要有耗时的操作在网关上处理,比如说特定的业务逻辑,网关需要将请求快速转发到后台各个微服务上。
②、网关还能做统一的熔断,限流,认证,日志监控等
①、在1.X的版本当中,网关采用的Zuul网关,但是2.X版本当中,spring自己研发了一套网关程序,就是Spring Cloud gateway。
①、nginx:主要作用是反向代理和负载均衡。缺点:配置不灵活
②、zuul网关:早期的微服务使用的网关。缺点:功能和性能都不如Spring Cloud gateway。
③、Spring Cloud gateway:优点:性能比zuul要高,而且可以无缝衔接到微服务开发中来。
①、如果没有网关,客户端要请求不同的微服务后端,增加了客户端的复杂性
②、存在跨域问题(客户端访问不同的后端ip和端口号是不一样的)
③、认证复杂,每个服务都需要独立认证,比如说登录认证,如果没有网关,所有后台都需要做一次登录认证
④、个别的微服务可能没有外网端口,客户端不能直接访问到微服务后端
⑤、前后端不能解耦,重构困难,比如说有一天需要将一个微服务,继续拆分为两个微服务,那前端也需要改造。因为前端得需要修改拆分后的ip和端口。如果有网关,前端就不需要改造
①、反向代理(不需要暴露微服务的真实ip,微服务可以只暴露内网端口,更安全)
②、易于监控:通过网关我们可以统计哪些api的调用量最多,哪些api的耗时比较长,从而做特定优化。
③、易于认证(只需要网关做登录认证就可以,其他微服务不需要做)
④、可以将所有微服务的接口做统计与拦截(微服务接口的管理者)
①、起一个空的springboot程序
②、引入pom依赖(注意Springboot和springcloud的版本号要对应)
org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
③、 在启动类上面加一个@RestController
④、配置.xml文件
浏览器上的localhost:8888/test会自动转化位uri上的http://localhost:8081
server: port:8888 #微服务名称 spring: application: name: gateway cloud: gateway: routes: #路径匹配 id: find uri: http://localhost:8081/ predicates: - Path=/user-service/** - Path=/test/**