Eureka,集群。CAP原则
Eureka服务端
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
yml配置
server:
port: 7001
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# server:
# enable-self-preservation: false 关闭eureka自我保护机制,心跳机制,不推荐
启动类
@SpringBootApplication
@EnableEurekaServer//eureka 服务端注解,启动后,localhost:7001访问
public class EurekaServer_7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer_7001.class, args);
}
}
Eureka服务提供者
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--eureka完善监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
yml配置
#Eureka配置,服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: springcloud-provider-dept8001 #修改eureka上默认描述信息
#eureka上本服务信息,spring-boot-starter-actuator的作用
info:
app.name: springcloud-provider-dept8001
company.name: com.moral
启动类
@SpringBootApplication
@EnableEurekaClient//eureka客户端注解、
@EnableDiscoveryClient//服务发现
public class DeptProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8001.class, args);
}
}
服务发现
import org.springframework.cloud.client.discovery.DiscoveryClient;//注意不要导错包
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("discovery")
public Object discovery() {
//获取服务列表清单
List<String> services = discoveryClient.getServices();
System.out.println("services-->" + services);
//获取具体微服务信息,通过服务id,application.name
List<ServiceInstance> instances = discoveryClient.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
for (ServiceInstance instance : instances) {
System.out.println(instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri() + "\t" + instance.getInstanceId());
}
return discoveryClient;
}
Eureka集群
服务端
为了便于区分:修改本地hosts文件,eureka7001.com,eureka7002.com, eureka7003.com都映射成127.0.0.1
Eureka服务端7001
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: true #表示是否将自己注册在EurekaServer上,默认为true
fetch-registry: true
service-url:
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
Eureka服务端7002
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
# server:
# enable-self-preservation: false 关闭eureka自我保护机制,心跳机制,不推荐
Eureka服务端7003
server:
port: 7003
eureka:
instance:
hostname: eureka7003.com
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
# server:
# enable-self-preservation: false 关闭eureka自我保护机制,心跳机制,不推荐
服务提供者
server:
port: 8001
#mybatis配置
mybatis:
type-aliases-package: com.moral.pojo
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
#spring配置
spring:
application:
name: springcloud-provider-dept
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/db01?seUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#Eureka配置,服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: springcloud-provider-dept8001 #修改eureka上默认描述信息
#eureka上本服务信息
info:
app.name: springcloud-provider-dept8001
company.name: com.moral
CAP
C:一致性 A:可用性 P:容错性
一个分布式系统最多只能满足两点,由于分区容错P在分布式系统中必须保证,因此只能在a和c之间权衡
- zookeeper CP
- eureka AP
分类:
SpringClud
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY