关闭

dubbo学习八--延迟连接,粘滞连接,令牌验证,路由规则

1415人阅读 评论(0) 收藏 举报
分类:

延迟连接

用于减少长连接数,当有调用发起时,再创建长连接。只对使用长连接的dubbo协议生效。

<dubbo:protocolname="dubbo"lazy="true"/>

粘滞连接

粘滞连接用于状态服务,尽可能让客户端总是同一提供者发起调用,除非该提供者挂了,再连另一台。

粘滞连接将自动开启延迟连接,以减少长连接数。

<dubbo:protocolname="dubbo"sticky="true"/>


令牌验证



<!--随机token令牌,使用UUID生成-->

<dubbo:provider interface="com.foo.BarService" token="true" />

<!--固定token令牌,相当于密码-->

<dubbo:provider interface="com.foo.BarService" token="123456" />

也可在服务级别设置:

<!--随机token令牌,使用UUID生成-->

<dubbo:service interface="com.foo.BarService" token="true" />

<!--固定token令牌,相当于密码-->

<dubbo:service interface="com.foo.BarService" token="123456" />

还可在协议级别设置:

<!--随机token令牌,使用UUID生成-->

<dubbo:protocol name="dubbo" token="true" />

<!--固定token令牌,相当于密码-->

<dubbo:protocol name="dubbo" token="123456" />


路由则规则 

向注册中心写入路由规则(通常由监控中心或治理中心的页面完成)

RegistryFactoryregistryFactory =ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();

Registry registry =registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));

