1. springCloud框架
是springboot的升级框架,其中包含很多子项目
eureka注册中心, feign消费者,Hystrix熔断器,Zuul路由,
Config全局配置中心,Bus消息总线,负载均衡策略
底层基于httpClient实现,发布一个controller类
spring家族:
spring Framework5.0 --》 springboot2.0 --》springcloud Finchley.SR2
springboot(微服务)相对于spring 约定优于配置
2.
创建springboot项目勾选cloud discovery --》Eureka Server
配置Eureka注册服务 Eureka Server
server:
port: 8761 #设置端口号
#配置eureka
eureka:
instance:
hostname: localhost #配置实例地址
client:
register-with-eureka: false
fetch-registry: false #阻止eureka自身项目注册到注册中心
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
server:
enable-self-preservation: false # 关闭自我保护机制 , 默认为true开启
2.1在启动类上加@EnableEurekaServer //启用eureka服务端
3.配置生产者 Eureka注册发现 Eureka Discover
server:
port: 8764 #可以配置多个每个服务不同的端口号
#配置实例名称
spring:
application:
name: springcloud-login #配置多个实例名称,springCloud集群
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka #要和eureka注册服务的路径保持一致
3.1在启动类上加@EnableEurekaClient //启用eureka客户端
4.idea启动多个实例
Edit Configurations--> single instance only 只能启动单个实力 将勾去掉
Edit Configurations--> Allow running in parallel 允许并行启动 将勾选上
5.配置消费者Ribbon
spring
创建项目选择 Web Eureka Discover Ribbon
配置文件
server:
port: 8080
spring:
application:
name: springcluodribbon
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
5.1 在启动类上加@EnableEurekaClient 注解
5.2 在启动类中将RestRestTemplate注入spring中
// 将RestTemplate注入到spring容器中
// LoadBalanced负载均衡默认为轮询
// 通过注入在controller中就可以使用调用生产者实例
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
5.3 在controller中注入RestTemplate
@Autowired
private RestTemplate restTemplate;
5.4 消费者调用生产者
restTemplate.getForObject("http://生产者实例名/请求生产者的Controller方法", 返回值类型.class);
5.5 @RequestBody可以将请求体中的JSON字符串绑定到相应的bean上
6. 配置Feign客户端
6.1 在配置文件中
server:
port: 8080
spring:
application:
name: springcloud-feign
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
6.2 在启动类上加注解
@EnableEurekaClient
@EnableFeignClients
如果启动类不在根目录则需要扫面包(basePackages = "com.jk.*")
6.3 创建service接口,并加上注解
@FeignClient("生产者实例名") //指定生产者实例名
6.4 在接口里面创建方法
// 定义抽象方法,抽象方法没有方法体
// 方法的定义和生产者controller中的方法保持一致
// 包括请求的方式,传入的参数,方法定义和返回参数
@GetMapping("/selectUser/{id}")
public User selectUser(@PathVariable("id") Integer userId);
7. 配置Hystrix熔断器
7.1 创建熔断器类实现FeignClient接口
7.2 添加注解@Compent 将熔断器类注入spring容器中
7.3 注意添加@RequestMapping("/error")保持唯一
7.4 开启熔断器机制
feign:
hystrix:
enabled: true
8. 配置SpringCloud Config 全局配置中心
8.1 在git上创建配置文件远程仓库
8.2 在将仓库目录克隆到本地,在目录中创建三个配置(环境名:dev开发(development environment)、test测试(testing environment)、pro正式(production environment))
配置文件名称定义:实例名称-环境名称.yml
配置信息如下:
# testing environment
server:
port: 8092
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
8.3 创建config server项目选择Config Server 和 Eureka Discover
8.4 在配置中配置信息如下:
server:
port: 8081
spring:
application:
name: springcloud-config
cloud:
config:
server:
git:
# 配置git仓库路径,注意路径为HTTP
uri: https://github.com/liuc12580/springcloud-config.git
# 配置文件路径
search-paths: /
# git账号 当创建的仓库为private则需要账号密码
username:
# git密码
password:
# 分支
label: master
# 往eureka注册中心中注册config server实例
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
8.5 在启动上添加注解
@EnableEurekaClient
@EnableConfigServer
8.6 配置server client项目,以生产者项目为例
将配置文件的名称改为bootstrap.yml
8.7 配置bootstrap.yml文件
spring:
application:
name: springcloudprovider-login
cloud:
config:
# 分支
label: master
# 环境
profile: test
# config server 服务发现
discovery:
# 开启服务发现
enabled: true
# 配置config server 服务实例
service-id: springcloud-config
8.8 任务:
搭建springCloud框架(eureka注册中心、eureka注册发现生产者、feign+hystrix消费者、config全局配置中心)
配置全局配置中心自己为开发环境,组员1为测试环境,组员2为正式环境
整合redis、mongodb、rabbitmq
做一套增删改查