1、dubbo是什么
Dubbo是阿里巴巴开源的一个高性能的分布式服务框架,使得应用可以通过高性能的RPC实现服务的输入和输出,并且是soa服务治理方案,和spring框架无缝衔接。
2、rpc是什么
Rpc(Remote Procedure CallProtocol),远程过程调用协议,基于这个协议我们可以通过网络从远程计算机调用服务,并且不需要了解网络底层技术,能够为dubbo实现远程调用接口做支持。
3、dubbo核心功能
主要是三个,远程通讯,集群容错,自动发现(基于注册中心,使用消费方可以直接找到服务方)。
4、dubbo架构
Container:服务运行容器
Provideer:服务提供方
Consumer:服务消费方
Registry:注册中心
Monitor:统计服务调用次数和时间的监控中心
调用过程说明:
0、服务容器负责加载、启动服务。
1、服务提供者启动时向注册中心注册自己提供的服务
2、服务消费者启动时向注册中心订阅自己需要的服务
3、注册中心将服务提供方的地址列表发送给消费方
4、消费方通过软负载均衡方法,从地址列表中选择一个服务提供方调用服务,调用失败在选择另一台(集群容错)
5、消费方和服务方将调用次数和时间存储到内存中,定时一分钟发送给监控中心
5、dubbo使用
首先在linux上面安装好zookeeper,网上有很多相关的教程可以查看。
然后编写两个maven工程,一个作为服务提供者,一个作为服务消费者。
父工程用于管理我们的jar包版本
对于两个工程的pom文件的编写不做介绍,核心程序如下:
1、接口工程中编写一个接口
2、服务提供工程中实现这个接口
3、编写服务提供工程的spring配置文件
<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="zdubbo-service" />
<!-- 注册中心的地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.156.80:2181" />
<!-- 用dubbo协议在20889端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20889" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="zdubbo.provider.service.DubboService" ref="dubboServiceImpl" timeout="300000"/>
主要是这个工作,首先配置包扫描器,用来扫描服务类,然后发布服务,发布服务需要有服务的名称,注册中心的地址,及在哪个端口暴露服务,最后声明需要提供的服务接口。
4、通过web.xml配置容器启动监听器加载spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
id="WebApp_ID"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>zdubbo-service</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 初始化spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
5、服务消费者pom文件添加对接口jar包的引用
<dependency>
<groupId>com.zdubbo</groupId>
<artifactId>zdubbo.interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
6、编写controller类对服务进行调用
7、编写spring配置文件完成视图解析,注解配置,引用服务的配置
核心是引用服务,需要有服务应用名称,注册中心地址,和需要引用的接口即可
8、编写配置文件通过前端控制器加载spring配置文件
9、测试
调用成功!
参考程序链接:https://download.csdn.net/download/liuyuanq123/10297901