作者回复: 我的经验,网关集中限流熔断可以覆盖80%场景,还有一些特别的可以由服务单独做熔断限流,比如调用第三方不稳定服务,可以单独用Hystrix做。
作者回复: 有两个办法:1)将yml格式改成properties格式,apollo原生支持properties配置;2)在zuul中,直接集成apollo原生客户端,需要做一些定制开发(filter),但是代码量也不会很多。
作者回复: 可以这样认为,变色龙是spring和apollo之间的一个配置桥接。当然不用变色龙,spring app直接集成apollo也可以,只是有一定耦合性。
作者回复: 具体要看你的apollo和hystrix是怎么对接的。 hystrix原生和archaius集成,archaius支持动态属性(dynamic property),只要值变更就会实时生效,具体建议看archaius的文档或源码。 如果通过apollo -> archaius -> hystrix这种方式集成,那么这个是archaius定期拉模式,拉到更新以后,archaius会负责实时变更通知到hystrix。
作者回复: 一般通过系统属性设置变色龙Archaius对接远程HTTP的配置,参考:https://github.com/Netflix/archaius/wiki/Getting-Started(-Darchaius.configurationSource.additionalUrls),这个配置可以指向Apollo的对应App的配置地址,其中包含AppId。另外参考:https://github.com/spring2go/s2g-zuul/blob/master/s2g-zuul-mobile/src/main/java/io/spring2go/zuul/servlet/InitializeServletListener.java,其中的InitializeServletListener方法,里头有Archaius对接Apollo的Url设置(暂时被注释掉),Url中包含有AppId。
作者回复: 对,zuul网关实际案例代码在lab05中,过滤器代码在s2g-zuul项目中,其它实验说明中有对lab05代码和过滤器代码的引用。
作者回复: apollo的一个应用app本身就支持多个名字空间的,你用apollo client就可以获取到不同名字空间内做配置,和zuul没有关系。
作者回复: 1,用apollo注解可支持动态修改,spring的value麻烦点要用refresh scope,2,变色龙+apollo可用于启动初期的配置,且支持动态更新
作者回复: 因为zuul原生支持archaius,netflix把配置都集成好了,对接apollo就不用改代码了。也可以用apollo直接对接zull,用apollo的客户端集成,这时要改代码重新集成。
作者回复: 因为zuul原生支持的是archaius,改造成直接用apollo client成本高。