最近手头的项目进行了重构,改动比较大,直接上线的话风险较大,于是我采用了灰度上线的方式来将风险最小化。
我们系统包括自己的门户页面,也作为中台来给各个业务方调用,我们灰度上线的话,要兼容各个业务系统。
业务系统调用我们接口是前缀是特殊的,可以和我们的门户调用区分开,且业务系统调用所有接口都是有签名的,每个接口的参数格式都是一样的,会含有每个业务系统的appId
之前流量是经过nginx直接打到我们的服务商,这次在nginx和我们系统之间添加了网关,作为我们灰度的核心--流量分配
关于zuul网关可以参考https://www.cnblogs.com/jing99/p/11696192.html
核心流量控制代码如下:
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
import java.net.URL;
import java.util.List;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import org.apache.com