前言
学习springcloud前我们要先了解什么是微服务,微服务就是将一个整个程序分成很多功能模块,每个模块都作为独立的程序来运行,但他们之间又能相互调用。像我们熟知的京东淘宝都是使用的这种微服务架构来面对海量用户的并发问题。
一、SpringCloud框架
1.springcloud是什么?
Spring Cloud就是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建
2.什么是分布式?
1. 将各个组件分开部署,某个组件占一个服务器,互相独立,互相调用,可以将组件的功能发挥到最大
2.一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)
3.什么是集群?
同一个业务,部署在多个服务器上(不同的服务器运行同样的代码,干同一件事)
4.springcloud主要组件
注册中心,服务的注册和发现机制
配置中心,集中管理服务的配置文件
API网关,实现路由和权限管理
服务通信,实现Restful的服务调用
负载均衡,平衡每个服务的负载量
熔断器,提高系统的可靠性
分布式事务,全局事务管理多个服务
二、注册中心
Eureka--微服务注册中心
Eureka是我们学习的第一个服务注册中心的组件,首先理解为什么要有注册中心?当微服务中的服务数量越来越多时,如果没有一个中心去管理这些微服务那么各个服务之间的调用则会变得杂乱无章,有一个服务配置中心来统一管理这些微服务的注册于调用。
Eureka实现原理
提供者将IP和端口注册到注册中心后每隔一段时间(默认60s)发送心跳包,如果注册中心一段时间后(默认90s)没有收到心跳包就会将服务剔除。消费者需要调用提供者时会在注册中心查找,注册中心会提供服务清单,消费者通过服务清单中的IP和端口来调用提供者。服务清单每隔一段时间(默认30s)更新一次。
三、搭建Eureka服务器
1.创建一个springbooot项目
2.创建子项目继承父项目
3.引入Eureka服务器的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>3.1.0</version>
</dependency>
4.在启动类上加 @EnableEurekaServer注解
5.编写配置文件
server.port=8888
spring.application.name=eureka-server
eureka.instance.hostname=127.0.0.1
# 是否注册到Eureka上,false 本身就是服务器
eureka.client.register-with-eureka=false
# 是否拉取服务清单,false
eureka.client.fetch-registry=false
# 服务的地址配置
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
四、配置Eureka客户端
1.依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.1.0</version>
</dependency>
2.启动类上加 @EnableEurekaClient
3.配置文件