一、SpringCloud基本知识
- SpringCloud基于HTTP协议,和Dubbo最本质的区别(dubbo的核心是基于RPC)
- 注册中心:Eureka
- 客户端负载均衡:Ribbon
- 声明式远程方法调用:Feign
- 服务降级,熔断:Hystrix
- 网关:Zuul
1. SpringBoot和SpringCloud关系
- SpringBoot是基础
-
2. SpringCloud和Dubbo对比
核心:
- Dubbo 底层基于RPC
- SpringCloud底层基于RestFul,也可以说是基于Http。
- 其他区别:
- SpringCloud相对于Dubbo功能更加全面
- SpringCloud是一个一站式的解决方案
- SpringCloud能够天然的基于Spring全家桶开发
二、SpringCloud 目标基础测试环境
1. 创建父工程
- pro01_spring_cloud_parent
- 父工程很重要,里面定义了boot 和 cloud的版本信息
- 配置依赖管理:
<dependencyManagement>
<dependencies>
<!-- 导入 SpringCloud 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<!-- import 依赖范围表示将 spring-cloud-dependencies 包中的依赖信息导入 -->
<scope>import</scope>
</dependency>
<!-- 导入 SpringBoot 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. 创建通用工程
【此工程存放通用的组件,直接maven快速构建即可】
pro02_spring_cloud_common 【添加 parent为01工程】<parent>
<groupId>com.yixuexi</groupId>
<artifactId>pro01_spring_cloud_parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>pro02_spring_cloud_common</artifactId>
3. 创建提供者工程 provider
[创建普通工程继承父工程,添加spring boot ]
pro03_spring_cloud_provider<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>pro02_spring_cloud_common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1) 修改配置文件
application.yaml
2) 创建controllerserver:
port: 1000
@RestController
public class ProviderController {
@RequestMapping("/provider/get/employee")
public Employee getEmployee(){
Employee e = new Employee();
e.setEmpId(1);
e.setEmpName("zhangsan");
e.setSex("男");
return e;
}
}
4. 创建消费者工程
1) [创建普通工程继承父工程,添加spring boot]
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>pro02_spring_cloud_common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2) 创建配置类 提供RestTemplate 组件
```java /**- @date: 2021/2/25 23:39
- @author: 易学习
*/
@Configuration
public class CloudConfig {
@Bean
public RestTemplate restTemplate(){
} }return new RestTemplate();
<a name="pkeLV"></a>
### 3) 创建controller类
使用restTemplate 组件调用provider工程的controller
```java
/**
* @date: 2021/2/25 23:40
* @author: 易学习
*/
@RestController
public class MyController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/consumer/get/emp")
public Employee employee(){
// 1.远程调用方法的主机
String host = "http://localhost:1000";
// 2.远程调用方法的具体URL地址
String url = "/provider/get/employee";
Employee forObject = restTemplate.getForObject(host + url, Employee.class);
return forObject;
}
}
4) application.yaml
server:
port: 2000