点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

作者:种下星星的日子

blog.csdn.net/hongwei15732623364

传统开发方式,所有的服务都是本地的,UI可以直接调用,现在功能拆分成独立的服务,跑在独立的虚拟机上的java进程了。客户端如何访问他呢?

后台有N个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不符合我们拆分的理念。微服务在系统内部通常无状态,用户登录信息和权限管理最后有个统一的地方维护管理(OAuth)。

不同的微服务有不同的网络地址,而外部的客户端可能要调用多个服务的接口才能完成一个业务需求。比如一个电影购票可能调用用户微服务,电影微服务等,如果客户端直接和微服务通信,会存在如下常见问题:

  • 客户端多次请求不同微服务,增加客户端的复杂性

  • 跨域问题,一定场景下处理相对复杂

  • 认证复杂,每个服务都要独立认证

  • 难重构,随着项目迭代,可能需重新划分微服务,重构难以实施

  • 某些微服务可能使用了其他协议,直接访问会有问题

以上问题可以借助微服务网关API Gateway来解决,微服务网关介于客户端和服务器端之间,所有的外部请求都会先经过微服务网关:

这样客户端只需和网关交互,无需直接调用特定微服务的接口,方便监控,易于认证,减少客户端和各微服务间的交互。

Zuul

Zuul作用:

  • 提供统一服务入口,微服务对前台透明

  • 聚合后台服务,节省流量,提升性能

  • 安全,过滤,流控等API管理功能

  • 提供统一服务出口,解耦

过滤器类型:

  • PRE:请求路由之前调

  • ROUTING:路由到微服务

  • POST:路由到微服务之后

  • ERROR:其他阶段发生错误后执行

除了默认的过滤器类型,Zuul还允许创建自定义的过滤器类型。

Zuul高可用

通过将多个zuul节点注册到Eureka Server实现高可用。存在以下两种情况:

Zuul客户端注册到了Eureka Server

Zuul客户端自动从Eureka Server查询Zuul Server列表,并用Ribbon负载均衡请求Zuul集群。

未注册到Eureka Server

微服务可能被其他微服务调用,也可能直接被终端app调用,这种情况,我们需要借助额外的负载均衡器来实现Zuul的高可用,比如Nginx等。

Zuul聚合微服务

许多场景下,一个外部请求,可能要查询后端多个微服务。比如一个电影售票系统,在购票订单页上,需要查电影微服务,还有用户微服务,如果让系统直接请求各个微服务,就算使用Zuul转发,网络开销、流量耗费、时长都不是很好,这时我们就可以使用Zuul聚合微服务请求,即应用系统值发送一个请求给Zuul,由Zuul请求用户微服务和电影微服务,并把数据返给应用系统。

参考:

https://blog.csdn.net/chengqiuming/article/details/80860981
https://blog.csdn.net/zhanglh046/article/details/78651993/

(点击可跳转)

1. Web网站架构演变历程

2. Java 编程军规

3. Springboot + redis + 注解 + 拦截器来实现接口幂等性校验

4. 有助于改善性能的Java代码技巧

看到这里了,就关注一个呗

