网关的演变过程
- 传统的单体技术架构,所有的内容,被打包进一个包内。为了保证,系统的稳定安全,需要开发一些过滤器、拦截器,来实现对客户端请求的过滤和拦截,以及完成最终请求的转发。微服务技术解决方案下,同样需要为每个服务开发过滤器、拦截器来进行请求管理。但由于服务数量众多,同时服务端的形式多样化,如果在每个服务上开发,将会造成很大的代码冗余与开发负担。因此,将相同的一些功能,抽取到一个服务内实现,这便成为了一个组件,就是现在的网关。
网关存在的原因
- 解决微服务技术架构下,请求管理功能
- 解决微服务架构下,多客户端的适配,采用单一入口完成协议适配
网关的基本功能
- 网关作为单点入口,完成统一的请求管理
- 免去客户端直接对接众多微服务的复杂性,采用单点入口,实现路由转发、从而实现服务调用
-
服务对于整个系统来讲,是不稳定的,那么网关,需要进行限流熔断,保持系统的稳定与分区容错性
-
对于服务调用的链路,网关有职责进行记录,日志监控,保证整个系统,在监控下工作
-
系统可能不仅仅是由自有客户端调用,很多时候,系统开放能力API给外部,因此网关需要安全认证,来保证安全
总结
- 单点入口
- 路由转发
- 限流熔断
- 日志监控
- 安全认证
对网关的理解
- 单我们自己开发时与前端对接需要配置地址此时在自己本地都是绝对路径,系统上线后这里需要改为公网的域名,不利于系统维护。而且多个服务时若没有网关就需要一个个去配置路径。增加一个网关后在前端代码中只需要指定每个接口的相对路径。
- 在前端代码的一个固定的地方在接口地址前统一加 网关的地址,每个请求统一到网关由网关将请求转发到具体的微服务。
为什么所有的请求先到网关呢?
- 有了网关就可以对请求进行路由,路由到具体的微服务,减少外界对接微服务的成本,比如:400电话,路由的是可以根据请求路径请求路径进行路由、根据host地址进行路由等,当微服务有多个实例时可以通过负载均衡算法进行路由。