Fork me on GitHub

dubbo

dubbo源码分析24 -- 调用核心 Invoke

任何框架或组件,总会有核心领域模型,比如:Spring 的 Bean,Struts 的 Action,Napoli 的 Queue 。对于 Dubbo 来说它的核心就是 Service(服务接口),而 Service 不管是 provider 暴露服务,还是 consumer 引用服务。它都是一个非常重要的概念,我们来看一下 Dubbo 的核心领域模型: Protocol 是服务域,它是 Invoker 暴露和引用的主功能入口,它负责 Invoker 的生命周期管理。...

dubbo源码分析23 -- provider 接收与发送原理

在前面一篇博客中分享了 dubbo 在网络通信当中的 consumer 的发送以及接收原理。通过集群容错最终选择一个合适的 Invoke 通过 netty 直联调用 provider 的服务。众所周知, netty 是基于 Java Nio 的 Reactor 模型的异步网络通信框架,所以 dubbo 在 consumer 端把异步变成了同步。 大概总结了 consumer 的发送与接收原理,下面我们来讨论一下 dubbo 网络通信当中 provider 的接收与发送原...

dubbo源码分析22 -- consumer 发送与接收原理

在前面的文章中,我们分析了 dubbo 从 provider 进行服务暴露,然后把服务信息注册到注册中心上面解耦 consumer 与 provider 的调用。consumer 通过 javassist 创建代理对象引用远程服务。当通过代理对象调用远程服务的时候,讲到进行真正调用的时候 dubbo 抽象出集群容错(Cluster、Directory、Router、LoadBalance)从服务多个暴露方选取出一个合适的 Invoke 来进行调用。 dubbo 默认是通...

dubbo源码分析21 -- 远程通信 netty

dubbo 做为 RPC 框架,需要进行跨 JVM 通信,要保证高性、稳定的进行远程通信。dubbo 底层通信选择了 netty 这个 nio 框架做为默认的网络通信框架并且通过自定义协议进行通信。dubbo 支持以下网络通信框架: Netty(默认) Mina Grizzly 1、 netty 简介在网络编码领悟,Netty 是 Java 的卓越框架。它封装了 Java NIO 操作的复杂性,使得开发者能够使用其提供的简易 API 就能够开发出高效的网络程序。 首...

dubbo源码分析20 -- 远程调用概述

在之前的文章我们分析了 dubbo 的服务治理,也就是在 consumer 端在进行服务引用的时候。consumer 首先会根据配置 Protocol(协议) 创建 Invoke 调用对象,它代表一个可执行体,可向它发起 invoke 调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。然后再使用 ProxyFactory 接口创建代理对象,进行远程调用。 创建的代理对象为 InvokeInvocationHandler,然后它组合了一个 Mo...

dubbo源码分析19 -- 服务治理

在之前的 dubbo 源码分析中我们分析了 dubbo 的服务暴露。provider 把需要暴露的服务地址信息注册到注册中心(比如:zookeeper),然后把通过 java nio 框架 netty 以 socket 的方式把远程服务暴露给 consumer 调用,并且订阅注解中心,当注册中心发生变化的时候 Inovke 调用就会改变。当 consumer 需要引用服务的时候通过 javassist 创建代理对象,获取到代理对象 InvokerInvocationHa...

dubbo源码分析18 -- 服务监控

在分布式服务当中监控服务的各项指标至关重要,而 dubbo 也提供了一个简单的监控中心(Simple Monito)。Simple Monitor挂掉不会影响到Consumer和Provider之间的调用,所以用于生产环境不会有风险。 并且配置好了之后可以结合 admin 管理后台使用,可以清晰的看到服务的访问记录、成功次数、失败次数等….. Simple Monitor 采用磁盘存储统计信息,请注意安装机器的磁盘限制,如果要集群,建议用mount共享磁盘。 1、监控...

dubbo源码分析17 -- 集群容错总结

在集中式环境中服务的机器台只有一台,这样对于服务不仅存在服务单点故障问题而且还存在流量问题。为了解决这个问题,就引入的分布式与集群概念。 分布式:一个业务分拆多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上 当请求来临时,如何从多个服务器中,选择一个有效、合适的服务器,这个集群所需要面对一问题。所以在集群里面就引申出负载均衡(LoadBalance),高可用(HA),路由(Route)等概念。我们来看一下 dubbo 在进行服务调用的时候是如何处...

dubbo源码分析16 -- 集群容错之LoadBalance

在集中式环境中服务的机器台只有一台,这样对于服务不仅存在服务单点故障问题而且还存在流量问题。为了解决这个问题,就引入的分布式与集群概念。 分布式:一个业务分拆多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上 1、 dubbo 服务治理当请求来临时,如何从多个服务器中,选择一个有效、合适的服务器,这个集群所需要面对一问题。所以在集群里面就引申出负载均衡(LoadBalance),高可用(HA),路由(Route)等概念。我们来看一下 dubbo 在...

dubbo源码分析15 -- 集群容错之Route

在集中式环境中服务的机器台只有一台,这样对于服务不仅存在服务单点故障问题而且还存在流量问题。为了解决这个问题,就引入的分布式与集群概念。 分布式:一个业务分拆多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上 1、 dubbo 服务治理当请求来临时,如何从多个服务器中,选择一个有效、合适的服务器,这个集群所需要面对一问题。所以在集群里面就引申出负载均衡(LoadBalance),高可用(HA),路由(Route)等概念。我们来看一下 dubbo 在...