架构的演变
- 单一系统
- 扩展不易:添加某一个功能需要重新打包整个项目
- 开发不易:所有模块儿都需要同一个项目中开发
- 垂直架构
- 将所有功能拆分成若干个小程序,部署到不同的服务器上(解决了单一系统的问题)
- 页面和业务不分离,修改页面就得对整个模块进行部署
- 应用之间需要交互
- 将所有功能拆分成若干个小程序,部署到不同的服务器上(解决了单一系统的问题)
- 分布式架构
- 抽出核心业务,供多方进行调用
但是问题来了不同服务器上如何调用?
dubbo
PRC基本原理:
影响RPC速度的两个核心:序列化和反序列化,socket通信耗时
1.1、概述:
- dubbo是一款高性能的RPC框架,提供三大核心能力:
- 面向接口的远程方法调用
- 智能容错和负载均衡
- 服务自动注册和发现
dubbo原理
dubbo的通信是实现了RPC技术,致力于封装通信的细节,通信的底层是Netty
netty:是一个异步事件驱动的网络应用框架,用于快速开发可维护性的高性能协议服务器和客户端,他极大的简化了TCP和UDP套接字服务器等网络编程,利用NIO(非阻塞IO)实现
NIO
RPC 封装底层的调用细节:
服务自动注册和发现 zookeeper提供
dubbo底层分为10层,每层的作用如下:
第一层:service层,接口层,给服务提供者和消费者来实现的
第二层:config层,配置层,主要是对dubbo进行各种配置
第三层:proxy层,服务代理层,透明生成客户端的stub和服务端的skeleton
第四层:registry层,服务注册层,负责服务的注册和发现
第五层:cluster层,集群层,封装多个服务提供者的路由和负载均衡,将多个实例组合成一个服务。
第六层:monitor层,监控层,对RPC接口的调用次数和调用时间进行监控
第七层:protocol层,远程调用层,封装RPC调用
第八层:exchange层,信息交换层,封装请求响应模式,同步转异步
<