一、大型项目互联网架构目标
二、集群和分布式
三、架构演进
因为上面的单体架构存在上面的一些问题,因此我们引入新的架构-----垂直架构
四、 Dubbo概述
官网:Apache Dubbo
Dubbo架构
五、Dubbo入门
zookeeper是官方提供的一个注册中心的一个软件
1. Spring和mvc的整合
2. 服务者提供
首先我们要知道上面我们整合的spring和mvc并不属于分布式架构,因为这里web和service之间是相互以来的,也就是说这里的service其实是依赖于web的,所以不算分布式!
那么这里就需要改造为SOA架构的。
如何实现?
1. 首先我们实现服务提供者service
①导入对应的依赖
②修改<packaging>类型
③在类中进行一些配置的添加
④我们需要在spring的配置文件中进行一些配置
2. 然后我们实现服务消费者
首先我们要知道我们的消费者是不依赖于服务的提供者的,所以我们要将原来的spring和mvc的整合里面的依赖去除
①对web.xml进行修改
②在我们的类里面进行一些修改
③修改我们的配置类
运行之后会出现一个小的错误
这里出现这个错误是因为这两个服务提供者和消费者部署在一台电脑上
按照正常来说应该是部署在两台机器上,就不会出现这个错误!
那么就这里而言应该怎么解决这个问题?我们可以修改端口号,就不会产生冲突了
然后我们会发现还有一个问题,就是在spring和mvc整合的时候,我们有在web里面注入service,然后从容器中获取并导入,但是在dubbo中就不可以这么做了,我们此时采用的方法是在提供者和消费者两端写上一样的包【包含方法】,这样就不会出错,但是我们可以很清晰的知道这个的弊端在哪里?如果我们需要的很多的时候怎么办?一个个创建效率的低下可想而知!
我们的解决办法就是创建一个公共模块,两方同时依赖于它
六、Dubbo高级特性
1. dubbo-admin管理平台
1.1 下载与安装
官方并没有给出很厉害的monitor的工具
dubbo-admin里面集成了monitor的功能
下载并安装dubbo-admin
dubbo-admin的下载与安装_繁华哟的博客-CSDN博客_dubbo下载安装
下载完成后我们需要修改参数
修改配置文件【properties】中的一些参数
然后我们就需要创建mvn项目了
然后启动
然后启动前端
最后就可以通过浏览器进行访问【ui界面的端口】
随后你的dubbo-admin就安装成功了!!
1.2 admin的使用
2. Dubbo常用高级配置
2.1 序列化
使用序列化就可以实现两个机器之间传输java对象
2.2 地址缓存
2.3 超时和重试
超时时间在服务提供者和消费者上都可以使用,超时时间应该配置在服务提供者上面【服务消费者的timeout会覆盖服务提供者】
2.4 多版本
2.5 负载均衡
四种随机策略
1. 随机策略
我们在开启三台服务之后,怎么使用随机策略?
我们在消费者上实现如下:
2. 按照权重轮询
3. 最小的活跃调用次数【每次都找活跃度最小的】
4. 一致性hash
2.6 集群容错
2.7 服务降级