分布式系统架构解决方案—Dubbo
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
什么是分布式系统
- “分布式系统是若干独立计算机的集合这些计算机对于用户来说就像单个相关系统”
- 分布式系统distributed system是建立在网络之上的软件系统。简单来说多个不同职责人共同来完成一件事
系统架构
单一应用架构
- 当系统开支很小时只需要一个应用将所有的功能部署到一起所有业务都放在一个tomcat里从而减少部署节点和成本
- 此时用于简化 增删改查 工作量的数据访问框架 ORM是关键ORM对象关系映射Object Relational Mapping
- 单一架构的优点 小项目开发快 成本低架构简单 易于开发和测试
- 单一架构的缺点大项目模块耦合严重不易开发维护核心业务与边缘业务混合在一块出现问题互相影响新增业务困难
垂直应用架构
- 当访问量逐渐增大单一应用增加机器带来的加速度越来越小将应用拆成几个互不相干的几个应用,以提高效率
- 大模块按照mvc分层模式进行拆分成多个互不相关的小模块并且每个小模块都有独立的服务器
- 此时用于加速前端页面开发的web框架MVC是关键因为每个小应用都有独立的页面
- MVC模型视图控制器 Model View Controller
- 垂直应用架构的缺点模块之间不可能完全没有交集公用模块无法重复利用。
分布式服务架构
- 当垂直应用越来越多应用之间交互不可避免将核心业务抽取出来作为独立的业务逐渐形成稳健的服务中心使前端应用能更快速的响应
- 此时用户提高业务复用及整合的分布式服务框架RPC远程调用是关键
- RPC独立的应用服务器之间要依靠RPCRomote Procedure Call才能调用
流动计算架构
- 当服务越来越多容量的评估小服务资源的浪费等问题逐渐呈现此时需增加一个调度中心基于访问压力实时管理集群容量提高集群利用率
- 此时用于提高机器利用率的资源调度和治理中心SOA是关键
- SOA面向服务架构Service-Oriented Architecture简单理解就是“服务治理”例如公交车站的“调度员”
Dubbo简介
- Dubbo是分布式服务框架是阿里巴巴的开源项目现交给apache进行维护
- Dubbo致力于提高性能和透明化的RPC远程服务调用方案以及SOA服务治理方案
RPC的概念
- RPC【Remote Procedure Call】是指远程过程调用是一种进程间通信方式
- RPC基本的通信原理
- 在客户端将对象进行序列化
- 底层通信框架使用netty基于tcp协议的socket将序列化的对象发给服务方提供方
- 服务提供方通过socket得到数据文件之后进行反序列化获得要操作的对象
- 对象数据操作完毕将新的对象序列化再通过服务提供方的socket返回给客户端
- 客户端获得序列化数据再反序列化得到最新的数据对象至此完成一次请求
dubbo节点角色
节点 | 角色说明 |
---|---|
Provider | 服务的提供方 |
Consumer | 服务的消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 监控服务的统计中心 |
Container | 服务运行容器 |
dubbo节点调用关系
- 服务容器负责启动加载运行服务提供者
- 服务提供者在启动时向注册中心注册自己提供的服务
- 服务消费者在启动时向注册中心订阅自己所需的服务
- 注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者
- 服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用
- 服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心
Dubbo 安装管理端
- 修改配置文件 application.properties
- 在dubbo-admin目录使用Maven打包
mvn clean package
- 运行target目录中的jar文件
D:\dubbo-admin-master\dubbo-admin\target>java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
- 打开浏览器访问http://localhost:7001/ 账号密码 root root
Dubbo-监控统计中心
- 修改dubbo-monitor-simple-2.5.3conf\dubbo.properties
- 运行 bin\start.bat打开Dubbo监控中心
- 访问地址 http://localhost:8080/