问题探索

一个完备的分布式架构应该具备和功能?

讨论范围

1.分布式微服务架构画像

2.分布式微服务市场需求与前景

3.分布式微服务在企业项目中的地位

4.分布式微服务生态圈

5.技术架构严谨的本质

6.分布式微服务治理技术原理

7.分布式微服务服务异步与同步的原理

8.分布式微服务Spring Cloud Alibaba Dubbo三大法宝

聚焦

架构设计思想

1.分布式微服务架构画像

1.1 Dubbo架构

1.2 分布式Dubbo架构详细设计

http://dubbo.apache.org/en-us/docs/dev/design.html

数据为什么要使用序列化?

因为协议环境针对的是远程过程调用,针对方法级别的调用,传输的参数是一个对象,因此使用的是序列化。

分布式调用 java grpc 分布式调用服务_分布式调用 java grpc

2.分布式微服务市场需求与前景

2.1 Baidu RPC Framework

百度在2008年开发的RPC框架,在百度产品线广泛使用,已被brpc代替。

百度内部最常使用的工业级RPC框架,有1,000,000+个实例(不包含Client),在百度内叫“baidu-rpc",目前只开源C++版本。

2.2 谷歌Grpc

主要用于智能电视、智能家居。

支持跨语言:Android java、C#、Node、PHP、Python、Ruby...

GRPC都基于定义服务的思想。

既指定可以通过其参数和返回类型进行远程调用。

分布式调用 java grpc 分布式调用服务_分布式调用 java grpc_02

GRPC可以将协议缓冲区用作其接口定义语言(IDL)和其基础消息交换格式。

2.3 Sofa RPC

是蚂蚁金服的技术架构。

2.4 Netflix Feign

2.5 Spring Cloud Alibaba Dubbo

3.在企业项目中的使用

分布式调用 java grpc 分布式调用服务_百度_03

4.分布式微服务服务异步与同步的原理

4.1 通讯模型

分布式调用 java grpc 分布式调用服务_百度_04

callback是真正的异步,可跨线程调用。

future是伪异步。

Dubbo中没有同步调用,均为异步调用。

使用请求ID实现请求和响应进行映射。

5.分布式微服务Spring Cloud Alibaba Dubbo三大法宝

5.1 法宝一(URL BUS)

每一个资源有自己独有的地址。

例如http://www.solomonall.com?pid=1234&token=sns212dfdfd&threads=10

通用URL思想:

URL

ftp:

mysql:

oracle://

dubbo://

registry://

consumer://

tmp://

URL BUS结构详解

分布式调用 java grpc 分布式调用服务_分布式调用 java grpc_05

urls:定位在一个资源时,还可以游离至其他的资源,可以理解为多分枝列表。

URL输出案例

分布式调用 java grpc 分布式调用服务_百度_06

URL BUS如何生成

分布式调用 java grpc 分布式调用服务_分布式调用 java grpc_07

URL BUS如何进行协议转换

分布式调用 java grpc 分布式调用服务_百度_08

5.2 法宝二(Dynamic Proxy)

动态代理,在Dubbo中充当远程访问的中间层,由于组织请求数据,然后将Invocation数据传输到各个Invoker中进行处理。

分布式调用 java grpc 分布式调用服务_百度_09

5.3 法宝三(Extension Loader)

一个接口代表一个服务。

分布式调用 java grpc 分布式调用服务_RPC_10