微服务(六)网关zuul

  • 1、网关zuul
  • 2、负载均衡

1、网关zuul

微服务基本模块已经有了,也可以做微服务了。但完成一个复杂的业务,可能需要多个微服务合作来完成,比如下单,需要用户服务,支付服务,地图服务,订单服务。一般是我们对外服务的窗口,进行服务内外隔离。一般微服务都在内网,不做安全验证,

就好像:很多明星,可以独立开演唱会(独立提供服务)。也可以去春晚(微服务群提供服务)。但一台春晚就不能让 观众一个一个调用了。观众要调用,需要检票啥的,检票就类似于网关,进来之后,界面随便看,不会说你 看个小品,还需要再检票。

微服务没有网关,会有下面的问题:

  1. 客户端请求多个微服务,增加了客户端复杂性,每个微服务都要做用户认证,限流等,避免和多个微服务打交道的复杂性。

  2. 有跨域问题,不在同一个域。

  3. 认证复杂,每个服务都要独立认证,服务要求的权限不一致。

  4. 难以重构。因为微服务被客户端调用着,重构难以实施。

网关是介于客户端(外部调用方比如app,h5)和微服务的中间层。

Zuul是Netflix开源的微服务网关,核心是一系列过滤器。这些过滤器可以完成以下功能。

  1. 是所有微服务入口,进行分发。
  2. 身份认证与安全。识别合法的请求,拦截不合法的请求。
  3. 监控。在入口处监控,更全面。
  4. 动态路由。动态将请求分发到不同的后端集群。
  5. 压力测试。可以逐渐增加对后端服务的流量,进行测试。
  6. 负载均衡。也是用ribbon。
  7. 限流(望京超市)。比如我每秒只要1000次,10001次就不让访问了。
  8. 服务熔断

网关和服务的关系:演员和剧场检票人员的关系。
zuul默认集成了:ribbon和hystrix。

建一个新的项目,选择zuul与eureka client。
添加properties

eureka.client.service-url.defaultZone=http://euk1.com:7001/eureka/
spring.application.name=zuulserver
server.port=80

在启动类加上注解

@EnableZuulProxy

测试访问
网关会将服务名转换成具体服务的ip和端口,实际进行访问。

我们zuul启动的80端口,而userconsumer启动的是90端口。先看下访问90端口。

再看下访问80端口,并访问consumer。

下面是请求打过来的整体流程图

根据规则将请求中转到需要的服务。
以代理模式或者隧道模式处理用户的所有请求,访问后面的服务都需要过一遍网关,根据url定位具体的资源这就是路由,

降级可以前置,在网关阶段,后台的服务则不可以调起了。
这些都是基于隧道模式的网关。这种网关叫做业务网关。Zuul基于filter的,性能肯定不太行,(吞吐量不行)。但是可以将serlet状态为无状态(JWT),只做路由转发;优化线程,异步。
Nginx也可以做这些事情,kong也是基于nginx。
一般可以写请求接入进来,而读请求则用另外一种模式,加个缓存。

除了隧道模式,还有一种是路由模式DR。用户与网关建立请求后,直接将请求给后台(穿过去了),然后响应也直接给用户了。网关作为透明代理,不介入任何事。但是上面说的所有的功能都干不了。

这种·DR模型,性能来讲,最好。

2、负载均衡

直接启动2台provider,2台consumer。
负载均衡,provider失败时:

刷新一下,可以看到consumer层由负载均衡,但是provide层报错显示了哈哈。

Provider成功时:


查看路由端点,需要加入actuator的依赖。

微服务(六)网关zuul相关推荐

  1. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  2. zuul 网关的用途_微服务之基于Zuul自研服务网关

    API网关的作用 我们知道,在一个微服务系统中,整个系统被划分为许多小模块,客户端想要调用服务,可能需要维护很多ip+port信息,管理十分复杂.API网关作为整个系统的统一入口,所有请求由网关接收并 ...

  3. 网关转发其他微服务后头信息拿不到_微服务之基于Zuul自研服务网关

    API网关的作用 我们知道,在一个微服务系统中,整个系统被划分为许多小模块,客户端想要调用服务,可能需要维护很多ip+port信息,管理十分复杂.API网关作为整个系统的统一入口,所有请求由网关接收并 ...

  4. vivo亿级微服务 API 网关架构实践

    一.背景介绍 网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全.可用性高的业务网关. 二.技术选型 常见的开源网关按照语言分类有如下 ...

  5. 一文吃透何为微服务、网关、服务发现/注册?

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  6. 一文吃透何为微服务、网关、服务发现/注册

    Part1序 随着互联网业务复杂性慢慢提高,单机服务的架构慢慢出现了生产效率问题 微服务架构带来的有优点也有缺点,使用前需要调研清楚 微服务架构的网关设计.服务注册/发现.配置管理都是关键点 Part ...

  7. 何为微服务、网关、服务发现/注册?

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  8. vivo 微服务 API 网关架构实践

    一.背景介绍 网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全.可用性高的业务网关. 二.技术选型 常见的开源网关按照语言分类有如下 ...

  9. 微服务认证模式_微服务之“网关模式”

    定义 API网关是一个服务器,它是系统中的单个入口点,用户对API网关进行单一呼叫,然后API网关调用每个相关的微服务器.它类似于面向对象设计的Facade模式.API网关封装内部系统架构,并提供针对 ...

  10. 又肝了下微服务 API 网关“金刚”,也是蛮香的~

    " 摘要: 原创出处 http://www.iocoder.cn/Kong/install/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速安装 3. Kong 控制台 4. ...

最新文章

  1. 项目管理六大制约因素_知道了这7点,软件项目管理会变得更简单!
  2. python pexpect telnet_使用python的pexpect模块,实现远程免密登录的示例
  3. mysql replace into 使用过程中报错
  4. scanf family API 高级用法
  5. 走完线上 BUG 定位最后一公里
  6. a标签实现不跳转点击
  7. 主流开源开发者工具落地阿里云,进一步提升开发者体验
  8. 数据库编程连接mysql_使用JDBC编程-连接MySQL数据库
  9. 清北复交人浙南 计算机交叉学科项目大盘点
  10. [BZOJ4816][SDOI2017]数字表格(反演)
  11. 燃烧的远征服务器排队小程序,请排队-在线排队叫号微信小程序
  12. html5小游戏猴子爬树源码,猴子爬树小班教案
  13. ICommand和ITool命令操作地图
  14. 原生 JS 实现移动端 Touch 滑动反弹
  15. 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
  16. 最近五年中秋节后第一天涨幅前十个股在此 沪深三七开 更多规律你来找
  17. 使用vue+elementUI页面实现前端做分页
  18. H5: 关于底部导航使用“fixed”会遮住网页最下面内容的解决办法!
  19. oracle常用函数 (一)
  20. 波波:App Store改版深入测评,生态改变,行业大洗牌

热门文章

  1. 吴恩达2022机器学习--神经网络(求指点)
  2. DirectX 9.0 (3) 漫射光
  3. 移动端调试——eruda
  4. 第 27 章 LCD—液晶显示
  5. 如何实现用户增长以及提高转化率?
  6. 利用ContentProvider和ContentResolver达到QQ换肤以及数据共享查询(暂无内容)
  7. C语言 extern
  8. 腾讯T3亲自教你!2021年Android网络编程总结篇,最强技术实现
  9. 搭建神经网络实现简单图片分类
  10. java+mysql 实现实体的映射与翻译