美文网首页JavaSpring Cloud微服务
(十)为什么微服务一定要有网关?

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

作者: hedgehog1112 | 来源:发表于2019-12-12 15:56 被阅读0次

    一、什么是服务网关

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

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

    2、过滤器:横切如权限校验、限流监控,(路由转发也通过过滤器)。

    二、为什么需要服务网关

    权限校验:

    (1)公共服务中,其他所有都依赖它。

    缺点:1.jar增加大,用docker镜像部署,jar越小越好。2.都引入升级难,所有服务都重新引包,编译部署。

    (2)写服务网关前置过滤器中,请求过来权限校验,只升级网关就可以

    三、选型

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

    1、流程:

    服务网关、open-service和service启动时注册到注册中心上去;

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

    2、注意点

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

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

    ps:一定有单点,可能网关、nginx、dns服务器等。

    3、基本功能

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

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

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

    限流:配合监控限流

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

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

    4、技术选型

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

    微服务基础框架:springboot;

    网关基础组件:netflix zuul;

    服务注册中心:consul;

    权限校验:jwt;

    API监控:prometheus + grafana;

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

    压力测试:Jmeter;

    相关文章

      网友评论

        本文标题:(十)为什么微服务一定要有网关?

        本文链接:https://www.haomeiwen.com/subject/fejtnctx.html