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