Fork me on GitHub
dubbo源码分析24 -- 调用核心 Invoke

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据幂等

在系统设计的时候,操作幂等设计是一点需要考虑的点。 幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 用数学表达式来表达的话: f(x) = f (f (x)) 1、数据库幂等幂等性是后续多余的调用不会对系统数据的一致性进行破坏。在数据库操作一般会有增、删、查、改 4 类操作。下面我们来看这 4 种操作的幂等性: select : 查询...

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

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

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

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

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

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

hystrix 概述

hystrix 概述

1、什么是 Hystrix?在分布式环境中,许多服务依赖项不可避免地将会失败。Hystrix是一个通过添加延迟容忍和容错逻辑来帮助您控制这些分布式服务之间的交互的库。Hystrix通过隔离服务之间的访问点来实现这一点,停止跨级的级联故障,并提供备用选项,所有这些都可以提高系统的整体弹性。 Hystrix 的历史Hystrix是由Netflix的API团队在2011年开始的弹性工程工作演变而来的。2012年,Hystrix继续发展和成熟,Netflix的许多团队都采用了它...