目录
第三章 SpringCloud-HelloWorld案例开发-注册中心
第四章 SpringCloud-HelloWorld案例开发-电影服务
4.1.1 引入eureka-Discovery、web模块
.1.2 创建Movie实体类,增加id,movieName属性
第五章 SpringCloud-HelloWorld案例开发-用户服务
5.1.1 引入eureka-Discovery、web模块
5.1.2 创建User实体类,增加id,userName属性
第六章 SpringCloud-HelloWorld案例开发-Ribbon-通过RestTemplate进行远程调用
6.1 Ribbon负载均衡,可以用于远程调用(用户服务 调用 电影服务 项目)
6.1.5 在电影服务(MovieService 类)中打印服务端口,方便监控服务执行情况。
第七章 SpringCloud-HelloWorld案例开发-Feign-声明式调用
7.2 创建新User项目cloud-consumer-user-feign,引入eureka-Discovery、web、Feign模块
7.2.1开启@EnableDiscoveryClient服务发现
7.2.3 复制用户服务项目的代码:实体类,Dao,Service,Controller
7.2.4 将RestTemplate方式改成Feign方式进行远程调用
第八章 SpringCloud-HelloWorld案例开发-Ribbon+Hystrix组合
8.2 使用Ribbon+Hystrix组合(Rest调用方式):cloud-consumer-user
8.2.2 开启断路保护功能@EnableCircuitBreaker
8.2.3 在方法上标注@HystrixCommand(fallbackMethod="xxx")来指定出错时调用xx方法
8.2.5 测试正常调用&停止user服务,测试异常调用&启动user服务过一段时间测试是否正常
8.3 使用Feign+Hystrix组合:cloud-consumer-user-feign
8.3.2 开启断路保护功能@EnableCircuitBreaker
8.3.4 Feign已经集成了Hystrix,使用起来非常简单@FeignClient(name="provider-user",fallback="异常处理类")
8.3.6 测试正常调用&停止user服务,测试异常调用&启动user服务过一段时间测试是否正常
第九章 SpringCloud-HelloWorld案例开发-Hystrix Dashboard
9.1 引入actuator(cloud-consumer-user-feign)
9.1.1 actuator是用来监控SpringBoot服务的,注意路径问题,具体的版本可能不一样,参考启动日志
第一章 SpringCloud介绍
1.1 概念
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
“微服务架构”在这几年非常的火热,以至于关于微服务架构相关的开源产品被反复的提及(比如:netflix、dubbo),Spring Cloud也因Spring社区的强大知名度和影响力也被广大架构师与开发者备受关注。
那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。
1.2 为什么使用Spring Cloud?
Spring Cloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在目前五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。
1.3 应用Spring Cloud
Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
1.4 Spring Cloud是分布式系统的整体解决方案
- SpringBoot&Spring什么关系?
SpringBoot底层就是Spring,简化使用Spring的方式而已,多加了好多的自动配置;
2.Spring Cloud&SpringBoot什么关系?
Spring Cloud是分布式系统的整体解决方案,底层用的SpringBoot来构建项目,Cloud新增很多的分布式的starter,包括这些starter的自动配置;
1.5 官方网站
https://projects.spring.io/spring-cloud/#quick-start
SpringCloud中文网:https://springcloud.cc/
第二章 SpringCloud-HelloWorld架构图
我们以一个小型的分布式架构的demo来学习快速入门SpringCloud,很详细,听我娓娓道来~
2.1 案例图解
2.2 注册中心
要将我们所有的服务都注册到服务中心上统一管理
配置Region和Zone
第三章 SpringCloud-HelloWorld案例开发-注册中心
3.1 注册中心
新建一个Springboot项目,名为cloud-eureka-registry-center
3.1.1 引入eureka-server
导入Eureka-Server的启动器
3.1.2 编写application.yml
spring: application: name: cloud-eureka-registry-center //应用的名字
server: port: 8761
eureka: instance: hostname: localhost client: register-with-eureka: false #自己就是注册中心,不用将本服务注册到注册中心上 fetch-registry: false #要不要去注册中心获取其他服务的地址,因为看架构图我们可知是用户服务去调电影服务,所以注册重心没必要获取其他服务器的地址 service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ |
3.1.3 开启Eureka注册中心功能;
在Springboot启动类上标注@EnableEurekaServer
3.1.4 测试
Boot Dashboard视图启动
访问http://localhost:8761
注册中心注册成功!
Eureka入门配置成功!
第四章 SpringCloud-HelloWorld案例开发-电影服务
4.1 电影服务
创建一个Springboot项目,名为cloud-provider-movie
4.1.1 引入eureka-Discovery、web模块
这里引入的eureka的client,因为我们要进行服务注册。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> |
.1.2 创建Movie实体类,增加id,movieName属性
4.1.3 创建MovieDao
@Repository public class MovieDao { public Movie getMovieById(Integer id){ Movie movie = new Movie(); movie.setId(id); movie.setName("流浪地球-"+id); return movie; } } |
4.1.4 创建MovieService
@Service public class MovieService { @Autowired MovieDao movieDao; public Movie getMovieById(Integer id){ return movieDao.getMovieById(id); } } |
4.1.5 创建MovieController
@RestController public class MovieController { @Autowired MovieService movieService; @RequestMapping("/movie/{id}") public Movie getMovieById(@PathVariable("id") Integer id){ return movieService.getMovieById(id); } } |
4.1.6 启动测试
http://localhost:8080/movie/1,与注册中心无关,注册中心无此服务
4.1.7 编写application.yml
spring: application: name: cloud-provider-movie
server: port: 8000
# 指定注册到哪个注册中心 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true #注册自己服务使用ip的方式 |
4.1.8 将自己自动注册到注册中心
在该服务的启动类上标注@EnableDiscoveryClient,启用
4.1.9 启动注册中心和服务
查看注册中心,访问服务 http://localhost:8761
服务注册成功。
第五章 SpringCloud-HelloWorld案例开发-用户服务
5.1 用户服务
创建springboot项目,