一、spring cloud介绍
spring cloud 是一系列框架的集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。spring cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 spring boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
spring cloud 对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用 spring cloud 一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和 docker 容器概念的火爆,也会让 spring cloud 在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在目前五花八门的分布式解决方案中提供了标准化的、一站式的技术方案,意义可能会堪比当年 servlet 规范的诞生,有效推进服务端软件系统技术水平的进步。
1、Spring cloud是一个工具集,集成了多种工具,来解决服务中的各种问题。
微服务的整体解决方案,微服务全家桶
服务发现、远程调用、负载均衡、系统容错—降级熔断、API网关、配置中心、系统监控。。。
2、不是一个解决单一问题的框架
二、spring cloud技术组成
1、eureka
微服务治理,服务注册和发现
2、ribbon
负载均衡、请求重试
3、hystrix
断路器,服务降级、熔断
4、feign
ribbon + hystrix 集成,并提供声明式客户端
5、hystrix dashboard 和 turbine
hystrix 数据监控
6、zuul
API 网关,提供微服务的统一入口,并提供统一的权限验证
7、config
配置中心
8、bus
消息总线, 配置刷新
9、sleuth+zipkin
链路跟踪
三、Spring Cloud对比Dubbo
1、Dubbo
Dubbo只是一个远程调用(RPC)框架
默认基于长连接,支持多种序列化格式
dubbo是远程调用工具—RPC调用,java序列化—效率高
2、Spring Cloud --大多是企业的选择
框架集
提供了一整套微服务解决方案(全家桶)
基于http调用, Rest API
Spring cloud集成工具,集成多种工具解决微服务中的所有问题----Http,RestAPI调用,http请求
四、开发环境
IDEA/STS、Lombok、Maven—依赖有问题,可通过阿里/中央仓库来回切换,尝试更新
Spring MVC接收参数的几个注解:
五、eureka注册中心
1、作用:服务注册和发现
服务注册:
(1)提供者:provider----向注册中心注册自己的地址
(2)消费者:consumer----从注册中心发现其他服务
2、运行机制:注册、拉取、心跳、自我保护模式
(1)注册:一次次反复链接,知道注册成功为止
(2)拉取:每个30秒拉取一次注册表,来更新注册信息
(3)心跳:每30秒发送一次心跳(提供者发送),3次收不到则删除父
(4)自我保护模式:特殊情况:由于网络不稳定,15分钟内,85%服务器出现心跳异常----丢失一次,保护所有注册信息不被删除,3次丢失也不删除,网络恢复后,自动退出保护模式,在开发测试期间,可关闭保护模式。
3、搭建eureka服务
zk—线程的应用
eureka—需要手动添加依赖:eureka server
3.1、添加eureka server依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3.2、配置YML文件
1、关闭保护模式
2、配置主机名(集群中区分服务器)
3、单台服务器:不向自己注册,也不向自己拉取
eureka:
# 1、关闭保护模式
server:
enable-self-preservation: false
# 2、主机名、配置集群时用来区分主机名
instance:
hostname: eureka1
# 3、单台配置,不向自己注册,也不从自己拉取
client:
register-with-eureka: false
fetch-registry: false
eureka 集群服务器之间,通过 hostname
来区分
eureka.server.enable-self-preservation
eureka 的自我保护状态:心跳失败的比例,在15分钟内是否超过85%,如果出现了超过的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务
eureka.client.register-with-eureka=false
不向自身注册
eureka.client.fetch-registry=false
不从自身拉取注册信息
eureka.instance.lease-expiration-duration-in-seconds
最后一次心跳后,间隔多久认定微服务不可用,默认90
3.3、启动类,主程序:添加 @EnableEurekaServer
package cn.tedu.sp05;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@S