registry.register(URL.valueOf("condition://0.0.0.0/com.foo.BarService?category=routers&dynamic=false&rule=" +

URL.encode("host= 10.20.153.10 => host = 10.20.153.11") + "));


其中:

(1)condition:表示路由规则的类型,支持条件路由规则和脚本路由规则,可扩展,必填。

(2)0.0.0.0:表示对所有IP地址生效,如果只想对某个IP生效,请填入具体IP,必填。

(3)com.foo.BarService:表示只对指定服务生效,必填。

(4)category=router:表示该数据为动态配置类型,必填。

(5)dynamic=false:表示该数据为持久数据,当注册方退出时,数据依然保存在注册中心,必填。

(6)enabled=true:覆盖规则是否生效,可不填,缺省生效。

(7)force=false:当路由结果为空时,是否强制执行,如果不强制执行,路由结果为空的路由规则将自动失效,可不填,缺省为false。

(8)runtime=false:是否在每次调用时执行路由规则 ,否则只在提供者地址列表变更时预先执行并缓存结果,调用时直接从缓存中获取路由结果 。

(9)priority=1:路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为0.

(10)rule=URL.encode("host=10.20.153.10=>host=10.20.153.11") :表示路由规则的内容,必填。


条件路由规则

基于条件表达式的路由规则 ,如:

host=10.20.153.10=>host=10.20.153.11

规则:

  • “=>” 之前的为消费者匹配条件 ,所有参数的消费者的URL进行对比,当消费者满足匹配条件时,对该消费者执行后面的过滤规则。
  • “=>” 之后为提供者地址列表的过滤条件,所有参数的提供者的URL进行对比,消费者最终只拿到过滤后的地址列表。
  • 如果匹配条件为空,表示对所有消费方应用。
  • 如果过滤条件为空,表示禁止访问。
表达式:
(1)参数支持
  • 服务调用信息,如:method.
  • URL本身的字段,如:protocol, host, port等。
  • 以及URL上的所有参数,如:application, organization等。
(2)条件支持
  • 等事情“=”表示匹配,不等号“!=”表示不匹配。
(3)值支持
  • 以逗号“,”分隔多个值
  • 以星号结尾,表示通配
  • 以美元符“$”开头,表示引用消费者参数,如 :host=$host
脚本路由规则
支持JDK脚本引擎的所有脚本,通过type=javascript参数设置脚本类型,默认为javascript。
由于脚本没有沙箱约束,可执行任意代码,存在后门风险。



0
0
查看评论

告诉你一个dubbo token使用秘技

最近在做公司一个互联网收银机项目里面,需要调用一些远程服务接口,综合性能、安全和便捷考虑,决定使用rpc方式调用。rpc框架,采用dubbo。 我们知道,一般使用dubbo rpc都是在内网环境部署,然后采用zookeeper作为配置服务器进行集群。基于这次作为外网使用,不想过多地暴露内网服务,...
  • candyzh
  • candyzh
  • 2016-09-01 23:00
  • 5133

Dubbo令牌验证

作用: 1.防止消费者绕过 注册中心访问提供者 2.在注册中心控制权限,以决定要不要下发令牌给消费者。 3.注册中心可灵活改变授权方式,而不需要修改或升级提供者。 可全局设置开启令牌验证:<dubbo:provider interface="" token=&quo...
  • u010317829
  • u010317829
  • 2016-08-08 16:23
  • 3992

dubbo 令牌验证 源码分析

在ServiceConfig.java中在doExportUrlsFor1Protocol中: if (! ConfigUtils.isEmpty(token)) {//如果配置令牌功能 if (ConfigUtils.isDefault(token)) {...
  • CHS007chs
  • CHS007chs
  • 2017-08-03 16:25
  • 757

dubbo 知识总结 dubbo配置参考

dubbo官方文档项目的规模越来越大,总得解耦,不能在一个项目里,这时候,公司采用了dubbo作为分布式应用,将多项业务拆分,并做了库存服务统一、价格服务统一等等一些特殊需要统一性的服务。作为dubbo我也接触了快一年的时间,总会有一些自己的对dubbo的想法。下面是对dubbo的说明:节点角色说明...
  • abcde474524573
  • abcde474524573
  • 2016-11-03 21:11
  • 11020

dubbo(provider,consumer)点到点直连配置

1.服务端接口配置(providr样例)applicationContext-dubbo-smk.xml: http://www.w3.org/2001/XMLSchema-instance"     xmlns:dubbo="http://...
  • ichsonx
  • ichsonx
  • 2014-09-02 16:53
  • 20998

Dubbo源码分析(三):Dubbo之服务端(Service)

如上图所示的Dubbo的暴露服务的过程,不难看出它也和消费者端很像,也需要一个像reference的对象来维护service关联的所有对象及其属性,这里的reference就是provider。由于ServiceBean实现了  InitializingBean接口,所有在Spring实例化这个...
  • flashflight
  • flashflight
  • 2015-03-20 00:32
  • 29926

dubbo参数配置解析

dubbo参数配置解析注意在dubbo中,group,version,interface是服务的匹配条件,也只有这三个参数来决定是不是同一个服务,其他的配置均为调优和治理参数。所有的配置项分为三大类:(参见下表中的“作用”一列) 服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方;...
  • SilenceCarrot
  • SilenceCarrot
  • 2017-03-28 19:59
  • 1616

dubbo 粘滞连接 源代码分析

protected Invoker select(LoadBalance loadbalance, Invocation invocation, List> invokers, List> selected) throws RpcException { if (invok...
  • CHS007chs
  • CHS007chs
  • 2017-08-02 15:50
  • 156

精通Dubbo——Dubbo配置文件详解

依赖的jar理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策略。缺省依赖(系统默认)通过mvn dependency:tree > dep.log命令(Eclipse或Linux命令行)分析,Dubbo缺省依赖以下三方库:[INFO] +- com.ali...
  • fuyuwei2015
  • fuyuwei2015
  • 2017-06-01 22:44
  • 4141

dubbo优雅停机

dubbo优雅停机Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用”kill -9 PID”等强制关闭指令,是不会执行优雅停机的,只有通过”kill PID”时,才会执行。原理 服务提供方 停止时,先标记为不接受新的请求,新请求过来时直接报错,让客户端重试其他机器...
  • SilenceCarrot
  • SilenceCarrot
  • 2017-03-29 20:15
  • 2675
    个人资料
    • 访问:580445次
    • 积分:9775
    • 等级:
    • 排名:第2157名
    • 原创:225篇
    • 转载:908篇
    • 译文:17篇
    • 评论:33条
    最新评论