[TOC]
模拟分布式,远程调用rpc
结构图:
-
dubbo后台管理地址:localhost:7001
-
把消费者和生产者注册到注册中心需要先开启zookeeper
-
dubbo-admin管理页面:localhost:8080
(需要看配置里面的zookeeper地址是否正确)
放公共的接口和service(业务)
订单业务的消费具体实现。(消费者类型)
相当于一个远程,
-
pom中需要引入gmall的依赖(根据创建的具体maven工程引入)
<dependency> <groupId>com.codewater</groupId> <artifactId>gmall-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
用户下订单的具体实现(提供者类型)
相当于一个远程
-
pom中需要引入gmall的依赖(根据创建的具体maven工程引入)
<dependency> <groupId>com.codewater</groupId> <artifactId>gmall-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
生产方,复制上面maven工程中的对应实体类
- 加入对应的实体类依赖
<dependency>
<groupId>com.codewater</groupId>
<artifactId>gmall-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>消费方,复制上面maven工程中的对应实体类。这个是一个web工程
-
加入对应的实体类依赖
-
改properties的配置
-
写controller的方法
@Reference:消费服务,远程引用 -
启动,浏览器:localhost:8081/initOrder?uid=1会出现对应的用户地址信息
-
本地存根,符合条件,消费方就继续调用,不符合,就不远程调用。需要配置文件和实现类。
一般放在远程接口项目里面,本例就是gmall项目中
-
对于boot项目,如果想要更加精确的配置,还是需要原生的xml配置,properties配置就不用
-
引入服务容错
Hystrix依赖的时候,处理这个<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>1.4.4.RELEASE</version> </dependency>
还需要在
project标签下引入这个插件<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
没启动成功。可能是因为cloud没有配什么东西把。也没有学过。。。搜到的相关的cloud的依赖问题,但是尚硅谷的也只是一个boot项目。。。。



