作者回复: 我本地这边ok,估计是环境部署问题,建议仿照课程中的步骤用eclipse+tomcat方式启动,如果还有问题,请微信(bulldog2015)交流。
作者回复: 你这个错误看上去是CAT无法连接服务器导致,我本地也没有CAT服务器,但是不会报这个错。
实际本章实验是不依赖于CAT的,有一个简单办法索性绕开CAT,你把s2g-zuul的代码清理一下,把所有(包括会用到的groovy脚本里头的)CAT的依赖全部清理掉,先把cat-client.jar在pom中排除,然后通过IDE把cat引用的地方全部清理掉。
这样就不会报CAT问题了,你就可以先把zuul运行起来,完成本课实验。
作者回复: 你好,我在本地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源码不多,可以直接调试,看看问题出来哪里。
作者回复: s2g-zuul依赖于CAT3.0,请先按照文档说明配置好CAT,参考[启动 cat 客户端前的准备工作]:
https://github.com/spring2go/s2g-zuul.
如果还有问题,一个笨办法,把s2g-zull里头的CAT依赖去掉,把pom和代码简单清理一下。本章实验其实是用不到CAT的。
作者回复: 建议按照实验要求,不要随意修改mysql数据库版本。
作者回复: 项目依赖于cat client,确保类路径下有正确版本cat client jar。
作者回复: 这个错误提示说zuul依赖的CAT客户端所依赖的一些类(org/unidal)不在类路径下,或者版本不匹配。你再确认下本地有没有相关依赖。
作者回复: 这是一种缓存和高可用设计,缓存本地一方面可以提升过滤器加载性能,另一方面如果DB暂时不可用(比如宕机或者维护升级),也不影响网关。
作者回复: 你好,请问用的是Eclipse IDE + Tomcat启动方式,还是独立Tomcat + WAR启动方式?
我在本地Eclipse IDE + Tomcat启动正常,建议先用Eclipse + Tomcat方式启动,这样可以在IDE里头调试看哪步出了问题,Eclipse建议用较新的Eclipse for Java EE developers版本,配置好Tomcat路径后,它能自动感知Servlet Web应用,方便调试。
如还是解决不了,请加我微信(bulldog2015,说明来自极客时间),我再帮你一起看。
作者回复: https://github.com/spring2go/s2g-zuul,我在这个项目的readme有说明,需要做一些CAT客户端的配置工作,目的是让CAT客户端能够正常初始化,否则服务器会起不来。注意本案中不会使用CAT,CAT配置只是为了让服务器能正常启动。
作者回复: 你用的是最新的https://github.com/spring2go/s2g-zuul代码吗?里头的cat地址两周前更新过,我刚检查这个cat client jar是可以下载的。
作者回复: 原版zuul 1.x,filter是存在Cassandra里头,见zuul/zuul-netflix下代码有ZuulFilterDAOCassandra.java,我改造的zuul改成了存mysql数据库。
作者回复: zuul应该没有正常启动成功,之前有学员报类似问题,上次是CAT初始化问题,建议启用idea debug一下asyncservlet。
作者回复: zuul过滤器是定期去DB拉的,时间间隔可配,也可以用开关控制拉,具体见源码ZuulFilterPoller。和apollo推拉结合不一样,zuul是拉,也有简单版本比对机制,具体可读下源码,不复杂。
作者回复: 这个看起来是数据库连不上,先确保mysql数据库和zuul_filter表正确,连接mysql配置正确。如还有问题,可在eclipse ide里头调试一下定位问题,或加我微信交流(bulldog2015)
作者回复: 我更新了CAT client和hystrix版本,你更新下代码再试下
作者回复: 提供上下文较少,我估计跟zuul网关上hystrix/ribbon等的超时设置有关,建议调整参数再试,或升级zuul版本
作者回复: 这个是对分布式调用链CAT客户端的依赖,CAT初始出错了,我们在生产环境中的Zuul是集成CAT的,你如果不用CAT,可以把代码清理一下,把CAT先去掉
作者回复: 这个是对分布式调用链CAT客户端的依赖,我们在生产环境中的Zuul是集成CAT的,你如果不用CAT,可以把代码清理一下,把CAT先去掉