为标准Ribbon设置可用规则:enableRule

通过Ribbon workbench 可以追加新的ribbon并且追加相应的事件事件。
但是对于标准Ribbon则只能做到隐藏,不能追加自定义逻辑。
查阅了一些资料发现可以通过修改xml的形式进行操作。
以account为例,对【新建】Ribbon设置enablerule规则。
1、首先查阅sdk中如下路径: \SDK 2015\Resources\ExportedRibbonXml 中的accountRibbon.xml文件。
找到下面的xml配置。
这个就是crm底层的标准配置,我们将其粘贴出来放到自定义的节点上。

      <CommandDefinition Id="Mscrm.NewRecordFromForm">
        <EnableRules>
          <EnableRule Id="Mscrm.AvailableOnForm" />
        </EnableRules>
        <DisplayRules>
          <DisplayRule Id="Mscrm.PrimaryIsNotActivity" />
          <DisplayRule Id="Mscrm.HideInLegacyRibbon" />
          <DisplayRule Id="Mscrm.CreatePrimaryEntityPermission" />
        </DisplayRules>
        <Actions>
          
### 各组件作用及其默认实现 #### 客户端配置 `IClientConfig` `IClientConfig` 是用于存储和提供给Ribbon的各种配置参数的对象。这些参数可以来自多种来源,比如硬编码、属性文件或者环境变量等。它提供了获取不同类型的配置项的方法,使得开发者能够灵活地调整Ribbon的行为。 #### 负载均衡策略 `IRule` `IRule` 接口定义了一套规则来决定如何从服务列表中挑选服务器进行请求转发。不同的实现类代表了不同的负载均衡算法。例如,在提供的代码片段中展示了通过自定义配置将随机选择作为负载均衡策略的方式[^1]: ```java @Configuration public class RibbonConfig { @Bean public IRule iRule(){ return new RandomRule(); } } ``` 而默认情况下,当没有特别指定时,使用的则是基于区域感知的负载均衡器——`ZoneAwareLoadBalancer`,该类最终会调用到它的基类之一`BaseLoadBalancer`来进行初始化工作,并在此过程中设置了具体的`IRule`实例以及健康检查机制`IPing`对象[^2]。 对于`IRule`的具体实现,默认采用的是`ZoneAvoidanceRule`,这是一种综合考虑了地理位置和服务状态等因素后的高级路由决策方法。这意味着如果存在多个可用区,则优先尝试访问同一区域内性能较好的节点;只有在本地资源不足的情况下才会跨区调度流量。这样的设计有助于提高系统的稳定性和响应速度的同时减少网络延迟带来的影响。 #### 健康检测接口 `IPing` 为了确保所选中的目标主机处于正常运行的状态,Ribbon引入了一个名为`IPing`的接口用来做简单的存活探测。最基础也是最常见的做法就是发送心跳包测试连通性。默认实现了这个功能的是叫做`NoOpPing`的一个非常朴素版本,即不做任何实质性的操作总是返回true表示一切OK。不过这显然不是最佳实践,因此建议根据实际情况定制更合理的监测手段,甚至可以通过多线程并发的方式来提升效率以应对大规模集群场景下的需求[^5]。 综上所述,上述提到的各项组件共同构成了Netflix OSS框架下微服务体系里不可或缺的一部分,它们各自发挥着独特而又重要的角色,从而保障整个架构具备良好的弹性和可扩展特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值