前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dubbo路由机制分析2(路由设置存储)

dubbo路由机制分析2(路由设置存储)

作者头像
技术蓝海
发布2018-04-26 14:31:06
1.5K0
发布2018-04-26 14:31:06
举报
文章被收录于专栏:wannshan(javaer,RPC)wannshan(javaer,RPC)

接上次 https://cloud.tencent.com/developer/article/1109552

目前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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档