Dubbo架构

消费者:调用提供商,但不能直接调用,需要注册中心的帮助
节点角色说明:
●Provider:暴露服务的服务提供者 ●Container: 服务操作容器 ●Consumer: 服务消费者调用远程服务 ●Registry:注册中心的服务注册和发现 ●Monitor:监控中心统计服务的调用次数和调用时间
0start:服务提供商应在容器中运行,例如tomcat里面,需要将tomcat启动起来。
1注册:启动后,服务将注册到注册中心(调用服务)ip、发布端口和服务url放入注册中心。
2.subscribe:我想调用提供商提供的服务。这时,我去了注册中心(告诉服务中心向消费者提供服务的相关信息)
3.notify:消费者需要一次服务,注册中心需要一次。
此时,消费者获得服务信息
4.invoke:就是rpc调用过程。我们不需要管,dubbo内部自动实现。
5.Monitor:服务监控。统计服务调用了多少次。
asyn:异步。sync:同步。只有rpc调用时同步,其他都是异步。
Zookeeper安装
先安装java1.8
减压,进入配置文件夹,复制配置文件,修改内部配置,使其生效。复制会话窗口,创建目录,并将目录复制并修改到配置文件中。zk
zk默认端口为2181
Mode:standalone(目前没有建集群,单节点运行)
Dubbo快速入门
注意这里的controller调用service是远程调用,两个工程分别部署在两台机器上。
jar包依赖
<!--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>
<!--ZooKeeper客户端实现 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${
zookeeper.version}</version>
</dependency>
开始配置dubbo
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--spring包扫描-->
<!--<context:component-scan base-package="com.itheima.service"/>-->
<!--dubbo的配置-->
<!--1、配置项目的名称,唯一-->
<dubbo:application name="dubbo-service"/>
<!--2、配置注册中心的地址-->
<dubbo:registry address="zookeeper://101.42.248.44:2181"/>
<!--3、配置dubbo包扫描-->
<dubbo:annotation package="com.itheima.service.impl"/>
</beans>
添加spring的配置,让其扫描加载刚在配置dubbo的配置文件applicationContext.xml
配置zk
上面的扫描时扫面springmvc的注解
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--打开注解驱动-->
<mvc:annotation-driven/>
<!--扫描包-->
<context:component-scan base-package="com.itheima.controller"/>
<!--dubbo的配置-->
<!--1、配置项目的名称,唯一-->
<dubbo:application name="dubbo-web">
<dubbo:parameter key="qos.port" value="33333"/>
</dubbo:application>
<!--2、配置注册中心的地址-->
<dubbo:registry address="zookeeper://101.42.248.44:2181"/>
<!--3、配置dubbo包扫描-->
<dubbo:annotation package="com.itheima.controller"/>
</beans>
创建一个公共接口模块,减少重复代码开发,易于接口调用