什么是Dubbo:
阿里巴巴旗下开发的轻量级Java RPC框架,用于解决微服务架构下的服务治理与通信问题.
RPC框架:
架构的演变
在之前的maven工程中就是利用的垂直架构,将模块拆开
RPC更多的是解决调用的问题,或者说他只是解决联通的问题。
因此通过RPC来构建的服务网络在服务膨胀的时候就显得比较杂乱,因此需要其他的方式来控制和整理服务。
ESB企业服务总线顾名思义就是来管理,协调服务的一种技术,他的作用就是对服务进行聚合,按一定的规则进行路由,从而使服务能力有序的被使用。
这是springcloud的环境架构。
Dubbo架构
使用
该架构的注册中心推荐使用 Zookeeper
本技术在项目的使用位置
在之前maven分出的模块中利用本技术
服务提供者:
1.配置service模块的pom.xml文件,添加本技术相关依赖,并提供webapp目录配置tomcat
<!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!--ZooKeeper客户端实现 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${zookeeper.version}</version>
</dependency>
2.修该service层的@Service注解该为dubbo包下的注解引用。
3.修改applicationContext.xml配置文件,如果是ssm框架。
<!--dubbo的配置-->
<!--1.配置项目的名称,唯一-->
<dubbo:application name="dubbo-service"/>
<!--2.配置注册中心的地址-->
<dubbo:registry address="zookeeper://192.168.149.135:2181"/>
<!--3.配置dubbo包扫描-->
<dubbo:annotation package="com.itheima.service.impl" />
服务消费者:
1.@Autowired注解改成@Reference远程注入 service
该注解的作用
: 从Zookeeper注册中心获取service的访问url
: 进行远程调用rpc
: 将结果封装为一个代理对象,给变量赋值
2.修改applicationContext.xml配置文件,如果是ssm框架。
将接口层抽出来,避免重复代码。
图形化管理界面 DUBBO-ADMIN
管理注册中心的图形化界面
该管理平台是vue+spring boot构建,使用时需要安装环境,在开发环境上使用该图形化界面
- node.js
- maven
高级特性
- 序列化
:经过注册中心调用的方法返回的对象都需要实现序列化接口,注册中心自动实现序列化,反序列化 - 地址缓存
:在第一次调用由注册中心管理的模块后,会在本地生成缓存,即使注册中心停掉服务,也可以调用 - 超时
:无论是消费端还是服务端都可以设置超时时间,避免请求的线程堵塞,占用内存。 - 重试
:在超时后,可以设置重连接的次数 - 多版本
:当提供的模块变更更新时,比如业务层出现不同实现类时,需要在消费端设置服务端版本,在服务端设置本身版本
- 负载均衡
:这里牵涉到集群,本地配置多个服务端,就要改端口
protocol 和 qos.port都是在本机上占用的端口需要修改
对需要的资源进行负载均衡
- 集群容错
: 设置当消费端拿不到服务端服务时的反应
- 服务降级
: 当系统资源短缺,对一些无关紧要的服务可以敷衍一下,设置空返回。 -