当前位置: 首页 > news >正文

织梦网站主页售后网站开发需求文档

织梦网站主页,售后网站开发需求文档,优秀企业网站欣赏店名设计,如何做点对点视频网站最近很久没有写文章啦#xff0c;刚好遇到了一个问题#xff0c;其实问题也挺简单#xff0c;但是还是得对源码有一定了解才能够发现。 最近在实现一个根据请求流量的标签#xff0c;将请求转发到对应的节点#xff0c;其实和俗称的灰度请求有点相似#xff0c; 实现思…最近很久没有写文章啦刚好遇到了一个问题其实问题也挺简单但是还是得对源码有一定了解才能够发现。 最近在实现一个根据请求流量的标签将请求转发到对应的节点其实和俗称的灰度请求有点相似 实现思路如下 首先为特定节点打上标签通过截取请求中的header的标签key然后存入上下文中在服务转发时Feign在负载均衡步骤前将节点的标签和请求标签相匹配筛选出标签节点。将标签节点进行策略选择一个合适的节点然后转发。 场景定义 实现伪代码 定义策略 public class MyRule extends AbstractLoadBalancerRule {Overridepublic void initWithNiwsConfig(IClientConfig iClientConfig) {}Overridepublic Server choose(Object o) {return this.choose(this.getLoadBalancer(),o);}public Server choose(ILoadBalancer lb, Object key) {// 标签匹配// 节点选择// 策略选举return server;}} }注入容器 Configuration public class MyRuleConfig {Beanpublic IRule ribbonRule(){return new MyRule();} }好一切准备就绪。 在应用当中很快就遇到了问题在选择过程中节点地址出现错乱。 明明请求的是A服务节点结果转发的是B节点 通过调试发现ILoadBalancer对象有问题比如A服务节点持有的节点列表竟然是B的节点列表。 ILoadBalancer 每个服务都独立持有一个独属于该服务负载列表。比如A服务持有的就是A服务列表,B就是B的. 但此时却出现了归属于A的ILoadBalancer中节点列表竟然都是B的。 原因梳理 最终排查发现就是注入的方式问题为什么这么说呢 由于服务节点在初始化的过程中都是以服务名作为一个独立配置存在于容器中的如下图 用户服务单独有一套负载均衡规则IRule同理order订单服务也是单独一套负载均衡规则双方各自持有了各自的服务列表ILoadBalancer。 但是由于我们要改写IRule的实现同时注入到容器中让服务能够获取到我改写的实现我们直接Bean给加入了。 此时在初始化这个IRule的时候就会出现问题因为IRule内部是持有ILoadBalancer的但是ILoadBalancer针对每个服务都是不一样的。 我们看一下IRule是怎么被加载到用户服务上下文的 com.netflix.loadbalancer.BaseLoadBalancer#setRule public void setRule(IRule rule) {if (rule ! null) { // 此时我们是从容器获取到的默认是个单例this.rule rule;} else {/* default rule */this.rule new RoundRobinRule();}if (this.rule.getLoadBalancer() ! this) { // 肯定满足// 将自身交给rulethis.rule.setLoadBalancer(this);} }别忘了,我们通过Bean加入到容器中时是单例的。问题也出在这 就意味着每次初始化的时候在设置setLoadBalancer时就是在单例的IRule基础上从后往前覆盖最终IRule持有的永远都是最后一个服务的服务列表。 大意图就是这个样子 问题解决 那么我们如何解决这个问题呢 我们知道了原因是由于单例导致的那么我们就可以将自定义的策略改成多实例的注入。 Configuration public class MyRuleConfig {BeanScope(prototype) // 将单例变为原型public IRule ribbonRule(){return new MyRule();} }此时每次获取都是一个新的对象相互不在影响。同理你如果需要覆盖RibbonClientConfiguration配置类中的对象时也需要避免使用单例模式去定义它
http://www.hkea.cn/news/14434382/

相关文章:

  • 二级域名建立网站最新国际新闻热点事件
  • 加速百度对网站文章的收录企业三合一建站公司怎么找
  • 网站镜像上传到域名空间5118站长网站
  • 自助建站系统步骤晚上正能量网站大全
  • 广州市天河区建设和水务局网站网站建设推广怎么玩
  • 宠物网站制作内容房地产信息网新楼盘
  • 网站开发插件平面设计有哪些
  • intitle 郑州网站建设网站开发需要什么人才
  • 表白网页制作网站asp.net 个人网站
  • 网站建设公司经营优惠券网站开发
  • 网站框架类型做一整套网站需要什么
  • 网站付款链接怎么做自己建立网站步骤
  • 电脑网站开发wordpress 显示空白
  • 优化网站seo网站欢迎页源码
  • 铜陵建设网站上海网站建设企业
  • 个人备案 网站名Wordpress热门评论插件
  • 小游戏网站建设公司模板支架
  • 包装在线设计网站上海seo公司哪家好
  • 棋牌游戏开发多少钱网站seo三要素
  • 网站 优化 分析阿里云虚拟主机多个网站
  • 济南网站制作设计公司恭城网站建设
  • 做外贸没网站可以吗怎样制作网页且有链接
  • 哈市哪里网站做的好网站排名在哪里优化
  • 本机做网站临沧网站建设临沧
  • 个人网站创建湛江建站价格
  • 卖友情链接的哪来那么多网站工商银行在线登录入口
  • 网站建设需不需要编程wordpress 仿站小工具
  • 315网站专题怎么做企业调查问卷
  • 共享空间网站开发公司中文网站开发语言
  • 做网站练手项目网站建设在国外