微服务架构实战 160 讲
杨波
拍拍贷研发总监、资深架构师、微服务技术专家
48732 人已学习
新⼈⾸单¥98
课程目录
已完结/共 171 讲
微服务架构实战 160 讲
登录|注册
留言
29
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 55 | 前置过滤器实验(Lab01)
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 第一模块课程介绍
02 | 微服务安全要解决什么问题
03 | 白话 OAuth2
04 | OAuth2 的正式定义
05 | OAuth2 有哪些典型模式
06 | OAuth2 模式该如何选型
07 | Spring Security OAuth2 架构简介
08 |【实验】授权码模式授权服务器
09 |【实验】简化模式授权服务器
10 |【实验】密码模式授权服务器
11 |【实验】客户端模式授权服务器
12 | 实验一扩展环节
13 |【实验】Web 应用接入授权服务器
14 | 实验二扩展环节
15 | 什么是 JWT 令牌
16 |【实验】授权服务器支持 JWT 令牌
17 | 实验三扩展环节
18 |【实验】Android 无线应用接入授权服务器
19 |【实验】AngularJS 单页应用实验和课后扩展
20 |【实验】GitHub社交登录实验和课后扩展
21 | 【实验】OAuth2安全风险CSRF实验
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实操(Lab02)
41 | Apollo Client和Spring集成~XML方式(Lab03)
42 | Apollo Client和Spring集成~代码方式(Lab04)
43 | Apollo Client和Spring Boot集成(Lab05)
44 | Apollo开放平台接入实操(Lab06)
45 | Spring Cloud Config简介
46 | Apollo vs Spring Cloud Config
47 | Apollo FAQ和开发常见问题
48 | 参考资源和后续课程预览
49 | 第三模块课程介绍
50 | Zuul网关和基本应用场景
51 | Zuul网关高级应用场景
52 | Zuul网关架构剖析
53 | Zuul网关代码剖析(Code Review)
54 | Zuul网关过滤器管理工具(Code Review)
55 | 前置过滤器实验(Lab01)
56 | 路由过滤器实验(Lab02)
57 | 后置过滤器实验(Lab03)
58 | Zuul网关对接Apollo(Lab04)
59 | Zuul网关生产部署实践
60 | Zuul网关路由管理实践
61 | 基于网关的两层路由体系
62 | Spring Cloud Zuul(Lab05)
63 | Zuul2.0简介
64 | Zuul网关生产最佳实践
65 | 参考资源和后续课程预览
66 | 第四模块课程介绍
67 | 调用链监控业务需求
68 | 调用链监控原理
69 | 调用链监控产品和比较
70 | 点评 CAT 背景介绍
71 | CAT 典型报表
72 | CAT 告警简介
73 | CAT 架构设计
74 |【实验】CAT 本地部署
75 | CAT 埋点案例和代码剖析(Code Review)
76 |【实验】CAT 埋点案例
77 | Zuul 网关集成 CAT 代码剖析(Code Review)
78 |【实验】Zuul 网关集成 CAT
79 | CAT 生产埋点实践
80 | CAT 生产部署实践
81 | CAT 生产治理实践
82 | Spring Cloud Sleuth 简介
83 |【实验】Spring Cloud Sleuth
84 | 参考资源和后续课程预览
85 | 第五模块课程介绍
86 | 容错限流需求
87 | 容错限流原理
88 | Netflix Hystrix 背景介绍
89 | Hystrix 设计原理
90 | Hystrix 主要概念
91 | 信号量 vs 线程池隔离
92 | Hystrix 主要配置项
93 |【实验】Hystrix 基础实验
94 | Hystrix 模拟案例分析 (Code Review)
95 |【实验】Hystrix + Dashboard 实验(上)
96 |【实验】Hystrix + Dashboard 实验(下)
97 | 网关集成 Hystrix (Code Review)
98 |【实验】Spring Cloud Hystrix 实验
99 | Netflix Turbine 简介
100 | Hystrix 生产最佳实践
101 | 参考资源和后续课程预览
102 | 第六模块课程介绍
103 | 服务发现需求和模式(上)
104 | 服务发现需求和模式(下)
105 | Netflix Eureka 和 Ribbon 背景介绍
106 | Eureka 和 Ribbon 架构设计原理
107 |【实验】Spring Cloud Eureka 和 Ribbon 基础实战
108 |【实验】Spring Cloud Eureka 和 Ribbon 高级实验
109 | Spring Cloud Eureka 和 Ribbon 主要配置项
110 | Eureka进阶:自保护模式
111 | Eureka进阶:健康检查和蓝绿部署
112 |【实验】Spring Cloud Zuul、Eureka 和 Ribbon 集成实验(上)
113 |【实验】Spring Cloud Zuul、Eureka 和 Ribbon 集成实验(下)
114 | 常用服务发现组件比较
115 | ServiceMesh 和 Istio 简介
116 | 基于 Eureka、Zuul 和容器云的持续交付架构
117 | 参考资源和后续课程预览
118 | 第七模块课程介绍
119 | 监控模式分类
120 | BusDevOps 和测量驱动开发 MDD
121 | Prometheus 简介
122 | Prometheus 架构设计
123 | Prometheus 基本概念
124 |【实验】Prometheus 起步查询实验(上)
125 |【实验】Prometheus起步查询实验(中)
126 |【实验】Prometheus起步查询实验(下)
127 |【实验】Prometheus + Grafana 展示实验(上)
128 |【实验】Prometheus + Grafana 展示实验(下)
129 |【实验】Prometheus + Alertmanager 告警实验(上)
130 |【实验】Prometheus + Alertmanager 告警实验(下)
131 |【实验】Java 应用埋点和监控实验
132 |【实验】NodeExporter 系统监控实验
133 |【实验】Spring Boot Actuator 监控实验
134 | Prometheus 监控最佳实践
135 | 主流开源时序数据库比较
136 | 开源分布式监控平台 ZMon 简介
137 | 微服务监控体系总结
138 | 参考资源和后续课程预览
139 | 课程概述和背景
140 | 架构和设计
141 | 开发环境搭建
142 | 基础代码(code review)
143 | 数据访问模块(code review)
144 | OAuth2服务模块(code review)
145 | Web服务模块(code review)
146 | 启动流程(code review)
147 | 起步准备实验(lab02)
148 | OAuth2授权码模式实验(lab03)
149 | OAuth2简化模式实验(lab04)
150 | OAuth2用户名密码模式实验(lab05)
151 | OAuth2客户端模式实验(lab06)
152 | OAuth2令牌校验实验(lab07)
153 | OAuth2令牌刷新实验(lab08)
154 | 项目复盘和扩展环节
155 | 参考资源和后续课程预览
156 | 课程概述和背景
157 | 需求和架构设计
158 | 开发环境搭建(lab01)(上)
159 | 开发环境搭建(lab01)(下)
160 | 项目业务代码(Code Review)
161 | Apollo配置中心集成(lab02)
162 | Zuul-Eureka-Ribbon-Hystrix集成(Code Review)
163 | Gravitee OAuth2集成(lab03)
164 | Zuul网关集中令牌校验(Code Review)
165 | CAT调用链集成(lab04)(上)
166 | CAT调用链集成(lab04)(下)
167 | Demo展示(lab05)(上)
168 | Demo展示(lab05)(下)
169 | Prometheus监控集成(Code Review)
170 | 生产扩展环节
171 | 课程复盘总结&结课测试
本节摘要
登录 后留言

