SpringCloud介绍
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。
什么是微服务/集群
- 集群
特点:多个服务实例完成同一份工作,万一一台挂了,另一个还可以正常使用
实例:注册中心eureka就可以实现集群 - 微服务
特点:将业务拆分成不同的子业务(也可以说将整个服务拆分成子服务)放在一个或者不同的服务器下
实例:将控制层和业务成拆分成俩个服务,放在一个或者俩个不用的服务器上
SpringCloud可以解决微服务哪些问题
1.服务治理------------------Eureka
2.客户端负载均衡---------Ribbon
3.服务容错保护------------Hystrix
4.声明式服务调用---------Feign
5.API网关服务-------------Zuul
6.分布式配置中心---------Config
Eureka
Eureak分为服务提供者,服务消费者,服务注册中心
消费者和提供者必须注册到注册中心,服务者提供服务,消费者可以调用提供者的服务
服务提供者(客户端)
服务注册
启动的时候会通过发送rest请求将自己注册到eureka的服务端,同时带上自身服务的数据信息
服务续约
在注册完成后,提供者会维护一个心跳机制告诉eureka“我还活着”
服务下线
提供者服务关掉后 会告诉eureka我下线了
服务消费者(客户端)
获取服务
当启动消费者的时候,发送rest请求给注册中心,来获取注册中心的服务清单
服务调用
获取清单后,通过服务名可以获取服务的实例
服务注册中心(服务端eureka服务本身)
失效剔除
每隔一段时间消除没有续约的服务
自我保护
由于网络不稳定 Eureka会将当前服务实例保护起来
Eureka好处:微服务之间调用就不需要接口,通过服务名称去获取服务实例
注:1.一个服务实例既是消费者也是提供者
2.eureka的配置信息一般放在config
案例:1.zuul就是利用eureka来实现的,不必输入服务实例的ip地址,只需要服务名称就行了
2.springbootadmin也是利用eureka实现的
3.Feign和Ribbon也是eureka实现的
# 服务名称
spring.application.name=servername
## 注册服务中心的配置
eureka.client.service-url.defaultZone=http://localhost:8001/eureka/
//服务端
@EnableEurekaServer
//客户端
@EnableDiscoveryClient
注:因为eureka自带保护策略,服务下线后,eureka服务器中依然会保留该服务,所以需要用postman给已经下线的服务剔除出eureka服务器中
Config
可以把配置文件中的某些配置放在远程git仓库上,通过config去拉去这些配置信息
# 配置git仓库的地址
spring.cloud.config.server.git.uri: https:
# git仓库的账号
spring.cloud.config.server.git.username:
# git仓库的密码
spring.cloud.config.server.git.password:
#仓库下配置
spring.cloud.config.server.git.search-paths:
Zuul
前端请求不需要关注后台有服务实例,只需要与zuul去通信(1→n 变成 1→1)
注:一个服务器下可以有很多服务实例