分布式大规模服务调用架构
问题探索
一个完备的分布式架构应该具备和功能?
讨论范围
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
数据为什么要使用序列化?
因为协议环境针对的是远程过程调用,针对方法级别的调用,传输的参数是一个对象,因此使用的是序列化。
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都基于定义服务的思想。
既指定可以通过其参数和返回类型进行远程调用。
GRPC可以将协议缓冲区用作其接口定义语言(IDL)和其基础消息交换格式。
2.3 Sofa RPC
是蚂蚁金服的技术架构。
2.4 Netflix Feign
2.5 Spring Cloud Alibaba Dubbo
3.在企业项目中的使用
4.分布式微服务服务异步与同步的原理
4.1 通讯模型
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结构详解
urls:定位在一个资源时,还可以游离至其他的资源,可以理解为多分枝列表。
URL输出案例
URL BUS如何生成
URL BUS如何进行协议转换
5.2 法宝二(Dynamic Proxy)
动态代理,在Dubbo中充当远程访问的中间层,由于组织请求数据,然后将Invocation数据传输到各个Invoker中进行处理。
5.3 法宝三(Extension Loader)
一个接口代表一个服务。