Skip to content

Files

Latest commit

731b901 · May 2, 2022

History

History
74 lines (37 loc) · 2.23 KB

12.Zuul生产环境最佳实践.md

File metadata and controls

74 lines (37 loc) · 2.23 KB

Zuul生产环境最佳实践

下面是架构师杨波在多年生产环境的Zuul实践经验。

AsyncZuulServlet优化连接数

杨波老师定制优化AsyncZuulServlet

修改Web.xml配置Servlet

<servlet>
    <servlet-name>AsyncZuulServlet</servlet-name>
    <servlet-class>io.spring2go.zuul.servlet.AsyncZuulServlet</servlet-class>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>AsyncZuulServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Apollo配置中心集成动态配置

集中修改,并且动态调整。

Hystrix熔断限流

如果后端服务比较慢,可以使用Hystrix进行熔断。防止线程一直pending。

Hystrix有两种隔离原理,一个是线程隔离的方式,还有一种是信号量。

推荐使用信号量。线程隔离的话比较耗资源。

连接池管理

对每个服务的调用,配置连接的数量。 平均每个服务设置20个链接,也可以根据实际情况动态调整。

如果不设置的话,可能会因为一个服务处理请求比较慢,导致占用的大量的Http链接资源,从而影响其他服务,甚至整个服务。

如何配置连接数,可以参考 ExecuteRoute.groovy

Cat和Hystrix监控

Hystrix可以实时展示服务的流量。

Cat可以监控JVM等性能指标

过滤器调试技巧

groovy脚本上传成功,它依赖的jar,网关上必须要有,否则无法上传成功。

如果网关上没有依赖的jar,网关添加 ,必须要重启。

groovy脚本编写是可以直接开发java版本的,测试完成之后,在上线之前直接把文件后缀.java改成.groovy就可以,两者是兼容的。

网关无业务逻辑

网关尽量不要包含比较重的业务逻辑。

尽量不要解析body做一些处理,这样会占用CPU和内存资源。

自助路由(需定制扩展)