目录
- 一、上一章Springboot新手开发 基本总结
- 二、springcloud版本介绍
- 三、注册中心 nacos
- 四、服务调用 openfeign
- 五、熔断器Netflix Hystrix
- 六、整合geteway网关
- 七、nacos配置中心
- springboot配置文件的加载顺序
一、上一章Springboot新手开发 基本总结
Springboot新手开发 基本总结==》点此跳转
二、springcloud版本介绍
cloud和boot的版本对应关系
Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。 总体如下
- 服务发现(注册中心)——Netflix Eureka (nacos)
- 服务调用——Netflix feign
- 熔断器——Netflix Hystrix、 (Sentinel )
- 服务网关——Netflix Zuul、spring cloud gateway
- 分布式配置中心——Spring Cloud Config (nacos)
- 客服端负载均衡——Netflix Ribbon
- 消息总线——Spring Cloud bus(nacos)
三、注册中心 nacos
安装过程
- 下载nacos 然后解压 官网nacos官网
- 启动nacos 并访问
http://192.168.65.1:8848/nacos/index.html#/login
注意IP地址用戶名和密碼都是nacos
实现不同的微服务模块之间调用,把这些模块在注册中心进行注册注册之后,实现互相调用
注册服务
- 1.引入依赖
<!--服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 2.在服务的配置文件中配置
配置nacos地址
#nacos服务地址
spring.cloud.nacos.discovery.server-addr=192.168.65.1:8848
- 3.在服务的启动类上添加注解
@EnableDiscoveryClient
四、服务调用 openfeign
前提条件
把互相调用的服务需要在注册中心注册
步骤
- 一、引入依赖
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 二、调用端的启动类添加注解
@EnableFeignClients
- 三、
在调用端
创建包和接口 - 四、测试
五、熔断器Netflix Hystrix
Hystrix 供分布式系统使用,提供延迟和容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。
- 一、添加依赖
<!--ribbon 负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!--hystrix依赖,主要是用 @HystrixCommand -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
- 二、在
调用端
配置文件中添加配置
#开启熔断机制
feign.hystrix.enabled=true
#设置超时时间 默认10秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
- 三、在创建interface后还要创建实现类(出错了需要实现的类容)
- 四、在interface上添加注解和属性
六、整合geteway网关
- 客户端和服务端之间的一面墙,可以起到很多作用:请求转发、负载均衡、权限控制、跨域(如果使用getway来跨域,就得删除模块那个跨域注解)等
映入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--gson-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
</dependencies>
写配置文件
server:
port: 8222
spring:
application:
name: service-gateway
cloud:
# 网关
gateway:
discovery:
locator:
enabled: true #服务发现 默认是false
routes: #路由匹配规则
- id: service-acl #路由id 建议写服务名称
predicates: Path=/*/acl/** #断言 固定写法 Path=匹配规则 /**表示有多个值
uri: lb://service-acl #固定写法 lb://在nacos中注册的名字
- id: service-edu
predicates: Path=/eduservice/**
uri: lb://service-edu
- id: service-msm
uri: lb://service-msm
predicates: Path=/edumsm/**
# 服务注册
nacos:
discovery:
server-addr: ************:8848
七、nacos配置中心测试
用网关的端口号访问服务
当配置信息发生变动时,修改实时生效
,无需要重新重启服务器,就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。比方说某个功能只是针对某个地区用户,还有某个功能只在大促的时段开放,使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整相关对应的业务
springboot配置文件的加载顺序
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
新建配置文件bootstrap.properties或者bootstrap.yml
#配置中心地址
spring.cloud.nacos.config.server-addr=这里写nacos的IP地址:端口号
#spring.profiles.active=dev
# 该配置影响统一配置中心中的dataId
spring.application.name=配置的名称Data Id
在nacos加上配置文件