SpringCloud快速入门---Netflix项目的(Eureka、ribbon、Feign、Hystrim)的快速使用案例

目录

第一章 SpringCloud介绍

1.1 概念

1.2 为什么使用Spring Cloud?

1.3 应用Spring Cloud

1.4 Spring Cloud是分布式系统的整体解决方案

1.5 官方网站

第二章 SpringCloud-HelloWorld架构图

2.1 案例图解

2.2 注册中心

第三章 SpringCloud-HelloWorld案例开发-注册中心

3.1 注册中心

3.1.1 引入eureka-server

3.1.2 编写application.yml

 

 3.1.3 开启Eureka注册中心功能;

3.1.4 测试

第四章 SpringCloud-HelloWorld案例开发-电影服务

4.1 电影服务

4.1.1 引入eureka-Discovery、web模块

.1.2 创建Movie实体类,增加id,movieName属性

4.1.3 创建MovieDao

4.1.4 创建MovieService

4.1.5 创建MovieController

4.1.6 启动测试

4.1.7 编写application.yml

4.1.8 将自己自动注册到注册中心

4.1.9 启动注册中心和服务

第五章 SpringCloud-HelloWorld案例开发-用户服务

5.1 用户服务

5.1.1 引入eureka-Discovery、web模块

5.1.2 创建User实体类,增加id,userName属性

5.1.3 创建UserDao

5.1.4 创建UserService

5.1.5 创建UserController

5.1.6 编写application.yml

5.1.7 将自己自动注册到注册中心

5.1.8 启动注册中心和服务,查看注册中心,访问服务

第六章 SpringCloud-HelloWorld案例开发-Ribbon-通过RestTemplate进行远程调用

6.1 Ribbon负载均衡,可以用于远程调用(用户服务 调用  电影服务 项目)

6.1.1 用户服务项目中引入Ribbon

6.1.2 RestTemplate

6.1.3 使用RestTemplate远程调用

6.1.4 启动注册中心和服务,访问服务

6.1.5 在电影服务(MovieService 类)中打印服务端口,方便监控服务执行情况。

6.1.6 将电影服务项目启动多次,测试负载均衡

第七章 SpringCloud-HelloWorld案例开发-Feign-声明式调用

7.1  Feign声明式调用

7.2  创建新User项目cloud-consumer-user-feign,引入eureka-Discovery、web、Feign模块

7.2.1开启@EnableDiscoveryClient服务发现

7.2.2 编写application.yml

7.2.3 复制用户服务项目的代码:实体类,Dao,Service,Controller

7.2.4 将RestTemplate方式改成Feign方式进行远程调用

7.2.5 修改UserController代码

7.2.6 开启Feign功能

7.2.7 测试调用与负载均衡效果

第八章 SpringCloud-HelloWorld案例开发-Ribbon+Hystrix组合

8.1 Hystrix服务熔断

8.2 使用Ribbon+Hystrix组合(Rest调用方式):cloud-consumer-user

8.2.1 引入Hystrix

8.2.2 开启断路保护功能@EnableCircuitBreaker

8.2.3 在方法上标注@HystrixCommand(fallbackMethod="xxx")来指定出错时调用xx方法

8.2.5 测试正常调用&停止user服务,测试异常调用&启动user服务过一段时间测试是否正常

8.2.6 熔断器原理

8.3 使用Feign+Hystrix组合:cloud-consumer-user-feign

8.3.1 引入Hystrix

8.3.2 开启断路保护功能@EnableCircuitBreaker

8.3.3 开启Feign对Hystrix支持

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服务的,注意路径问题,具体的版本可能不一样,参考启动日志

9.1.2 可提供的监控服务为

9.2 修改配置文件,暴露数据监控流

9.3 引入HystrixDashboard

9.4 开启可视化监控功能

9.4.1 @EnableHystrixDashboard

9.4.2 访问当前项目/hystrix,将Hystrix的stream地址输入(http://localhost:7000/actuator/hystrix.stream ),点击monitor按钮即可监控

9.4.3 监控中,服务器正常

9.4.4 监控中,服务器重新启动,断路器打开


第一章 SpringCloud介绍

1.1 概念

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册配置中心消息总线负载均衡断路器数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

“微服务架构”在这几年非常的火热,以至于关于微服务架构相关的开源产品被反复的提及(比如:netflixdubbo),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是分布式系统整体解决方案

  1. SpringBoot&Spring什么关系?

SpringBoot底层就是Spring,简化使用Spring的方式而已,多加了好多的自动配置;

    2.Spring Cloud&SpringBoot什么关系?

Spring Cloud是分布式系统的整体解决方案,底层用的SpringBoot来构建项目,Cloud新增很多的分布式的starter,包括这些starter的自动配置;

1.5 官方网站

http://spring.io/projects

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项目,

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值