全部留言(29)

  • 最新
  • 精选
zhaoni
杨老师好,您这份微服务课程中,没有涉及到分布式事务,什么时候会有这样的课程,或者有没有推荐的文章?

作者回复: 分布式事务一般要根据具体业务场景进行定制,目前还没有成熟通用的中间件方案。建议参考ebay架构师总结的这篇文章《微服务架构中的数据一致性》,总结得很好: https://dzone.com/articles/data-consistency-in-microservices-architecture

2020-02-03
3
Mr丶JDR
波波老师您好,我请求http://localhost:8080/s2g-zuul-mobile/admin/filterLoader.jsp没有任何响应是怎么回事QAQ。。。

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

2019-01-22
1
弓长
老师,将cat去掉后,可以启动了,但访问http://localhost:8080/s2g-zuul-mobile/admin/filterLoader.jsp时页面是空白的,不知道为什么,请老师指点下,谢谢

作者回复: 请查看: 1. Tomcat/Servlet是否已经正常启动,healthcheck页面是否能够正常工作? 2. 数据库是否按要求填充数据和启动? 3. 建议在Eclipse中启动Tomcat+Zuul,这样可以调试Zuul代码,方便查看错误信息,建议关注数据库连接和访问错误信息

2021-02-19
陈培建
出现下面错误是什么原因,麻烦老师知道一下 2020-05-05 22:13:43,857 [http-nio-8080-exec-3] ERROR io.spring2go.zuul.servlet.AsyncZuulListener- Access http://localhost:8080/s2g-zuul-mobile/ timeout in AsyncServlet. 2020-05-05 22:14:12,055 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:14:43,064 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:15:14,074 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:15:45,082 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:16:16,092 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:16:47,106 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection. 2020-05-05 22:17:18,113 [ZuulFilterPoller] ERROR com.zaxxer.hikari.HikariPool- Timeout of 1000ms encountered waiting for connection.

