code学习

微服务为什么要有网关

网关作用

服务网关 = 路由转发 + 过滤器

1、路由转发:外界​请求​转发到​微服务​

2、过滤器:​权限校验、限流​、​监控​(路由转发也通过过滤器)

为什么需要网关

若不使用网关,情况如下:

  • 运维角度:路由规则与服务实例列表:若有实例增减或是IP 地址变动等需要手动修改。
  • 开发角度:以权限校验为例:需要每个微服务写同样的校验逻辑

使用网关之后

  • 网关可自动获得其他微服务实例信息
  • 网关同一维护权限

框架

微服务为什么要有网关

微服务架构:服务网关、open-service和service。

​1、流程:​

  • 服务网关、open-service和service启动时注册到注册中心上去;
  • 网关做智能路由转发(包括服务发现,负载均衡)到open-service,这其中包含权限校验、监控、限流等操作open-service聚合内部service响应,返回给网关,网关再返回给用户

​2、注意点​

​多一层转发​,性能下降(不大);尽量轻

​防止网关单点​:前边再​挂nginx​性能极高,基本不挂,网关就可不断添加机器。​最好​是网关​单点​服务部署在一台​牛机器上​(压测估算),且nginx与zuul性能相差不大。

​3、基本功能​

​智能路由​:接收​外部​一切请求,并转发到后端的对外服务open-service上去;服务之间不走网关

​权限校验​:只校验用户open-service服务请求,不校验内部

​API监控​:监控请求,本身性能指标(如gc);

​限流​:配合监控限流

​API日志统一收集:​类似aspect切面,接口进出日志。

​A|B测试​:实验配置、数据埋点(看转化率)及分流引擎(调用内部服务在open-service中)

技术选型

开发语言:java + groovy,groovy的好处是网关服务不需要重启就可以动态的添加filter来实现一些功能;

微服务基础框架:springboot;

网关基础组件:​netflix zuul;​

服务注册中心:consul;

权限校验:jwt;

API监控:prometheus + grafana;

API统一日志收集:logback + ELK;

压力测试:Jmeter;

其他网址

​​(十)为什么微服务一定要有网关? - 简书​​