| |
| <!DOCTYPE HTML> |
| <html lang="" > |
| <head> |
| <meta charset="UTF-8"> |
| <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> |
| <title>4.34 路由规则 · GitBook</title> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <meta name="description" content=""> |
| <meta name="generator" content="GitBook 3.2.2"> |
| |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/style.css"> |
| |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css"> |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css"> |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <meta name="HandheldFriendly" content="true"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> |
| <meta name="apple-mobile-web-app-capable" content="yes"> |
| <meta name="apple-mobile-web-app-status-bar-style" content="black"> |
| <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png"> |
| <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon"> |
| |
| |
| <link rel="next" href="配置规则.html" /> |
| |
| |
| <link rel="prev" href="令牌验证.html" /> |
| |
| |
| </head> |
| <body> |
| |
| <div class="book"> |
| <div class="book-summary"> |
| |
| |
| <div id="book-search-input" role="search"> |
| <input type="text" placeholder="Type to search" /> |
| </div> |
| |
| |
| <nav role="navigation"> |
| |
| |
| |
| <ul class="summary"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="chapter " data-level="1.1" data-path="../"> |
| |
| <a href="../"> |
| |
| |
| Introduction |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.2" > |
| |
| <span> |
| |
| |
| 1 入门 |
| |
| </span> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.2.1" data-path="../preface/background.html"> |
| |
| <a href="../preface/background.html"> |
| |
| |
| 1.1 背景 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.2.2" data-path="../preface/requirements.html"> |
| |
| <a href="../preface/requirements.html"> |
| |
| |
| 1.2 需求 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.2.3" data-path="../preface/architacture.html"> |
| |
| <a href="../preface/architacture.html"> |
| |
| |
| 1.3 架构 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.2.4" data-path="../preface/usage.html"> |
| |
| <a href="../preface/usage.html"> |
| |
| |
| 1.4 用法 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.3" > |
| |
| <span> |
| |
| |
| 2 快速启动 |
| |
| </span> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.3.1" data-path="../dependencies/dependencies.html"> |
| |
| <a href="../dependencies/dependencies.html"> |
| |
| |
| 2.1 依赖 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.3.2" data-path="../maturity/maturity.html"> |
| |
| <a href="../maturity/maturity.html"> |
| |
| |
| 2.2 成熟度 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.4" > |
| |
| <span> |
| |
| |
| 3 配置 |
| |
| </span> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.4.1" data-path="../configuration/xml.html"> |
| |
| <a href="../configuration/xml.html"> |
| |
| |
| 3.1 XML配置 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.4.2" data-path="../configuration/properties.html"> |
| |
| <a href="../configuration/properties.html"> |
| |
| |
| 3.2 属性配置 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.4.3" data-path="../configuration/api.html"> |
| |
| <a href="../configuration/api.html"> |
| |
| |
| 3.3 API配置 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.4.4" data-path="../configuration/annotation.html"> |
| |
| <a href="../configuration/annotation.html"> |
| |
| |
| 3.4 注解配置 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5" > |
| |
| <span> |
| |
| |
| 4 示例 |
| |
| </span> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.5.1" data-path="启动时检查.html"> |
| |
| <a href="启动时检查.html"> |
| |
| |
| 4.1 启动时检查 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.2" data-path="集群容错.html"> |
| |
| <a href="集群容错.html"> |
| |
| |
| 4.2 集群容错 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.3" data-path="负载均衡.html"> |
| |
| <a href="负载均衡.html"> |
| |
| |
| 4.3 负载均衡 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.4" data-path="线程模型.html"> |
| |
| <a href="线程模型.html"> |
| |
| |
| 4.4 线程模型 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.5" data-path="直连提供者.html"> |
| |
| <a href="直连提供者.html"> |
| |
| |
| 4.5 直连提供者 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.6" data-path="只订阅.html"> |
| |
| <a href="只订阅.html"> |
| |
| |
| 4.6 只订阅 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.7" data-path="只注册.html"> |
| |
| <a href="只注册.html"> |
| |
| |
| 4.7 只注册 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.8" data-path="静态服务.html"> |
| |
| <a href="静态服务.html"> |
| |
| |
| 4.8 静态服务 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.9" data-path="多协议.html"> |
| |
| <a href="多协议.html"> |
| |
| |
| 4.9 多协议 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.10" data-path="多注册中心.html"> |
| |
| <a href="多注册中心.html"> |
| |
| |
| 4.10 多注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.11" data-path="服务分组.html"> |
| |
| <a href="服务分组.html"> |
| |
| |
| 4.11 服务分组 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.12" data-path="多版本.html"> |
| |
| <a href="多版本.html"> |
| |
| |
| 4.13 多版本 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.13" data-path="分组聚合.html"> |
| |
| <a href="分组聚合.html"> |
| |
| |
| 4.14 分组聚合 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.14" data-path="参数验证.html"> |
| |
| <a href="参数验证.html"> |
| |
| |
| 4.15 参数验证 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.15" data-path="结果缓存.html"> |
| |
| <a href="结果缓存.html"> |
| |
| |
| 4.16 结果缓存 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.16" data-path="泛化引用.html"> |
| |
| <a href="泛化引用.html"> |
| |
| |
| 4.17 泛化引用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.17" data-path="泛化实现.html"> |
| |
| <a href="泛化实现.html"> |
| |
| |
| 4.18 泛化实现 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.18" data-path="回声测试.html"> |
| |
| <a href="回声测试.html"> |
| |
| |
| 4.19 回声测试 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.19" data-path="上下文信息.html"> |
| |
| <a href="上下文信息.html"> |
| |
| |
| 4.20 上下文信息 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.20" data-path="隐式参数.md"> |
| |
| <span> |
| |
| |
| 4.21 隐式参数 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.21" data-path="异步调用.html"> |
| |
| <a href="异步调用.html"> |
| |
| |
| 4.22 异步调用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.22" data-path="本地调用.html"> |
| |
| <a href="本地调用.html"> |
| |
| |
| 4.23 本地调用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.23" data-path="参数回调.html"> |
| |
| <a href="参数回调.html"> |
| |
| |
| 4.24 参数回调 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.24" data-path="事件通知.html"> |
| |
| <a href="事件通知.html"> |
| |
| |
| 4.25 事件通知 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.25" data-path="本地存根.html"> |
| |
| <a href="本地存根.html"> |
| |
| |
| 4.26 本地存根 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.26" data-path="本地伪装.html"> |
| |
| <a href="本地伪装.html"> |
| |
| |
| 4.27 本地伪装 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.27" data-path="延迟暴露.html"> |
| |
| <a href="延迟暴露.html"> |
| |
| |
| 4.28 延迟暴露 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.28" data-path="并发控制.html"> |
| |
| <a href="并发控制.html"> |
| |
| |
| 4.29 并发控制 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.29" data-path="连接控制.html"> |
| |
| <a href="连接控制.html"> |
| |
| |
| 4.30 连接控制 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.30" data-path="延迟连接.html"> |
| |
| <a href="延迟连接.html"> |
| |
| |
| 4.31 延迟连接 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.31" data-path="粘滞连接.html"> |
| |
| <a href="粘滞连接.html"> |
| |
| |
| 4.32 粘滞连接 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.32" data-path="令牌验证.html"> |
| |
| <a href="令牌验证.html"> |
| |
| |
| 4.33 令牌验证 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter active" data-level="1.5.33" data-path="路由规则.html"> |
| |
| <a href="路由规则.html"> |
| |
| |
| 4.34 路由规则 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.34" data-path="配置规则.html"> |
| |
| <a href="配置规则.html"> |
| |
| |
| 4.35 配置规则 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.35" data-path="服务降级.html"> |
| |
| <a href="服务降级.html"> |
| |
| |
| 4.36 服务降级 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.36" data-path="优雅停机.html"> |
| |
| <a href="优雅停机.html"> |
| |
| |
| 4.37 优雅停机 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.37" data-path="主机绑定.html"> |
| |
| <a href="主机绑定.html"> |
| |
| |
| 4.38 主机绑定 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.38" data-path="日志适配.html"> |
| |
| <a href="日志适配.html"> |
| |
| |
| 4.39 日志适配 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.39" data-path="访问日志.html"> |
| |
| <a href="访问日志.html"> |
| |
| |
| 4.40 访问日志 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.40" data-path="服务容器.html"> |
| |
| <a href="服务容器.html"> |
| |
| |
| 4.41 服务容器 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.41" data-path="ReferenceConfig缓存.html"> |
| |
| <a href="ReferenceConfig缓存.html"> |
| |
| |
| 4.42 Reference Config缓存 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.42" data-path="分布式事务.html"> |
| |
| <a href="分布式事务.html"> |
| |
| |
| 4.43 分布式事务 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.43" data-path="../reference-apiconf/api.html"> |
| |
| <a href="../reference-apiconf/api.html"> |
| |
| |
| 5 API参考手册 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6" data-path="../reference-xmlconf/introduction.html"> |
| |
| <a href="../reference-xmlconf/introduction.html"> |
| |
| |
| 5 schema配置参考手册 |
| |
| </a> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.6.1" data-path="../reference-xmlconf/dubbo-service.html"> |
| |
| <a href="../reference-xmlconf/dubbo-service.html"> |
| |
| |
| 5.1 dubbo:service |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.2" data-path="../reference-xmlconf/dubbo-reference.html"> |
| |
| <a href="../reference-xmlconf/dubbo-reference.html"> |
| |
| |
| 5.2 dubbo:reference |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.3" data-path="../reference-xmlconf/dubbo-protocol.html"> |
| |
| <a href="../reference-xmlconf/dubbo-protocol.html"> |
| |
| |
| 5.3 dubbo:protocol |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.4" data-path="../reference-xmlconf/dubbo-registry.html"> |
| |
| <a href="../reference-xmlconf/dubbo-registry.html"> |
| |
| |
| 5.4 dubbo:registry |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.5" data-path="../reference-xmlconf/dubbo-monitor.html"> |
| |
| <a href="../reference-xmlconf/dubbo-monitor.html"> |
| |
| |
| 5.5 dubbo:monitor |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.6" data-path="../reference-xmlconf/dubbo-application.html"> |
| |
| <a href="../reference-xmlconf/dubbo-application.html"> |
| |
| |
| 5.6 dubbo:application |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.7" data-path="../reference-xmlconf/dubbo-module.html"> |
| |
| <a href="../reference-xmlconf/dubbo-module.html"> |
| |
| |
| 5.7 dubbo:module |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.8" data-path="../reference-xmlconf/dubbo-provider.html"> |
| |
| <a href="../reference-xmlconf/dubbo-provider.html"> |
| |
| |
| 5.8 dubbo:provider |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.9" data-path="../reference-xmlconf/dubbo-consumer.html"> |
| |
| <a href="../reference-xmlconf/dubbo-consumer.html"> |
| |
| |
| 5.9 dubbo:consumer |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.10" data-path="../reference-xmlconf/dubbo-method.html"> |
| |
| <a href="../reference-xmlconf/dubbo-method.html"> |
| |
| |
| 5.10 dubbo:method |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.11" data-path="../reference-xmlconf/dubbo-argument.html"> |
| |
| <a href="../reference-xmlconf/dubbo-argument.html"> |
| |
| |
| 5.11 dubbo:argument |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6.12" data-path="../reference-xmlconf/dubbo-parameter.html"> |
| |
| <a href="../reference-xmlconf/dubbo-parameter.html"> |
| |
| |
| 5.12 dubbo:parameter |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7" data-path="../reference-protocol/introduction.html"> |
| |
| <a href="../reference-protocol/introduction.html"> |
| |
| |
| 6 协议参考手册 |
| |
| </a> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.7.1" data-path="../reference-protocol/dubbo.html"> |
| |
| <a href="../reference-protocol/dubbo.html"> |
| |
| |
| 6.1 dubbo:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.2" data-path="../reference-protocol/rmi.html"> |
| |
| <a href="../reference-protocol/rmi.html"> |
| |
| |
| 6.2 rmi// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.3" data-path="../reference-protocol/hessian.html"> |
| |
| <a href="../reference-protocol/hessian.html"> |
| |
| |
| 6.3 hessian:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.4" data-path="../reference-protocol/http.html"> |
| |
| <a href="../reference-protocol/http.html"> |
| |
| |
| 6.4 http:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.5" data-path="../reference-protocol/webservice.html"> |
| |
| <a href="../reference-protocol/webservice.html"> |
| |
| |
| 6.5 webservice:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.6" data-path="../reference-protocol/thrift.html"> |
| |
| <a href="../reference-protocol/thrift.html"> |
| |
| |
| 6.6 thrift:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.7" data-path="../reference-protocol/memcached.html"> |
| |
| <a href="../reference-protocol/memcached.html"> |
| |
| |
| 6.7 memcached:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.8" data-path="../reference-protocol/redis.html"> |
| |
| <a href="../reference-protocol/redis.html"> |
| |
| |
| 6.8 redis:// |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.8" data-path="../reference-registry/introduction.html"> |
| |
| <a href="../reference-registry/introduction.html"> |
| |
| |
| 7 注册中心参考手册 |
| |
| </a> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.8.1" data-path="../reference-registry/multicast.html"> |
| |
| <a href="../reference-registry/multicast.html"> |
| |
| |
| 7.1 Multicast注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.8.2" data-path="../reference-registry/zookeeper.html"> |
| |
| <a href="../reference-registry/zookeeper.html"> |
| |
| |
| 7.2 Zookeeper注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.8.3" data-path="../reference-registry/redis.html"> |
| |
| <a href="../reference-registry/redis.html"> |
| |
| |
| 7.3 Redis注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.8.4" data-path="../reference-registry/simple.html"> |
| |
| <a href="../reference-registry/simple.html"> |
| |
| |
| 7.4 Simple注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.9" data-path="../reference-telnet/telnet.html"> |
| |
| <a href="../reference-telnet/telnet.html"> |
| |
| |
| 8 telnet命令参考手册 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.10" data-path="../reference-maven/maven.html"> |
| |
| <a href="../reference-maven/maven.html"> |
| |
| |
| 9 maven插件参考手册 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.11" data-path="../best-practice.html"> |
| |
| <a href="../best-practice.html"> |
| |
| |
| 10 服务化最佳实践 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.12" data-path="../recommend.html"> |
| |
| <a href="../recommend.html"> |
| |
| |
| 11 推荐用法 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.13" data-path="../capacity-plan.html"> |
| |
| <a href="../capacity-plan.html"> |
| |
| |
| 12 容量规划 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.14" data-path="../benchmark.html"> |
| |
| <a href="../benchmark.html"> |
| |
| |
| 13 基准测试工具包 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.15" data-path="../perf-test.html"> |
| |
| <a href="../perf-test.html"> |
| |
| |
| 14 性能测试报告 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.16" data-path="../coveragence.html"> |
| |
| <a href="../coveragence.html"> |
| |
| |
| 15 测试覆盖率报告 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| |
| |
| <li class="divider"></li> |
| |
| <li> |
| <a href="https://www.gitbook.com" target="blank" class="gitbook-link"> |
| Published with GitBook |
| </a> |
| </li> |
| </ul> |
| |
| |
| </nav> |
| |
| |
| </div> |
| |
| <div class="book-body"> |
| |
| <div class="body-inner"> |
| |
| |
| |
| <div class="book-header" role="navigation"> |
| |
| |
| <!-- Title --> |
| <h1> |
| <i class="fa fa-circle-o-notch fa-spin"></i> |
| <a href=".." >4.34 路由规则</a> |
| </h1> |
| </div> |
| |
| |
| |
| |
| <div class="page-wrapper" tabindex="-1" role="main"> |
| <div class="page-inner"> |
| |
| <div id="book-search-results"> |
| <div class="search-noresults"> |
| |
| <section class="normal markdown-section"> |
| |
| <blockquote> |
| <p><img src="../sources/images/warning-3.gif" alt="warning">2.2.0以上版本支持,</p> |
| <p><img src="../sources/images/check.gif" alt="warning">路由规则扩展点:<a href="#">路由扩展</a></p> |
| </blockquote> |
| <p>向注册中心写入路由规则:(通常由监控中心或治理中心的页面完成)</p> |
| <pre><code class="lang-java">RegistryFactory registryFactory = 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("http://10.20.160.198/wiki/display/dubbo/host = 10.20.153.10 => host = 10.20.153.11") + ")); |
| </code></pre> |
| <p>其中:</p> |
| <ul> |
| <li>condition:// |
| 表示路由规则的类型,支持条件路由规则和脚本路由规则,可扩展,必填。</li> |
| <li>0.0.0.0 |
| 表示对所有IP地址生效,如果只想对某个IP的生效,请填入具体IP,必填。</li> |
| <li>com.foo.BarService |
| 表示只对指定服务生效,必填。</li> |
| <li>category=routers |
| 表示该数据为动态配置类型,必填。</li> |
| <li>dynamic=false |
| 表示该数据为持久数据,当注册方退出时,数据依然保存在注册中心,必填。</li> |
| <li>enabled=true |
| 覆盖规则是否生效,可不填,缺省生效。</li> |
| <li>force=false |
| 当路由结果为空时,是否强制执行,如果不强制执行,路由结果为空的路由规则将自动失效,可不填,缺省为flase。</li> |
| <li>runtime=false |
| 是否在每次调用时执行路由规则,否则只在提供者地址列表变更时预先执行并缓存结果,调用时直接从缓存中获取路由结果。 |
| 如果用了参数路由,必须设为true,需要注意设置会影响调用的性能,可不填,缺省为flase。</li> |
| <li>priority=1 |
| 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为0。</li> |
| <li>rule=URL.encode("host = 10.20.153.10 => host = 10.20.153.11") |
| 表示路由规则的内容,必填。</li> |
| </ul> |
| <h4 id="条件路由规则">条件路由规则</h4> |
| <p>基于条件表达式的路由规则,如:<code>host = 10.20.153.10 => host = 10.20.153.11</code></p> |
| <p>规则:</p> |
| <ul> |
| <li>"=>"之前的为消费者匹配条件,所有参数和消费者的URL进行对比,当消费者满足匹配条件时,对该消费者执行后面的过滤规则。</li> |
| <li>"=>"之后为提供者地址列表的过滤条件,所有参数和提供者的URL进行对比,消费者最终只拿到过滤后的地址列表。</li> |
| <li>如果匹配条件为空,表示对所有消费方应用,如:=> host != 10.20.153.11</li> |
| <li>如果过滤条件为空,表示禁止访问,如:host = 10.20.153.10 =></li> |
| </ul> |
| <p>表达式:</p> |
| <ul> |
| <li>参数支持:<ul> |
| <li>服务调用信息,如:method, argument 等 (暂不支持参数路由)</li> |
| <li>URL本身的字段,如:protocol, host, port 等</li> |
| <li>以及URL上的所有参数,如:application, organization 等</li> |
| </ul> |
| </li> |
| <li>条件支持:<ul> |
| <li>等号 <code>=</code> 表示"匹配",如:host = 10.20.153.10</li> |
| <li>不等号 <code>!=</code> 表示"不匹配",如:host != 10.20.153.10</li> |
| </ul> |
| </li> |
| <li>值支持:<ul> |
| <li>以逗号 <code>,</code> 分隔多个值,如:host != 10.20.153.10,10.20.153.11</li> |
| <li>以星号 <code>*</code> 结尾,表示通配,如:host != 10.20.*</li> |
| <li>以美元符 <code>$</code> 开头,表示引用消费者参数,如:host = $host</li> |
| </ul> |
| </li> |
| </ul> |
| <p>示例:</p> |
| <ol> |
| <li><p>排除预发布机:</p> |
| <pre><code> => host != 172.22.3.91 |
| </code></pre></li> |
| <li><p>白名单: |
| 注意:一个服务只能有一条白名单规则,否则两条规则交叉,就都被筛选掉了) </p> |
| <pre><code> host != 10.20.153.10,10.20.153.11 => |
| </code></pre></li> |
| <li><p>黑名单:</p> |
| <pre><code> host = 10.20.153.10,10.20.153.11 => |
| </code></pre></li> |
| <li><p>服务寄宿在应用上,只暴露一部分的机器,防止整个集群挂掉:</p> |
| <pre><code> => host = 172.22.3.1*,172.22.3.2* |
| </code></pre></li> |
| <li><p>为重要应用提供额外的机器:</p> |
| <pre><code> application != kylin => host != 172.22.3.95,172.22.3.96 |
| </code></pre></li> |
| <li><p>读写分离:</p> |
| <pre><code> method = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96 |
| method != find*,list*,get*,is* => host = 172.22.3.97,172.22.3.98 |
| </code></pre></li> |
| <li><p>前后台分离:</p> |
| <pre><code> application = bops => host = 172.22.3.91,172.22.3.92,172.22.3.93 |
| application != bops => host = 172.22.3.94,172.22.3.95,172.22.3.96 |
| </code></pre></li> |
| <li><p>隔离不同机房网段:</p> |
| <pre><code> host != 172.22.3.* => host != 172.22.3.* |
| </code></pre></li> |
| <li><p>提供者与消费者部署在同集群内,本机只访问本机的服务:</p> |
| <pre><code> => host = $host |
| </code></pre></li> |
| </ol> |
| <h4 id="脚本路由规则">脚本路由规则</h4> |
| <blockquote> |
| <p><img src="../sources/images/check.gif" alt="warning">支持JDK脚本引擎的所有脚本,比如:javascript, jruby, groovy 等,通过 type=javascript 参数设置脚本类型,缺省为javascript。</p> |
| <p><img src="../sources/images/warning-3.gif" alt="warning">脚本没有沙箱约束,可执行任意代码,存在后门风险</p> |
| </blockquote> |
| <pre><code>"script://0.0.0.0/com.foo.BarService?category=routers&dynamic=false&rule=" + URL.encode("function route(invokers) { ... } (invokers)") |
| </code></pre><p>基于脚本引擎的路由规则,如:</p> |
| <pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">route</span>(<span class="hljs-params">invokers</span>) </span>{ |
| <span class="hljs-keyword">var</span> result = <span class="hljs-keyword">new</span> java.util.ArrayList(invokers.size()); |
| <span class="hljs-keyword">for</span> (i = <span class="hljs-number">0</span>; i < invokers.size(); i ++) { |
| <span class="hljs-keyword">if</span> (<span class="hljs-string">"http://10.20.160.198/wiki/display/dubbo/10.20.153.10"</span>.equals(invokers.get(i).getUrl().getHost())) { |
| result.add(invokers.get(i)); |
| } |
| } |
| <span class="hljs-keyword">return</span> result; |
| } (invokers); <span class="hljs-comment">// 表示立即执行方法</span> |
| </code></pre> |
| |
| |
| </section> |
| |
| </div> |
| <div class="search-results"> |
| <div class="has-results"> |
| |
| <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1> |
| <ul class="search-results-list"></ul> |
| |
| </div> |
| <div class="no-results"> |
| |
| <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1> |
| |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| |
| </div> |
| |
| |
| |
| <a href="令牌验证.html" class="navigation navigation-prev " aria-label="Previous page: 4.33 令牌验证"> |
| <i class="fa fa-angle-left"></i> |
| </a> |
| |
| |
| <a href="配置规则.html" class="navigation navigation-next " aria-label="Next page: 4.35 配置规则"> |
| <i class="fa fa-angle-right"></i> |
| </a> |
| |
| |
| |
| </div> |
| |
| <script> |
| var gitbook = gitbook || []; |
| gitbook.push(function() { |
| gitbook.page.hasChanged({"page":{"title":"4.34 路由规则","level":"1.5.33","depth":2,"next":{"title":"4.35 配置规则","level":"1.5.34","depth":2,"path":"demos/配置规则.md","ref":"demos/配置规则.md","articles":[]},"previous":{"title":"4.33 令牌验证","level":"1.5.32","depth":2,"path":"demos/令牌验证.md","ref":"demos/令牌验证.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"demos/路由规则.md","mtime":"2017-07-28T06:05:28.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-07-28T06:06:18.782Z"},"basePath":"..","book":{"language":""}}); |
| }); |
| </script> |
| </div> |
| |
| |
| <script src="../gitbook/gitbook.js"></script> |
| <script src="../gitbook/theme.js"></script> |
| |
| |
| <script src="../gitbook/gitbook-plugin-search/search-engine.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-search/search.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script> |
| |
| |
| |
| </body> |
| </html> |
| |