【微服务】Zuul的必要性相关推荐

  1. SpringCloud微服务Zuul网关动态路由

    SpringCloud微服务Zuul网关动态路由 zuul动态路由 1. 网关层动态配置路由映射规则 2. 将同一个请求根据自定义的规则,路由到不同服务中 FeignClient动态请求 实现功能 实 ...

  2. 有关微服务Zuul网关面试题分享【持续更新中】

    一.网关与过滤器有什么区别? 答:网关是对所有服务的请求进行分析过滤,过滤器是对单个服务而言. 二.常用的网关框架有哪些? 答:Nginx.Zuul.Gateway. 三.Zuul与Nginx有什么区 ...

  3. Zuul微服务网关、容错与监控、Zuul路由端点、路由配置、Zuul上传文件、Zuul过滤器、Zuul异常处理、Zuul回退、Zuul聚合微服务

    一.为什么要使用微服务网关 二.Zuul 1.编写Zuul微服务网关 2.Zuul的Hystrix容错与监控 3.Zuul的路由端点 4.路由配置 1.自定义指定微服务的访问路径 2.忽略指定微服务 ...

  4. 使用Zuul构建微服务网关(路由)

    文章目录 一.网关产生的背景 二.Zuul简介 三.Zuul实现API网关 四. 路由配置详解 五.Zuul的容错与回退 六.Zuul的安全与Header 1.敏感头设置 2.忽略Header 七.Z ...

  5. 微服务技术发展的现状与展望

    微服务技术发展的现状与展望 人工智能技术与咨询 来源:计算机研究与发展,作者冯志勇等 摘 要 随着云计算.物联网等技术迅速发展,用户对软件系统的需求趋于多样化,面向服务的体系架构(service or ...

  6. SpringCloud微服务,euraka、feign、hystrix组件学习

    SpringCloud 1 eureka 1.1 eureka基本概念 eureka主要包含两个组件:Eureka Server 和 Eureka Client. eureka server(注册中心 ...

  7. 迭代开发中的微服务拆分

    微服务拆分是微服务架构绕不过的话题,随着架构演进,在迭代开发中拆分微服务有时非常必要,微服务拆分不仅仅是一项技术层面的重构,首先要选择的合适的时机,另外在拆分前一定要理清业务现状,制定好拆分的基本原则 ...

  8. 二. 微服务的高级进阶

    二. 微服务的高级进阶 1. Ribbon API和负载均衡算法 1. Ribbon API Ribbon 是一个独立的组件,是用来进行远程接口调用的,代码如下 @Slf4j @Service @Sc ...

  9. 微服务深入浅出(7)-- 网关路由Zuul

    Zuul用于构建边界服务,致力于动态路由,过滤,监控,弹性伸缩和安全等方向. 1.Zuul+Ribbon+Eureka结合,可以实现智能路由和负载均衡 2.网关将所有服务的API接口统一聚合统一暴露 ...

最新文章

  1. 面试官问我 StringBuilder 线程不安全的点在哪儿.....
  2. 一个学机械的毕业生令中国人无法安眠的帖子
  3. 已解决:pod资源清单yaml中各字段详解
  4. 如果有一天,我们和甲方交换身份…
  5. MATLAB功率谱函数psd与pwelch的使用
  6. mwc校准油门_编写下载服务器。 第五部分:油门下载速度
  7. nodejs,express链式反应
  8. OpenShift 4 - 多云管理(1) - 安装 RHACM、导入已有集群、配置观察功能
  9. teamspeak3服务器搭建_教你快速便捷的搭建Teamspeak 3 服务器和基友开黑必备!
  10. UIScrollView 手势缩放
  11. 准确率(accuracy),精确率(Precision),召回率(Recall)和F1-Measure
  12. python web 文件管理器_利用Python 1分钟搭建测试Web服务器,可实现linux目录文件共享...
  13. 后台运行 命令_Docker基本命令
  14. 最大流(Dinic算法)
  15. 常用的分类与预测算法
  16. vue html5 picker,详解VUE-地区选择器(V-Distpicker)组件使用心得
  17. linux更改文件系统格式,只安装Linux系统,把硬盘全部格式化成Linux文件系统
  18. 网络流量分类方法调研
  19. VLC保存网络流到本地和fiddler下载视频
  20. contiki之list头文件

热门文章

  1. 使用OpenCV实现人脸检测(Python)
  2. 云服务器和本地服务器的区别在哪?这些区别令人心动
  3. word 图片右边显示多行文字
  4. 一篇学会java数组(包含实例解析+算法实现,建议看后上手实操)
  5. JimuReport积木报表—表达式介绍
  6. 『网络协议攻防实验』TCP会话劫持攻击
  7. 百度不收录原因分析——Spider抓取篇
  8. 魔术般的科技!准备好迎向科技了吗?
  9. linux怎么处理带空格的文件,Linux中如何批量处理带空格的文件名
  10. Python关闭文件