Dubbo整理
什么是分布式框架
- 分布式系统是若干个独立系统的集合,但是用户使用起来像是在使用一套系统
为什么要是用分布式系统
- 整体规模太大,其中某个模块并发量较高
应用架构的发展和演变
-
单一架构
- 将所有业务放在一台服务器上
- 开发简单
- 不易于扩展和维护
-
垂直应用架构
- 按照业务拆分根据业务需求不同来部署服务器
- 扩展更容易
- 前端一改就可能造成整个项目的重新部署
-
分布式架构
- 将业务拆分后,用某种方式实现各个业务模块的远程调用和复用
- 解决了分布式系统中互相调用的问题
- 要求有统一的管理调度中心
Dubbo高性能
-
序列化 Dubbo采用最高的序列化方式
- 序列化方式有 xml json 二进制流等等
- 二进制流是最高效的序列化方式
-
网络通信
- Dubbo采用Socket通信机制,一步到位,并且可以建立长链接,不用反复连接,可以直接传输数据
Dubbo核心功能
- 面向接口的远程方法调用
- 智能容错和负载均衡
- 服务自动注册和发现
- start : 系统初始化的时候,把服务的提供者加载到容器里面这个容器就是Spring容器
- register: 对外提供的服务注册到注册中心
- subscribe: 消费者去注册中心订阅服务
- notify: 会把地址返回给消费者
- invoke: 消费者就会根据返回的地址去服务器中消费对应的服务
- count: 无论是消费者还是容器都会向告诉监控中心自己的状态
- 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务
- 服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己需要的服务,服务消费者,根据提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果失败,再选另一台调用
- 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更的数据给消费者
- 监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时发送一次统计数据到监控中心