集群和分布式
- 举例来说,假设我是一个厨师,后厨只有我一个人。我需要洗菜切菜炒菜,这样的话我的效率就很低。后来我招聘一个员工A,我们两个一起洗菜切菜炒菜,这样就快了一些。我们两个干的活一样,这就是集群。
- 后来我觉得还是慢,招了一员工B专门洗菜切菜,A专门炒菜,那么AB干的活不同,他们两个就是一个分布式。
- 一段时间以后,生意越来越好,洗菜的忙不过来,我又招了一个洗菜员工,这称为可伸缩。
- 为了以防万一,我雇了一个人,哪里忙去哪里帮忙,称为高扩展性
Dubbo高级特性
Dubbo是阿里巴巴公司开源的一款高性能、轻量级的RPC框架,后来被Apache公司收购,现在是Apache公司顶级项目之一。
Dubbo的两大功能:远程服务调用和服务治理。
dubbo管理平台:dubbo-admin
在GitHub上搜索dubbo-admin,下载解压后找到dubbo-admin-server-src-main-resources,找到配置文件,把centers in dubbo的地址全部改成自己虚拟机的地址。
- 在下图目录中,使用命令行:mvn clean package
- 打包完成后,进入distribution结尾的文件夹---->target目录下,右键使用shell打开,运行命令java- jar ./打包好的jar包名。运行成功后在浏览器输入生成的地址即可看见dubbo的界面
1、 序列化
序列化用于电脑之间传输对象,将对象序列化成流数据发过去。对象想被序列化,就要实现serializable 接口。
- 在dubbo内部,已经封装了序列化和反序列化,只需要在定义类是实现序列化接口即可
2.负载均衡
dubbo提供了四种负载均衡策略
- Random:按照权重随机概览,是默认方式
- RoundRobin:按权重轮巡
- LeastActive:
- ConsistentHash:相同参数总是发到同一个提供者
3、集群容错
同样的提供了四种容错方式
- Failover Cluster:默认值,失败重试,例如访问A失败了,最多再访问B,C,再失败才会抛出异常
- FailFAST Cluster:访问了一次,失败了,抛出异常
- Failsafe Cluster:访问失败直接忽略,返回空
- FailBack Cluster:访问失败,自动恢复,过一会再发请求直到成功
- forking Cluster:一次调用多个,有一个成功立即返回
4、服务降级
什么是服务降级:例如某个软件由ABC三个模块组成,运行时由于种种原因软件即将崩溃,这时候就需要释放一个或多个资源,来保证核心C正常运行
5、地址缓存
问:如果注册中心挂了,服务还能否正常访问。
可以,因为消费者在第一次访问注册中心时,会将地址缓存到本地,下次再用就是调取本地的地址。但是如果地址需要更新时注册中心挂了那就没办法了。
6、多版本
灰度发布
当发布一个新版本时,让一部分用户先使用新版本,使用没有问题再将全部用户迁移过去。
dubbo使用version属性来设置和调用同一接口不同版本。