一、注册发现
服务发现治理----->把微服务向注册服务器注册----->微服务之间的访问通过注册服务器发现
(这里采取的是阿里的nacos)
1、创建nacos数据库,并创建表初始化数据。
2、在application.properties 进行配置
server.port=8848 #配置端口号 8848 是世界最高峰的高度
db.url.0=jdbc:mysql://数据库IP地址:3306/J185_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=用户名
db.password.0=密码
3、把nacos-mysql.sql 配置文件导入到新建的数据库
4、进入bin文件夹,执行【单机启动.bat】
5、访问nacos地址,默认账号为nacos 密码为nacos
二、负载均衡
在项目中引入服务发现的坐标
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
在配置文件中配置nacos地址,给应用程序取一个名字
spring:
application:
name: 项目名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
实现
@Service
//此为客户端处代码,name为要代理实现服务端的名字
@FeignClient(name = "nginxThree")
public interface INginxOneService {
@GetMapping("three")
public String three();
}
三、熔断
熔断------>服务降级处理----->避免服务雪崩
在项目中引入服务发现的坐标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
手动调用熔断
@EnableHystrix
@HystrixCommand(fallbackMethod = "twoInfoHystrix")
public String twoInfo(int tag){
return service.twoInfo(tag);
}
public String twoInfoHystrix(int tag){
return "系统暂时无法访问";
}
feign自动调用熔断
@FeignClient(name = "sysTwo",fallback = TwoHystrixService.class)
//要开启feign熔断机制
feign:
circuitbreaker:
enabled: true
四、集中配置
1、 把所有微服务的配置放到一个服务器上,进行集中配置
2、我们用nacos来做集中配置服务
springboot 默认配置: bootstrap application 前者会优先启动,
后缀: properties yml 前者优先与后者。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
spring:
application:
name: sysOne
cloud:
nacos:
config:
server-addr: nacos网址
file-extension: yml
prefix: sysOne
profiles:
active: dev #test #master
然后就在nacos网址上,进行配置:
配置管理—>配置列表
命名规则:sysOne-dev.yml