| |
| <!DOCTYPE HTML> |
| <html lang="" > |
| <head> |
| <meta charset="UTF-8"> |
| <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> |
| <title>10 服务化最佳实践 · 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="recommend.html" /> |
| |
| |
| <link rel="prev" href="reference-maven/maven.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="demos/启动时检查.html"> |
| |
| <a href="demos/启动时检查.html"> |
| |
| |
| 4.1 启动时检查 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.2" data-path="demos/集群容错.html"> |
| |
| <a href="demos/集群容错.html"> |
| |
| |
| 4.2 集群容错 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.3" data-path="demos/负载均衡.html"> |
| |
| <a href="demos/负载均衡.html"> |
| |
| |
| 4.3 负载均衡 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.4" data-path="demos/线程模型.html"> |
| |
| <a href="demos/线程模型.html"> |
| |
| |
| 4.4 线程模型 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.5" data-path="demos/直连提供者.html"> |
| |
| <a href="demos/直连提供者.html"> |
| |
| |
| 4.5 直连提供者 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.6" data-path="demos/只订阅.html"> |
| |
| <a href="demos/只订阅.html"> |
| |
| |
| 4.6 只订阅 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.7" data-path="demos/只注册.html"> |
| |
| <a href="demos/只注册.html"> |
| |
| |
| 4.7 只注册 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.8" data-path="demos/静态服务.html"> |
| |
| <a href="demos/静态服务.html"> |
| |
| |
| 4.8 静态服务 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.9" data-path="demos/多协议.html"> |
| |
| <a href="demos/多协议.html"> |
| |
| |
| 4.9 多协议 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.10" data-path="demos/多注册中心.html"> |
| |
| <a href="demos/多注册中心.html"> |
| |
| |
| 4.10 多注册中心 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.11" data-path="demos/服务分组.html"> |
| |
| <a href="demos/服务分组.html"> |
| |
| |
| 4.11 服务分组 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.12" data-path="demos/多版本.html"> |
| |
| <a href="demos/多版本.html"> |
| |
| |
| 4.13 多版本 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.13" data-path="demos/分组聚合.html"> |
| |
| <a href="demos/分组聚合.html"> |
| |
| |
| 4.14 分组聚合 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.14" data-path="demos/参数验证.html"> |
| |
| <a href="demos/参数验证.html"> |
| |
| |
| 4.15 参数验证 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.15" data-path="demos/结果缓存.html"> |
| |
| <a href="demos/结果缓存.html"> |
| |
| |
| 4.16 结果缓存 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.16" data-path="demos/泛化引用.html"> |
| |
| <a href="demos/泛化引用.html"> |
| |
| |
| 4.17 泛化引用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.17" data-path="demos/泛化实现.html"> |
| |
| <a href="demos/泛化实现.html"> |
| |
| |
| 4.18 泛化实现 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.18" data-path="demos/回声测试.html"> |
| |
| <a href="demos/回声测试.html"> |
| |
| |
| 4.19 回声测试 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.19" data-path="demos/上下文信息.html"> |
| |
| <a href="demos/上下文信息.html"> |
| |
| |
| 4.20 上下文信息 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.20" data-path="demos/隐式参数.md"> |
| |
| <span> |
| |
| |
| 4.21 隐式参数 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.21" data-path="demos/异步调用.html"> |
| |
| <a href="demos/异步调用.html"> |
| |
| |
| 4.22 异步调用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.22" data-path="demos/本地调用.html"> |
| |
| <a href="demos/本地调用.html"> |
| |
| |
| 4.23 本地调用 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.23" data-path="demos/参数回调.html"> |
| |
| <a href="demos/参数回调.html"> |
| |
| |
| 4.24 参数回调 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.24" data-path="demos/事件通知.html"> |
| |
| <a href="demos/事件通知.html"> |
| |
| |
| 4.25 事件通知 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.25" data-path="demos/本地存根.html"> |
| |
| <a href="demos/本地存根.html"> |
| |
| |
| 4.26 本地存根 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.26" data-path="demos/本地伪装.html"> |
| |
| <a href="demos/本地伪装.html"> |
| |
| |
| 4.27 本地伪装 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.27" data-path="demos/延迟暴露.html"> |
| |
| <a href="demos/延迟暴露.html"> |
| |
| |
| 4.28 延迟暴露 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.28" data-path="demos/并发控制.html"> |
| |
| <a href="demos/并发控制.html"> |
| |
| |
| 4.29 并发控制 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.29" data-path="demos/连接控制.html"> |
| |
| <a href="demos/连接控制.html"> |
| |
| |
| 4.30 连接控制 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.30" data-path="demos/延迟连接.html"> |
| |
| <a href="demos/延迟连接.html"> |
| |
| |
| 4.31 延迟连接 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.31" data-path="demos/粘滞连接.html"> |
| |
| <a href="demos/粘滞连接.html"> |
| |
| |
| 4.32 粘滞连接 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.32" data-path="demos/令牌验证.html"> |
| |
| <a href="demos/令牌验证.html"> |
| |
| |
| 4.33 令牌验证 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.33" data-path="demos/路由规则.html"> |
| |
| <a href="demos/路由规则.html"> |
| |
| |
| 4.34 路由规则 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.34" data-path="demos/配置规则.html"> |
| |
| <a href="demos/配置规则.html"> |
| |
| |
| 4.35 配置规则 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.35" data-path="demos/服务降级.html"> |
| |
| <a href="demos/服务降级.html"> |
| |
| |
| 4.36 服务降级 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.36" data-path="demos/优雅停机.html"> |
| |
| <a href="demos/优雅停机.html"> |
| |
| |
| 4.37 优雅停机 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.37" data-path="demos/主机绑定.html"> |
| |
| <a href="demos/主机绑定.html"> |
| |
| |
| 4.38 主机绑定 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.38" data-path="demos/日志适配.html"> |
| |
| <a href="demos/日志适配.html"> |
| |
| |
| 4.39 日志适配 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.39" data-path="demos/访问日志.html"> |
| |
| <a href="demos/访问日志.html"> |
| |
| |
| 4.40 访问日志 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.40" data-path="demos/服务容器.html"> |
| |
| <a href="demos/服务容器.html"> |
| |
| |
| 4.41 服务容器 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.41" data-path="demos/ReferenceConfig缓存.html"> |
| |
| <a href="demos/ReferenceConfig缓存.html"> |
| |
| |
| 4.42 Reference Config缓存 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5.42" data-path="demos/分布式事务.html"> |
| |
| <a href="demos/分布式事务.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 active" 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="." >10 服务化最佳实践</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"> |
| |
| <h4 id="分包">分包</h4> |
| <ul> |
| <li>建议将服务接口,服务模型,服务异常等均放在API包中,因为服务模型及异常也是API的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)</li> |
| <li>如果需要,也可以考虑在API包中放置一份spring的引用配置,这样使用方,只需在Spring加载过程中引用此配置即可,配置建议放在模块的包目录下,以免冲突,如:com/alibaba/china/xxx/dubbo-reference.xml</li> |
| </ul> |
| <h4 id="粒度">粒度</h4> |
| <ul> |
| <li>服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo暂未提供分布式事务支持。</li> |
| <li>服务接口建议以业务场景为单位划分,并对相近业务做抽象,防止接口数量爆炸</li> |
| <li>不建议使用过于抽象的通用接口,如:Map query(Map),这样的接口没有明确语义,会给后期维护带来不便。</li> |
| </ul> |
| <h4 id="版本">版本</h4> |
| <ul> |
| <li>每个接口都应定义版本号,为后续不兼容升级提供可能,如: <code><dubbo:service interface="com.xxx.XxxService" version="1.0" /></code></li> |
| <li>建议使用两位版本号,因为第三位版本号通常表示兼容升级,只有不兼容时才需要变更服务版本。</li> |
| <li>当不兼容时,先升级一半提供者为新版本,再将消费者全部升为新版本,然后将剩下的一半提供者升为新版本。</li> |
| </ul> |
| <h4 id="兼容性">兼容性</h4> |
| <ul> |
| <li>服务接口增加方法,或服务模型增加字段,可向后兼容,删除方法或删除字段,将不兼容,枚举类型新增字段也不兼容,需通过变更版本号升级。</li> |
| <li>各协议的兼容性不同,参见: <a href="reference-protocol/introduction.html">服务协议</a></li> |
| </ul> |
| <h4 id="枚举值">枚举值</h4> |
| <ul> |
| <li>如果是完备集,可以用Enum,比如:ENABLE, DISABLE。</li> |
| <li>如果是业务种类,以后明显会有类型增加,不建议用Enum,可以用String代替。</li> |
| <li>如果是在返回值中用了Enum,并新增了Enum值,建议先升级服务消费方,这样服务提供方不会返回新值。</li> |
| <li>如果是在传入参数中用了Enum,并新增了Enum值,建议先升级服务提供方,这样服务消费方不会传入新值。</li> |
| </ul> |
| <h4 id="序列化">序列化</h4> |
| <ul> |
| <li>服务参数及返回值建议使用POJO对象,即通过set,get方法表示属性的对象。</li> |
| <li>服务参数及返回值不建议使用接口,因为数据模型抽象的意义不大,并且序列化需要接口实现类的元信息,并不能起到隐藏实现的意图。</li> |
| <li>服务参数及返回值都必需是byValue的,而不能是byRef的,消费方和提供方的参数或返回值引用并不是同一个,只是值相同,Dubbo不支持引用远程对象。</li> |
| </ul> |
| <h4 id="异常">异常</h4> |
| <ul> |
| <li>建议使用异常汇报错误,而不是返回错误码,异常信息能携带更多信息,以及语义更友好,</li> |
| <li>如果担心性能问题,在必要时,可以通过override掉异常类的fillInStackTrace()方法为空方法,使其不拷贝栈信息,</li> |
| <li>查询方法不建议抛出checked异常,否则调用方在查询时将过多的try...catch,并且不能进行有效处理,</li> |
| <li>服务提供方不应将DAO或SQL等异常抛给消费方,应在服务实现中对消费方不关心的异常进行包装,否则可能出现消费方无法反序列化相应异常。</li> |
| </ul> |
| <h4 id="调用">调用</h4> |
| <ul> |
| <li>不要只是因为是Dubbo调用,而把调用Try-Catch起来。Try-Catch应该加上合适的回滚边界上。</li> |
| <li>对于输入参数的校验逻辑在Provider端要有。如有性能上的考虑,服务实现者可以考虑在API包上加上服务Stub类来完成检验。</li> |
| </ul> |
| |
| |
| </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="reference-maven/maven.html" class="navigation navigation-prev " aria-label="Previous page: 9 maven插件参考手册"> |
| <i class="fa fa-angle-left"></i> |
| </a> |
| |
| |
| <a href="recommend.html" class="navigation navigation-next " aria-label="Next page: 11 推荐用法"> |
| <i class="fa fa-angle-right"></i> |
| </a> |
| |
| |
| |
| </div> |
| |
| <script> |
| var gitbook = gitbook || []; |
| gitbook.push(function() { |
| gitbook.page.hasChanged({"page":{"title":"10 服务化最佳实践","level":"1.11","depth":1,"next":{"title":"11 推荐用法","level":"1.12","depth":1,"path":"recommend.md","ref":"recommend.md","articles":[]},"previous":{"title":"9 maven插件参考手册","level":"1.10","depth":1,"path":"reference-maven/maven.md","ref":"reference-maven/maven.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":"best-practice.md","mtime":"2017-07-28T03:11:34.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> |
| |