分布式框架dubbo

1.分布式系统相关概念

1.1基本概念

分布式框架dubbo_第1张图片

分布式框架dubbo_第2张图片分布式框架dubbo_第3张图片分布式框架dubbo_第4张图片

1.2 集群和分布式

分布式框架dubbo_第5张图片
分布式框架dubbo_第6张图片分布式框架dubbo_第7张图片
分布式框架dubbo_第8张图片
分布式框架dubbo_第9张图片
分布式框架dubbo_第10张图片分布式框架dubbo_第11张图片
分布式框架dubbo_第12张图片

1.3 架构演进

分布式框架dubbo_第13张图片
分布式框架dubbo_第14张图片
分布式框架dubbo_第15张图片分布式框架dubbo_第16张图片分布式框架dubbo_第17张图片
A是一个微服务。A+DB是一个组件。A可以java,B可以python实现。
分布式框架dubbo_第18张图片
分布式框架dubbo_第19张图片

2 dubbo

2.1 概述

分布式框架dubbo_第20张图片
分布式框架dubbo_第21张图片

2.2 dubbo代码

2.2.1 服务提供者的改造-将项目service层对外发布到dubbo

通过dubbo中的service注解,将当前类的方法对外发布,但是需要配置ip,端口,路径到注册中心
分布式框架dubbo_第22张图片分布式框架dubbo_第23张图片
dubbo配置过后,service模块中springmvc中的配置文件就不需要了
分布式框架dubbo_第24张图片

2.2.2 服务消费者webController的改造

①原本web依赖的service,现在改造后不需要依赖,将对应的依赖插件删除。
分布式框架dubbo_第25张图片
②删除后,controller中接口会找不到。
分布式框架dubbo_第26张图片
③在web中创建一个service接口,把其变为本地接口
分布式框架dubbo_第27张图片
报错消失,但是还有红波浪线,是因为spring的ioc容器中没发现这个service。
④检查dubbo依赖
分布式框架dubbo_第28张图片
⑤web模块下spring配置文件加载不需要了,springmvc的留下
分布式框架dubbo_第29张图片
⑥spring的@autowired注入注解不需要加了,换成dubbo的@reference远程注入
分布式框架dubbo_第30张图片
⑦给reference注解配置访问的地址。
分布式框架dubbo_第31张图片
⑧启动service和web
在这里插入图片描述
由于不同的主机访问的接口必须同一个名称,因此把接口单独提出来
分布式框架dubbo_第32张图片
进行改造,在加一个interface接口模块。在web和service模块加入要依赖的公共模块接口配置
分布式框架dubbo_第33张图片
在公共的interface中定义接口,在service模块下实现具体的serviceimpl
分布式框架dubbo_第34张图片
分布式框架dubbo_第35张图片
分布式框架dubbo_第36张图片分布式框架dubbo_第37张图片
分布式框架dubbo_第38张图片

3 dubbo高级特性

3.1 dubbo-admin

分布式框架dubbo_第39张图片

3.2 序列化

分布式框架dubbo_第40张图片
新建一个模块,定义多个类,

dubbo-interface使用dubbo-pojo中的类
分布式框架dubbo_第41张图片分布式框架dubbo_第42张图片
服务提供者dubbo-service中实现dubbo-interface中的接口类
分布式框架dubbo_第43张图片
web层调用service的接口

项目结构:pojo被interface依赖,interface被service和web依赖,pojo被service和web间接依赖。
分布式框架dubbo_第44张图片
分布式框架dubbo_第45张图片

3.3 地址缓存

旧的地址可访问,新的不行。

分布式框架dubbo_第46张图片

3.4 超时与重试

分布式框架dubbo_第47张图片
解决方法
分布式框架dubbo_第48张图片
设置3s超时就释放
分布式框架dubbo_第49张图片
若在@Reference设置timeout=1000,则1s生效
分布式框架dubbo_第50张图片
建议配置在controller中-服务的提供者,而不是配置在服务的调用者reference上。

分布式框架dubbo_第51张图片
分布式框架dubbo_第52张图片

3.5 多版本

分布式框架dubbo_第53张图片分布式框架dubbo_第54张图片分布式框架dubbo_第55张图片
分布式框架dubbo_第56张图片
分布式框架dubbo_第57张图片
分布式框架dubbo_第58张图片

3.6 dubbo负载均衡

分布式框架dubbo_第59张图片分布式框架dubbo_第60张图片

把上个接口启动后,然后修改权重再次启动需要修改tomcat和dubbo端口号。分布式框架dubbo_第61张图片
分布式框架dubbo_第62张图片
出现两个服务,权重不同
分布式框架dubbo_第63张图片
服务调用者加载负载均衡策略分布式框架dubbo_第64张图片
带权重的轮训,如访问四次顺序为:1-2-3-2
分布式框架dubbo_第65张图片
分布式框架dubbo_第66张图片

3.7 集群容错

1号:第一个机器服务启动,超时1s关闭
分布式框架dubbo_第67张图片
2号:修改tomcat和dubbo端口号再次启动
分布式框架dubbo_第68张图片
3号:修改端口号,service改为不再超时,即可以成功访问的
分布式框架dubbo_第69张图片
启动的三个服务
分布式框架dubbo_第70张图片
在服务调用者接口设置失败重试,默认重试两次
分布式框架dubbo_第71张图片
启动web
分布式框架dubbo_第72张图片
虽然控制台会超时报错,但是会访问成功
分布式框架dubbo_第73张图片
其中1号和2号报错,3号成功
分布式框架dubbo_第74张图片
再次刷新1.2.3都成功。
其他容错方式。
分布式框架dubbo_第75张图片

3.8 服务降级

分布式框架dubbo_第76张图片

分布式框架dubbo_第77张图片

你可能感兴趣的:(java,分布式,dubbo)