下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 55 | 前置过滤器实验(Lab01)
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

微服务架构实战160讲

共171讲 · 171课时·约2000分钟
9917
免费
01 | 第一模块课程介绍
免费
02 | 微服务安全要解决什么问题
免费
03 | 白话 OAuth2
免费
04 | OAuth2 的正式定义
免费
05 | OAuth2 有哪些典型模式
06 | OAuth2 模式该如何选型
07 | Spring Security OAuth...
08 |【实验】授权码模式授权服务...
09 |【实验】简化模式授权服务器
10 |【实验】密码模式授权服务器
11 |【实验】客户端模式授权服务...
12 | 实验一扩展环节
13 |【实验】Web 应用接入授权...
14 | 实验二扩展环节
15 | 什么是 JWT 令牌
16 |【实验】授权服务器支持 JW...
17 | 实验三扩展环节
18 |【实验】Android 无线应用...
19 |【实验】AngularJS 单页应...
20 |【实验】GitHub社交登录实验...
21 | 【实验】OAuth2安全风险CS...
22 | OpenId Connect简介
23 | 下一代微服务安全架构
24 | 参考资源和后续课程预览
免费
25 | Apollo作者的产品介绍
免费
26 | 第二模块课程介绍
免费
27 | 课程概述
免费
28 | 业务需求
免费
29 | 配置定义和场景
30 | 开关驱动开发原理
31 | 携程 Apollo 配置中心介...
32 | Apollo核心概念
33 | Apollo快速起步(Lab01)
34 | Apollo快速起步扩展实验
35 | Apollo架构设计之服务器端
36 | Apollo架构设计之客户端
37 | Apollo架构设计之高可用和...
38 | Apollo分布式部署指南
39 | Apollo Java客户端和多语...
40 | Apollo Client API实操...
41 | Apollo Client和Spring集...
42 | Apollo Client和Spring集...
43 | Apollo Client和Spring ...
44 | Apollo开放平台接入实操...
45 | Spring Cloud Config简...
46 | Apollo vs Spring Clou...
47 | Apollo FAQ和开发常见问...
48 | 参考资源和后续课程预览
免费
49 | 第三模块课程介绍
免费
50 | Zuul网关和基本应用场景
免费
51 | Zuul网关高级应用场景
52 | Zuul网关架构剖析
53 | Zuul网关代码剖析(Code ...
54 | Zuul网关过滤器管理工具(...
55 | 前置过滤器实验(Lab01)
56 | 路由过滤器实验(Lab02)
57 | 后置过滤器实验(Lab03)
58 | Zuul网关对接Apollo(Lab0...
59 | Zuul网关生产部署实践
60 | Zuul网关路由管理实践
61 | 基于网关的两层路由体系
62 | Spring Cloud Zuul(Lab...
63 | Zuul2.0简介
64 | Zuul网关生产最佳实践
65 | 参考资源和后续课程预览
免费
66 | 第四模块课程介绍
免费
67 | 调用链监控业务需求
免费
68 | 调用链监控原理
69 | 调用链监控产品和比较
70 | 点评 CAT 背景介绍
71 | CAT 典型报表
72 | CAT 告警简介
73 | CAT 架构设计
74 |【实验】CAT 本地部署
75 | CAT 埋点案例和代码剖析...
76 |【实验】CAT 埋点案例
77 | Zuul 网关集成 CAT 代...
78 |【实验】Zuul 网关集成 CA...
79 | CAT 生产埋点实践
80 | CAT 生产部署实践
81 | CAT 生产治理实践
82 | Spring Cloud Sleuth ...
83 |【实验】Spring Cloud Sle...
84 | 参考资源和后续课程预览
免费
85 | 第五模块课程介绍
免费
86 | 容错限流需求
免费
87 | 容错限流原理
88 | Netflix Hystrix 背景...
89 | Hystrix 设计原理
90 | Hystrix 主要概念
91 | 信号量 vs 线程池隔离
92 | Hystrix 主要配置项
93 |【实验】Hystrix 基础实验
94 | Hystrix 模拟案例分析 ...
95 |【实验】Hystrix + Dash...
96 |【实验】Hystrix + Dash...
97 | 网关集成 Hystrix (Co...
98 |【实验】Spring Cloud Hy...
99 | Netflix Turbine 简介
100 | Hystrix 生产最佳实践
101 | 参考资源和后续课程预览
102 | 第六模块课程介绍
103 | 服务发现需求和模式(上...
104 | 服务发现需求和模式(下...
105 | Netflix Eureka 和 Ri...
106 | Eureka 和 Ribbon 架...
107 |【实验】Spring Cloud Eu...
108 |【实验】Spring Cloud Eu...
109 | Spring Cloud Eureka ...
110 | Eureka进阶:自保护模式
111 | Eureka进阶:健康检查和...
112 |【实验】Spring Cloud Zu...
113 |【实验】Spring Cloud Zu...
114 | 常用服务发现组件比较
115 | ServiceMesh 和 Istio...
116 | 基于 Eureka、Zuul 和...
117 | 参考资源和后续课程预览
118 | 第七模块课程介绍
119 | 监控模式分类
120 | BusDevOps 和测量驱动开...
121 | Prometheus 简介
122 | Prometheus 架构设计
123 | Prometheus 基本概念
124 |【实验】Prometheus 起步...
125 |【实验】Prometheus起步查...
126 |【实验】Prometheus起步查...
127 |【实验】Prometheus + G...
128 |【实验】Prometheus + G...
129 |【实验】Prometheus + A...
130 |【实验】Prometheus + A...
131 |【实验】Java 应用埋点和...
132 |【实验】NodeExporter 系...
133 |【实验】Spring Boot Act...
134 | Prometheus 监控最佳实...
135 | 主流开源时序数据库比较
136 | 开源分布式监控平台 ZMo...
137 | 微服务监控体系总结
138 | 参考资源和后续课程预览
139 | 课程概述和背景
140 | 架构和设计
141 | 开发环境搭建
142 | 基础代码(code review...
143 | 数据访问模块(code rev...
144 | OAuth2服务模块(code r...
145 | Web服务模块(code revi...
146 | 启动流程(code review...
147 | 起步准备实验(lab02)
148 | OAuth2授权码模式实验(l...
149 | OAuth2简化模式实验(lab...
150 | OAuth2用户名密码模式实...
151 | OAuth2客户端模式实验(l...
152 | OAuth2令牌校验实验(lab...
153 | OAuth2令牌刷新实验(lab...
154 | 项目复盘和扩展环节
155 | 参考资源和后续课程预览
156 | 课程概述和背景
157 | 需求和架构设计
158 | 开发环境搭建(lab01)(...
159 | 开发环境搭建(lab01)(...
160 | 项目业务代码(Code Rev...
161 | Apollo配置中心集成(lab...
162 | Zuul-Eureka-Ribbon-H...
163 | Gravitee OAuth2集成(l...
164 | Zuul网关集中令牌校验(C...
165 | CAT调用链集成(lab04)...
166 | CAT调用链集成(lab04)...
167 | Demo展示(lab05)(上)
168 | Demo展示(lab05)(下)
169 | Prometheus监控集成(Cod...
170 | 生产扩展环节
171 | 课程复盘总结
本节摘要

精选留言(23)

  • 2019-01-22
    波波老师您好,我请求http://localhost:8080/s2g-zuul-mobile/admin/filterLoader.jsp没有任何响应是怎么回事QAQ。。。

    作者回复: 我本地这边ok,估计是环境部署问题,建议仿照课程中的步骤用eclipse+tomcat方式启动,如果还有问题,请微信(bulldog2015)交流。

    1
  • 2019-12-07
    老师,我这边一直下不下来cat-client.jar,然后自己去别的地方找了个,编译就没问题了。但是启动后,过会就报这个错误
    信息: Server startup in 4724 ms
    2019-12-07 16:55:55,535 [ZuulFilterPoller] ERROR io.spring2go.zuul.filters.ZuulFilterPoller- ZuulFilterPoller run error!
    java.lang.ExceptionInInitializerError: null
        at com.dianping.cat.message.internal.DefaultMessageManager.<init>(DefaultMessageManager.java:45) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageManager.<clinit>(DefaultMessageManager.java:52) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<init>(DefaultMessageProducer.java:33) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<clinit>(DefaultMessageProducer.java:37) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.initializeInternal(Cat.java:311) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.checkAndInitialize(Cat.java:72) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.getProducer(Cat.java:211) ~[cat-client-3.0.0.jar:na]
        at io.spring2go.zuul.filters.ZuulFilterPoller$1.run(ZuulFilterPoller.java:94) ~[s2g-zuul-core-1.0.0.jar:na]
    Caused by: java.lang.RuntimeException: Error when get cat router service, please contact cat support team for help!
        at com.dianping.cat.configuration.ApplicationEnvironment.loadClientConfig(ApplicationEnvironment.java:151) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.configuration.DefaultClientConfigService.<init>(DefaultClientConfigService.java:72) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.configuration.DefaultClientConfigService.<clinit>(DefaultClientConfigService.java:52) ~[cat-client-3.0.0.jar:na]
        ... 8 common frames omitted
    Caused by: java.net.SocketTimeoutException: connect timed out
    一直卡在这检查了好久。暂时没有头绪。是我下的jar的问题还是啥问题。感觉我都按照老师的都做了,就是jar一直下不来,如果是jar的问题的话,老师可以给我一个下载方式么?
    展开

    作者回复: 你这个错误看上去是CAT无法连接服务器导致,我本地也没有CAT服务器,但是不会报这个错。

    实际本章实验是不依赖于CAT的,有一个简单办法索性绕开CAT,你把s2g-zuul的代码清理一下,把所有(包括会用到的groovy脚本里头的)CAT的依赖全部清理掉,先把cat-client.jar在pom中排除,然后通过IDE把cat引用的地方全部清理掉。

    这样就不会报CAT问题了,你就可以先把zuul运行起来,完成本课实验。

  • 2019-11-28
    2019-11-28 08:47:57,559 [pool-3-thread-7] WARN io.spring2go.zuul.core.ZuulCallable- Unknown Route: [ {http://localhost:8080/s2g-zuul-mobile/admin/filterLoader.jsp} ]
    2019-11-28 08:47:57,705 [pool-3-thread-8] WARN io.spring2go.zuul.core.ZuulCallable- Unknown Route: [ {http://localhost:8080/favicon.ico} ]
    2019-11-28 08:48:03,199 [pool-3-thread-9] WARN io.spring2go.zuul.core.ZuulCallable- Unknown Route: [ {http://127.0.0.1:8080/cat/s/router} ]

    老师你好,启动正常,访问报上面的错误,页面空白,下面这条每十秒一次
    展开

    作者回复: 你好,我在本地eclipse里头测试是好的。

    建议:s2g-zuul源码建议使用较新版本的Eclipse IDE for Java EE Developer进行导入,它可以自动感知Servlet Web项目,可在Eclipse+Tomcat里头直接调试源码,方便排查问题。
    https://www.eclipse.org/downloads/packages/release/2019-03/r/eclipse-ide-enterprise-java-developers

    s2g-zuul源码不多,可以直接调试,看看问题出来哪里。

  • 2019-11-16
    波波老师,数据库连接正常。但是,启动还是报如下错误:
    2019-11-16 23:52:21,877 [ZuulFilterPoller] ERROR io.spring2go.zuul.filters.ZuulFilterPoller- ZuulFilterPoller run error!
    java.lang.ExceptionInInitializerError: null
        at com.dianping.cat.message.internal.DefaultMessageManager.<init>(DefaultMessageManager.java:45) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageManager.<clinit>(DefaultMessageManager.java:52) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<init>(DefaultMessageProducer.java:33) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<clinit>(DefaultMessageProducer.java:37) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.initializeInternal(Cat.java:311) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.checkAndInitialize(Cat.java:72) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.getProducer(Cat.java:211) ~[cat-client-3.0.0.jar:na]
        at io.spring2go.zuul.filters.ZuulFilterPoller$1.run(ZuulFilterPoller.java:94) ~[s2g-zuul-core-1.0.0.jar:na]
    展开

    作者回复: s2g-zuul依赖于CAT3.0,请先按照文档说明配置好CAT,参考[启动 cat 客户端前的准备工作]:
    https://github.com/spring2go/s2g-zuul.

    如果还有问题,一个笨办法,把s2g-zull里头的CAT依赖去掉,把pom和代码简单清理一下。本章实验其实是用不到CAT的。

  • 2019-11-16
    波波老师,请教一个问题:如何配置连接MySQL8.0数据,我偿试了好多方法都不成功。如下错误是数据罪连接的问题?还是jar版本的不匹配的问题?
    数据连接试了如下二个配置:
    zuul.data-source.class-name=com.mysql.cj.jdbc.Driver
    zuul.data-source.url=jdbc:mysql://localhost/clientdb?serverTimezone=UTC
    或者
    zuul.data-source.url=jdbc:mysql://localhost:3306/clientdb?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
    如报如下错误:
    2019-11-16 22:08:15,435 [ZuulFilterPoller] ERROR io.spring2go.zuul.filters.ZuulFilterPoller- ZuulFilterPoller run error!
    java.lang.ExceptionInInitializerError: null
        at com.dianping.cat.message.internal.DefaultMessageManager.<init>(DefaultMessageManager.java:45) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageManager.<clinit>(DefaultMessageManager.java:52) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<init>(DefaultMessageProducer.java:33) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.message.internal.DefaultMessageProducer.<clinit>(DefaultMessageProducer.java:37) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.initializeInternal(Cat.java:311) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.checkAndInitialize(Cat.java:72) ~[cat-client-3.0.0.jar:na]
        at com.dianping.cat.Cat.getProducer(Cat.java:211) ~[cat-client-3.0.0.jar:na]
        at io.spring2go.zuul.filters.ZuulFilterPoller$1.run(ZuulFilterPoller.java:94) ~[s2g-zuul-core-1.0.0.jar:na]
    展开

    作者回复: 建议按照实验要求,不要随意修改mysql数据库版本。

  • 杨波老师,我启动项目报错如下:
    java.lang.NoClassDefFoundError: Could not initialize class com.dianping.cat.message.internal.DefaultMessageProducer,请问该怎么解决呢?谢谢!

    作者回复: 项目依赖于cat client,确保类路径下有正确版本cat client jar。

  • 2019-08-24
    老师我启动s2g-zuul 它报下边的错

    2019-08-23 22:41:37,877 [RMI TCP Connection(2)-127.0.0.1] INFO io.spring2go.zuul.servlet.InitializeServletListener- Groovy Filter file manager started
    2019-08-23 22:41:37,887 [ZuulFilterPoller] ERROR io.spring2go.zuul.filters.ZuulFilterPoller- ZuulFilterPoller run error!
    java.lang.NoClassDefFoundError: org/unidal/initialization/ModuleContext
        at io.spring2go.zuul.filters.ZuulFilterPoller$1.run(ZuulFilterPoller.java:94) ~[s2g-zuul-core-1.0.0.jar:na]
    Caused by: java.lang.ClassNotFoundException: org.unidal.initialization.ModuleContext
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1309) ~[catalina.jar:9.0.12]
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1138) ~[catalina.jar:9.0.12]
        ... 1 common frames omitted
    展开

    作者回复: 这个错误提示说zuul依赖的CAT客户端所依赖的一些类(org/unidal)不在类路径下,或者版本不匹配。你再确认下本地有没有相关依赖。

  • 2019-06-14
    老师,zuul加载过滤器后,本地目录/temp/scripts中已经有脚本了,数据库也有脚本,那下次再加载的时候,是从数据库还是目录加载,既然有了数据库,为什么还要目录?目录作用是啥

    作者回复: 这是一种缓存和高可用设计,缓存本地一方面可以提升过滤器加载性能,另一方面如果DB暂时不可用(比如宕机或者维护升级),也不影响网关。

  • 2019-04-21
    严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [io.spring2go.zuul.servlet.InitializeServletListener]
     java.lang.ExceptionInInitializerError
        at io.spring2go.tools.stat.JvmStatsReporter.<init>(JvmStatsReporter.java:35)
     java.lang.ExceptionInInitializerError
        at io.spring2go.tools.stat.JvmStatsReporter.<init>(JvmStatsReporter.java:35)



    您好,tomcat起不来,请问这个怎么解决?
    展开

    作者回复: 你好,请问用的是Eclipse IDE + Tomcat启动方式,还是独立Tomcat + WAR启动方式?

    我在本地Eclipse IDE + Tomcat启动正常,建议先用Eclipse + Tomcat方式启动,这样可以在IDE里头调试看哪步出了问题,Eclipse建议用较新的Eclipse for Java EE developers版本,配置好Tomcat路径后,它能自动感知Servlet Web应用,方便调试。

    如还是解决不了,请加我微信(bulldog2015,说明来自极客时间),我再帮你一起看。

  • 2019-02-19
    @wyw 将tomcat部署的Application context的根路径设置为 /s2g-zuul-mobile 就可以乐
  • 2019-01-22
    波波老师您好,定制版Netflix zuul写到本项目依赖CAT3.0客户端,启动前需要先CAT客户端配置工作,否则Servlet会启不来,cat客户端是怎样启动的呢?

    作者回复: https://github.com/spring2go/s2g-zuul,我在这个项目的readme有说明,需要做一些CAT客户端的配置工作,目的是让CAT客户端能够正常初始化,否则服务器会起不来。注意本案中不会使用CAT,CAT配置只是为了让服务器能正常启动。

  • 2019-01-11
    老师我的代码下载报错,cat下不下来

    作者回复: 你用的是最新的https://github.com/spring2go/s2g-zuul代码吗?里头的cat地址两周前更新过,我刚检查这个cat client jar是可以下载的。

  • 2018-12-29
    老师,您好,我想问下,原版zuul没有过滤器表,它是如何做到过滤器管理的

    作者回复: 原版zuul 1.x,filter是存在Cassandra里头,见zuul/zuul-netflix下代码有ZuulFilterDAOCassandra.java,我改造的zuul改成了存mysql数据库。

  • 2018-12-27
    老师,代码我导入idea后运行,postman访问healthcheck,后台提示timeout in asyncservlet

    作者回复: zuul应该没有正常启动成功,之前有学员报类似问题,上次是CAT初始化问题,建议启用idea debug一下asyncservlet。

  • 2018-12-17
    波波老师你好,请问这个定制版的zuul从数据库拉取过滤器的机制是?
    定时多久查询一次呢? 也是基于版本号进行轻量级的对比吗?
    是不是类似于阿波罗的推送配置修改通知机制呢

    作者回复: zuul过滤器是定期去DB拉的,时间间隔可配,也可以用开关控制拉,具体见源码ZuulFilterPoller。和apollo推拉结合不一样,zuul是拉,也有简单版本比对机制,具体可读下源码,不复杂。

  • 2018-12-03
    波波老师请教一下,我把项目下下来后,去掉CAT的部分,放入tomcat7.0.63运行,访问
    http://localhost:8087/s2g-zuul-mobile/admin/filterLoader.jsp
    会报
    org.apache.jasper.JasperException: com.netflix.hystrix.exception.HystrixRuntimeException: GetAllFilterIdsCommand failed and no fallback available.
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:556)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        io.spring2go.zuul.servlet.CatServletFilter.doFilter(CatServletFilter.java:62)
    root cause
    com.netflix.hystrix.exception.HystrixRuntimeException: GetAllFilterIdsCommand failed and no fallback available.
    请教一下如何解决?
    展开

    作者回复: 这个看起来是数据库连不上,先确保mysql数据库和zuul_filter表正确,连接mysql配置正确。如还有问题,可在eclipse ide里头调试一下定位问题,或加我微信交流(bulldog2015)

  • 2018-12-03
    波波老师好,我用IDEA打包了cat-client 3.0的包,下载您定制的s2g-zuul工程,导入到STS中,发现HystrixZuulFilterDao类第87行Setter.withGroupKey编译总是有一处错误(JDK1.8):Setter这个类标红了。
    STS下面具体错误提示为:
    1 Description    Resource    Path    Location    Type
    The project was not built since its build path is incomplete. Cannot find the class file for rx.Observable$Operator. Fix the build path then try building this project    s2g-zuul-core        Unknown    Java Problem
    2 Description    Resource    Path    Location    Type
    The type rx.Observable$Operator cannot be resolved. It is indirectly referenced from required .class files    HystrixZuulFilterDao.java    /s2g-zuul-core/src/main/java/io/spring2go/zuul/filters    line 1    Java Problem
    展开

    作者回复: 我更新了CAT client和hystrix版本,你更新下代码再试下

  • 2018-10-28
    使用android链接服务器测试zuul网关,总是出现Connection reset by peer 错误,如果不通过网关,直接访问又不会出现,有点纳闷

    作者回复: 提供上下文较少,我估计跟zuul网关上hystrix/ribbon等的超时设置有关,建议调整参数再试,或升级zuul版本

  • 2018-09-29
    和这个有关系吧:
    [ERROR] [ChannelManager] error when init cat module due to error config xml in /data/appdatas/cat/client.xml

    作者回复: 这个是对分布式调用链CAT客户端的依赖,CAT初始出错了,我们在生产环境中的Zuul是集成CAT的,你如果不用CAT,可以把代码清理一下,把CAT先去掉

  • 2018-09-29
    老师,我这里log一直出这个,是什么原因?
    [ERROR] [TcpSocketSender] Error when try connecting to /127.0.0.1:2280

    作者回复: 这个是对分布式调用链CAT客户端的依赖,我们在生产环境中的Zuul是集成CAT的,你如果不用CAT,可以把代码清理一下,把CAT先去掉