作者回复: 错误说数据库连不上,zuul拉不了数据库里头的filter,请先确保mysql数据库可以正常连接。

2020-05-05
2
陈培建
我这边foundation-service依赖的 jar包是存在的,但是一直报下面错误 java.lang.NoSuchMethodError: org.unidal.lookup.ContainerLoader.getDefaultContainer()Lorg/codehaus/plexus/PlexusContainer; at com.dianping.cat.Cat.initialize(Cat.java:178) ~[cat-client-3.0.0.jar:na] at com.dianping.cat.Cat.checkAndInitialize(Cat.java:75) ~[cat-client-3.0.0.jar:na] at com.dianping.cat.Cat.getProducer(Cat.java:157) ~[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]

作者回复: 你这个看错误是依赖版本问题,cat client和foundation-service某个版本有问题,可以尝试先把本地maven缓存先清理掉,再尝试加载项目,也就是再把依赖的jar下一遍看看。如果还有问题,联系我微信解决(微信号bulldog2015,说明来自极客时间)。

2020-05-05
2
陈培建
启动报如下错误: 严重: Error configuring application listener of class io.spring2go.zuul.servlet.InitializeServletListener java.lang.ClassNotFoundException: io.spring2go.zuul.servlet.InitializeServletListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1352) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:542) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:523) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4806) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5347) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1410) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1400) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

作者回复: 请参考https://github.com/spring2go/s2g-zuul 这里的readme: “s2g-zuul源码建议使用较新版本的Eclipse IDE for Java EE Developer进行导入,它可以自动感知Servlet Web项目,可在Eclipse+Tomcat里头直接调试源码,方便排查问题。” 建议用我给出的Eclipse IDE的那个版本,将s2g-zuul导入到eclipse中,它可以自动感知Servlet Web项目,这样你就可以在eclipse里头直接调试servlet并跟踪进去,看问题到底出来哪里。

2020-05-03
2
💢 星星💢
老师,我这边一直下不下来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-12-07
2
一毛
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-28
2
Geek_e12225
波波老师,数据库连接正常。但是,启动还是报如下错误: 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
Geek_e12225
波波老师,请教一个问题:如何配置连接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数据库版本。

2019-11-16
收起评论