Dubbo 一次调用过程

本文所有讨论都基于Dubbo 2.7.2 上一篇文章里讲到Consumer通过DubboInvoker将客户端的请求发出去,这篇文章以Netty4为例接着分析从请求发出到收到返回值是一个什么样的过程。 先来一张RPC的数据流程图,后面根据这个图分析会更清晰一些(其中不包括Cluster、LoadBalance这些过程) Provider和Consumer处理数据的流程差不多,所以这里只分析一下Consumer端的流程 发送请求DubboInvoker经过Cluster、L...

阅读全文

Dubbo Consumer(2)

本文所有讨论都基于Dubbo 2.7.2 上一篇文章分析了Consumer引用服务的过程,其中通过Cluster,LoadBalance等最后确定了一个可以调用的Invoker,那么这个Invoker具体怎么创建的呢?这篇文章就来分析一下。 从前文知道,Directory负责从注册中心获取服务,并监控服务的变化。所以我们就从Directory里开始看起。 订阅服务前面的文章讲到在Consumer初始化时会创建Directory,里面会调用subscribe(),这个方法就是Dire...

阅读全文

Dubbo Consumer

本文所有讨论都基于Dubbo 2.7.2 这篇文章介绍了Dubbo如何暴露服务,这篇继续介绍Consumer如何引入服务。Consumer引用服务相比Provider要复杂一下,因为还要有服务路由,负载均衡等模块。 配置1234567<dubbo:application name="dubbo-example-consumer"/><!-- 使用zookeeper注册中心引用服务 --><dubbo:registry protocol="zookeep...

阅读全文

Dubbo 协议解析

本文所有讨论都基于Dubbo 2.7.2 上一篇分析了Dubbo暴露服务的过程,当Provider服务启动后,网络传输层会使用Netty、Mina等框架接收处理数据,这一篇详细介绍一下这个处理Dubbo协议数据的过程。 协议格式Dubbo协议格式如下:Header(16 bytes) + Body(n bytes) Magic (2 byte) 常数=0xdabb Req/Res (1 bit) 标识当前是一个Request还是一个Response。1 → Req,0 → ...

阅读全文

Dubbo Provider

本文所有讨论都基于Dubbo 2.7.2 上一篇文章介绍了Dubbo的SPI机制,这篇文章继续介绍Dubbo Provider暴露服务的过程。暴露服务,顾名思义,就是要让服务端知道自己能提供哪些服务,包含服务的ip、端口、实例名和方法名等。那么接下来就开始服务暴露过程吧,开始之前,先贴上我们的样例代码及其配置。 配置1234567891011121314151617181920public interface DemoService { String sayHell...

阅读全文

Dubbo SPI

本文所有讨论都基于Dubbo 2.7.2 SPI是JDK引入的一种加载扩展点的机制,我们接触到最多的可能就是使用DriverManager加载数据库的Driver,DriverManager内部会使用ServiceLoader读取jar包下的META-INF/services/java.sql.Driver文件,在读的过程中,每一行都代表一个具体的Driver类,读到后使用反射进行实例化。 这个文件内容如下: 12com.mysql.jdbc.Drivercom.mysql.fab...

阅读全文

Redis和Mysql一致性方案探讨

现在很多系统的后台服务都会使用Redis和Mysql,相信你也不会陌生。今天我们探讨一下二者的数据一致性方案。网上已经有很多文章对这个问题做了深刻的分析,这篇文章仅仅记录一下我个人对这个问题的看法。 这里讨论的一致性实际上是最终一致性,但是我们在实现这个最终一致性的时候,要尽量使这个“最终”尽量短,即Redis和Mysql不一致的时间尽量短 概述众所周知,由于Mysql无法满足当前互联网应用对读写高性能的要求,因此“被迫”在application和Mysql中间引入了Redis,利...

阅读全文

序列化协议

序列化 (Serialization) 是将对象的状态信息转换为可以存储或传输的形式的过程。由于计算机底层都是通过二进制处理和保存数据,所以序列化实际就是探讨将对象的状态保存为二进制的过程,序列化协议规定了这个二进制的结构。 本文简单介绍了两种序列化协议:1. Java序列化;2. ProtoBuf序列化; Java序列化12345678910111213141516package com.young.blog.serialize;public class Person imple...

阅读全文


Powered by Hexo and Hexo-theme-hiker

Copyright © 2019 - 2025 Young All Rights Reserved.

访客数 : | 访问量 :