微服务搭建
在完整搭建一个项目前,一定要确认自己的版本!!!!例如我自己搭建的环境为,JDK17,Springboot 3.2.2,SpringCloud 2023.0.0,否则很容易出现版本不兼容的Bug
搭建EurekaServer
1.引入eureka-server依赖
注册中心需要
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.添加@EnableEurekaServer注解
@EnableEurekaServer
application.yml中文件添加eureka地址
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:11011/eureka/
服务注册
1.配置eurka地址
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:11011/eureka/
2.引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
负载均衡
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
Ribbon负载均衡
负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。软件负载均衡的 主流产品 有:Nginx、HAProxy、LVS。
修改负载均衡规则
@Bean
public IRule randomRule(){
return new RandomRule();
}
或在xml文件中使用ribbon
饥饿加载
Nacos注册中心
nacos与eureka都是服务注册中心
Nacos与Eureka
1.Consistency(一致性) :数据一致更新,所有数据的变化都是同步的
2.Availability(可用性) :在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求
3.Partition tolerance(分区容忍性) :某个节点的故障,并不影响整个系统的运行
Nacos支持CP,AP,Eurka支持AP
Eurka迁移到Nacos
1.更换依赖,注释掉Eurka依赖
startup.cmd -m standalone
添加nacos父依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
添加nacos客户端
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
修改yml配置添加
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
service: User
启动类中去掉Eureka发现注解
@EnableDiscoveryClient
Nacos使用的是netty和服务直接进行连接,属于长连接
Eureka是使用定时发送和服务进行联系,属于短连接
问题:我在添加依赖后程序运行没有问题,但是就是无法在Nacos服务列表中查询到注册的服务,于是我进行测试,发现版本关系很重要,于是我重新建立微服务项目,严格对应版本进行建立,然后终于成功了
集群概念
在application.yml的spring.cloud.nacos.discovery.cluster-name属性进行配置集群
然后可以在nacos中查看当前集群为WH