一只不甘沦为码农的程序猿

Dubbo专题

2019-03-23  本文已影响0人  zorkelvll
image

ZERO

    持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/articles/2018/12/28/1546004534620

背景

    本文主要是记录在学习 Java - Dubbo 过程中的一些知识点备忘!

一、基本概念

1、Dubbo

Dubbo是一款高性能、轻量级的开源Java RPC框架,具有三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

dubboarchitecturepng

注意:该dubbo架构图,需要可以自己手写画出来

说明:

2、RPC

RPC远程过程调用:是一种通过网络从远程计算机程序上请求服务,且不需要了解底层网络技术的通信机制;也即,RPC是主要是解决远程通信间的问题!

RPC调用流程图(即RPC框架如dubbo解决的是第2~8步)


imagepng

OR 另一种流程图

imagepng

注意:该RPC调用流程图,需要可以自己手写画出来

另外,一个时序图如下

imagepng

RPC框架:即负责屏蔽掉底层的传输方式(TCP或者UDP)、序列化方式以及通信细节!如阿里的HSF、Dubbo,其核心目标是解决分布式系统中服务之间的调用问题

3、RPC框架技术

3.1 建立通信

在客户端和服务端之间建立TCP连接,远程过程调用的所有交换的数据都是在这个连接里传输

3.2 服务寻址
3.3 网络传输

数据传输采用什么协议,数据该如何序列化及反序列化

3.4 NIO通信

大部分RPC框架如Dubbo、HSF、Avro,都是基于Netty这个IO通信框架的(Netty是业界流行的 NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的)

3.5 服务调用

二、Dubbo原理

    dubbo共分为10层,其中service和config层为API,其余各层均为SPI(API application programming interface是给使用者用的,SPI service provider interface是给扩展者使用的)

三、Dubbo负载均衡

    dubbo提供多种负载均衡策略,默认为random随机调用策略

1、 基于权重的随机负载均衡机制 Random LoadBalance(默认)

2、基于权重的轮询负载均衡机制 RoundRobin LoadBalance(不推荐)

3、最少活跃调用数 LeastActive LoadBalance

4、一致性Hash ConsistentHash LoadBalance

5、配置方式

四、Dubbo注册中心zk

在实际生产中,如果zk注册中心宕掉,在一段时间内服务消费方还是能够调用提供方的服务的;这是因为实际上它是使用的本地缓存列表中的服务地址列表信息进行调用的,这也是dubbo健壮性的一个方面

dubbo的健壮性

五、相关问题

Dubbo协议

上一篇 下一篇

猜你喜欢

热点阅读