You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hu...@apache.org on 2019/02/22 14:51:55 UTC

[incubator-dubbo-website] branch asf-site updated: Fix typos (#302)

This is an automated email from the ASF dual-hosted git repository.

huxing pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new eda77f0  Fix typos (#302)
eda77f0 is described below

commit eda77f02b9fd45f6165da474334f73471b3e6fee
Author: mimihom <ll...@gmail.com>
AuthorDate: Fri Feb 22 22:51:51 2019 +0800

    Fix typos (#302)
---
 docs/zh-cn/source_code_guide/export-service.md | 2 +-
 docs/zh-cn/source_code_guide/refer-service.md  | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/zh-cn/source_code_guide/export-service.md b/docs/zh-cn/source_code_guide/export-service.md
index beb3d81..173e092 100644
--- a/docs/zh-cn/source_code_guide/export-service.md
+++ b/docs/zh-cn/source_code_guide/export-service.md
@@ -1215,7 +1215,7 @@ protected void doOpen() throws Throwable {
 
 以上就是 NettyServer 创建的过程,dubbo 默认使用的 NettyServer 是基于 netty 3.x 版本实现的,比较老了。因此 Dubbo 另外提供了 netty 4.x 版本的 NettyServer,大家可在使用 Dubbo 的过程中按需进行配置。
 
-到此,关于服务导出的过程就分析完了。整个过程比较复杂,大家在分析的过程中耐心一些。并且多写 Demo 进行进行调试,以便能够更好的理解代码逻辑。
+到此,关于服务导出的过程就分析完了。整个过程比较复杂,大家在分析的过程中耐心一些。并且多写 Demo 进行调试,以便能够更好的理解代码逻辑。
 
 本节内容先到这里,接下来分析服务导出的另一块逻辑 — 服务注册。
 
diff --git a/docs/zh-cn/source_code_guide/refer-service.md b/docs/zh-cn/source_code_guide/refer-service.md
index 5ae3bb6..e1fa750 100644
--- a/docs/zh-cn/source_code_guide/refer-service.md
+++ b/docs/zh-cn/source_code_guide/refer-service.md
@@ -6,11 +6,11 @@ description: 本文介绍了 Dubbo 服务引用的过程和实现细节
 
 ## 1. 简介
 
-上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用服务,第二种方式是基于注册中心进行引用。服务直联的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,服务消费者还需要经历 Invoker 创建、代理类创建等步骤。这些步骤,将在后续章节中一一进行分析。
+上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,服务消费者还需要经历 Invoker 创建、代理类创建等步骤。这些步骤,将在后续章节中一一进行分析。
 
 ## 2.服务引用原理
 
-Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 \<dubbo:reference\> 的 init 属性开启。下面我们按照 Dubbo 默认配置进行分析,整个分析过程从 ReferenceBean 的 getObject 方法开始。当我们的服务被注入到其他类中时,Spring 会第一时间调用 getObject 方法,并由该方法执行服务引用逻辑。按照惯例,在进行具体工作之前,需先进行配置检查与收集工作。接着根据收集到的信息决定服务用的方式,有三种,第一种是引用本地 (JVM) 服务,第二是通过直联方式引用远程服务,第三是通过注册中心引用远�
 �服务。不管是哪种引用方式,最后都会得到一个 Invoker 实例。如果有多个注册中心,多个服务提供者,这个时候会 [...]
+Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 \<dubbo:reference\> 的 init 属性开启。下面我们按照 Dubbo 默认配置进行分析,整个分析过程从 ReferenceBean 的 getObject 方法开始。当我们的服务被注入到其他类中时,Spring 会第一时间调用 getObject 方法,并由该方法执行服务引用逻辑。按照惯例,在进行具体工作之前,需先进行配置检查与收集工作。接着根据收集到的信息决定服务用的方式,有三种,第一种是引用本地 (JVM) 服务,第二是通过直连方式引用远程服务,第三是通过注册中心引用远�
 �服务。不管是哪种引用方式,最后都会得到一个 Invoker 实例。如果有多个注册中心,多个服务提供者,这个时候会 [...]
 
 以上就是服务引用的大致原理,下面我们深入到代码中,详细分析服务引用细节。
 
@@ -322,7 +322,7 @@ private T createProxy(Map<String, String> map) {
             }
         }
 
-        // 单个注册中心或服务提供者(服务直联,下同)
+        // 单个注册中心或服务提供者(服务直连,下同)
         if (urls.size() == 1) {
             // 调用 RegistryProtocol 的 refer 构建 Invoker 实例
             invoker = refprotocol.refer(interfaceClass, urls.get(0));
@@ -370,7 +370,7 @@ private T createProxy(Map<String, String> map) {
 }
 ```
 
-上面代码很多,不过逻辑比较清晰。首先根据配置检查是否为本地调用,若是,则调用 InjvmProtocol 的 refer 方法生成 InjvmInvoker 实例。若不是,则读取直联配置项,或注册中心 url,并将读取到的 url 存储到 urls 中。然后根据 urls 元素数量进行后续操作。若 urls 元素数量为1,则直接通过 Protocol 自适应拓展类构建 Invoker 实例接口。若 urls 元素数量大于1,即存在多个注册中心或服务直联 url,此时先根据 url 构建 Invoker。然后再通过 Cluster 合并多个 Invoker,最后调用 ProxyFactory 生成代理类。Invoker 的构建过程以及代理类的过程比较重要,因此接下来将分两小节对这两个过程进行分析。
+上面代码很多,不过逻辑比较清晰。首先根据配置检查是否为本地调用,若是,则调用 InjvmProtocol 的 refer 方法生成 InjvmInvoker 实例。若不是,则读取直连配置项,或注册中心 url,并将读取到的 url 存储到 urls 中。然后根据 urls 元素数量进行后续操作。若 urls 元素数量为1,则直接通过 Protocol 自适应拓展类构建 Invoker 实例接口。若 urls 元素数量大于1,即存在多个注册中心或服务直连 url,此时先根据 url 构建 Invoker。然后再通过 Cluster 合并多个 Invoker,最后调用 ProxyFactory 生成代理类。Invoker 的构建过程以及代理类的过程比较重要,因此接下来将分两小节对这两个过程进行分析。
 
 #### 3.2.1 创建 Invoker