文章目录
分布式系统中的相关概念
大型互联网项目架构目标
- 高性能:快速访问
性能指标:
- 响应时间:执行一个请求从开始到最后受到相应数据所花费的总体时间
- 并发数:同时能处理的请求数量
- 并发连接数:客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量
- 请求数:也称QPS,指每秒多少请求
- 并发用户数:单位时间内有多少用户
- 吞吐量:指单位时间内系统能处理的请求数量
- QPS:每秒查询数
- TPS:每秒事务数
- 高可用:网站服务可以一直访问
- 可伸缩:增减
- 高可扩展:耦合低,可替换
- 安全性
- 敏捷性
集群和分布式
- 集群:很多机器做一样的事情
- 一个业务模块,部署在多台服务器上
- 分布式:很多机器做一件大事,但是各自负责不同部分
- 一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上
- 一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上
架构演进
Dubbo概述
概念
- Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架
- 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案
Dubbo快速入门
安装zookeeper 注册中心管理器
1.安装jdk8
2.安装zookeeper
3.配置zkdata路径
4.启动测试
./zkServer start/status
创建provider和consunmer模块
Dubbo高级特性
dubbo-admin管理平台
dubbo常用高级配置
序列化
地址缓存
超时和重试
情景:
- 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
- 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
- dubbo 利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
- 使用timeout属性配置超时时间,默认值1000,单位毫秒。
解决方案:
- 设置了超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
- 如果出现网络抖动,则这一次请求就会失败。
- Dubbo 提供重试机制来避免类似问题的发生。
- 通过 retries 属性来设置重试次数。默认为 2 次。
多版本
- 灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。
- dubbo 中使用version 属性来设置和调用同一个接口的不同版本
负载均衡
负载均衡策略(4种) :
- Random :按权重随机,默认值。按权重设置随机概率。
- RoundRobin :按权重轮询
- LeastActive:最少活跃调用数,相同活跃数的随机。
- ConsistentHash:一致性 Hash,相同参数的请求总是发到同一提供者。
集群容错
集群容错模式:
- Failover Cluster:失败重试。默认值。当出现失败,重试其它服务器 ,默认重试2次,使用 retries 配置。一般用于读操作
- Failfast Cluster :快速失败,只发起一次调用,失败立即报错。通常用于写操作。
- Failsafe Cluster :失败安全,出现异常时,直接忽略。返回一个空结果。
- Failback Cluster :失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
- Forking Cluster :并行调用多个服务器,只要一个成功即返回。
- Broadcast Cluster :广播调用所有提供者,逐个调用,任意一台报错则报错。