博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dubbo路由机制分析2(路由设置存储)
阅读量:7000 次
发布时间:2019-06-27

本文共 2049 字,大约阅读时间需要 6 分钟。

hot3.png

接上次

目前dubbo支持的路由类型分三种conditon,script,file

这次说conditon路由规则的设置方法和存储方式
向注册中心写路由规则,dubbo目前提供两种方式,
1,通过api代码写路由规则
如下:以zookeeper为注册中心为例
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.c
lass).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") + "));
这种方式灵活,三种类型的路由规则都可以写
2,通过dubbo-admin项目(管理控制台为阿里内部裁剪版本)里的页面写路由规则,但目前只能写condtion类型路由规则
下面具体看看通过管理页面写路由规则的方法以及路由规则的存储方式
dubbo-admin是dubbo开源项目的一个子模块,用webx框架写的。
把dubbo-admin打包后放在tomcat容器里(要配置好注册中心),http://localhost:8008/就能访问(root/root)
打开如下页面

可以看到已存在的路由规则,通过单击,新增按钮,打开新增页面如下

这里可以新路由的名称,路由作用的服务名称(接口全名),还能指定作用于某个特定方法

然后是设置,
消费端,哪些(ip,应用,集群)可以访问服务(匹配),哪些不能访问服务(不匹配)
服务端,哪些(ip,集群,协议,端口)可以提供此服务(匹配),哪些不能提供此服务(不匹配)
比如我们配置了,如下一个例子,

保存后,其实会把数据保存到zookeeper(注册中心),

/dubbo/demo.dubbo.api.DemoService/routers,路径中。路径中dubbo,和routers是固定的,中间是服务名。
具体是这样的,

是urlencode后的字串。

图中可以看到,我们设置的路由名称和condition类型。
deconde后是这样的
route://0.0.0.0/demo.dubbo.api.DemoService?category=routers&dynamic=false&enabled=true&force=false&name=test_rt&priority=0&router=condition&rule=consumer.host = 10.nn.nn.40 & consumer.host != 10.nn.16.41 => provider.host = 10.nn.16.* & provider.host != 10.nn.15.*&runtime=false

还可以在管理列表中设置禁用/启用一条规则,就是设置enabled=false/true

除了路由规则页面,还可以在,服务治理->访问控制 页面设置一种特殊的路由规则:黑/白名单,如下图中,单击新增按钮后

可以对指定服务名,设置能访问他们的白名单和禁止访问他们的黑名。

我们简单配置了如下例子

保存后可以看到zk routers节点中的结果,有这么一条路由规则记录

也是condition类型的。deconde后是这样的

route://0.0.0.0/demo.dubbo.api.DemoService?category=routers&dynamic=false&enabled=false&force=true&name=demo.dubbo.api.DemoService blackwhitelist&priority=0&router=condition&rule=consumer.host != 192.168.64.128 => false&runtime=false,
通过上面提到的api写到路由的规则,decode后时这样的
condition://0.0.0.0/demo.dubbo.api.DemoService?category=routers&dynamic=false&name=test&rule=host = 10.20.153.10 => host = 10.20.153.11

转载于:https://my.oschina.net/u/146130/blog/1585537

你可能感兴趣的文章
CF 444B(DZY Loves FFT-时间复杂度)
查看>>
OCP-1Z0-051-名称解析-文章12称号
查看>>
UVALive 4225 Prime Bases 贪心
查看>>
Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总
查看>>
[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程...
查看>>
【转】java中float与byte[]的互转 -- 不错
查看>>
bq27441-G1 工作机制
查看>>
PR 不能手动修改素材尺寸的解决方法
查看>>
Java keyword具体解释
查看>>
如何在CentOS或者RHEL上启用Nux Dextop仓库 安装shutter截图工具
查看>>
Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
查看>>
Asp.net MVC 的八个扩展点
查看>>
配置javaBean
查看>>
ServiceStack 概念参考文摘
查看>>
[Ogre][地形][原创]基于OgreTerrain的地形实现
查看>>
shell登录模式及其相应配置文件(转)
查看>>
Puppet常识梳理
查看>>
web.config配置文件中的configSource属性
查看>>
发现一个国内牛逼的maven仓库,速度真的太快了
查看>>
浏览器的重绘与重排
查看>>