1. 概述
注册中心是微服务系统的核心组件之一。当前比较流行的注册中心也比较多,如eureka、nacos、consul、zookeeper等。这些主流的注册中心,基本上都是强一致性的 CP 系统,只有eureka是最终一致性的 AP 系统。
如果你的微服务需要支持跨区域调用,基本上只能选择 eureka(nacos 虽然声称同时支持 CP 和 AP 应用,但是如果需要支持跨集群(区域)调用,需要额外部署专门的 nacos sync 组件,不建议在跨区域场景中使用 nacos)。而且,注册中心的核心功能是随时可以获取注册服务的实例信息,在可用性(AP)与一致性(CP)之间权衡时偏向可用性,也是比较符合注册中心的场景定位的,eureka 就是只要有一个节点存活,就可以获取注册服务的实例信息,没有 CP 系统必须多数节点存活才能提供服务的限制。
2. eureka入门案例
基础工程:📎cloud-demo.rar
2.1. eureka服务端配置
- 导入依赖
- 编写Eureka启动类(加注解)
- 配置eureka(自己注册自己)
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
@EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
server: port: 10086 # 服务端口 spring: application: name: eurekaserver # eureka的服务名称 eureka: client: service-url: # eureka的地址信息 defaultZone: http://127.0.0.1:10086/eureka
2.2. user-service客户端配置
- 导入依赖
- 修改配置
<!--eureka客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
spring: datasource: url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false username: root password: root driver-class-name: com.mysql.jdbc.Driver application: name: userService # eureka的服务名称 eureka: client: service-url: # eureka的地址信息 defaultZone: http://127.0.0.1:10086/eureka
2.3. 启动查看Eureka信息
2.4. 模拟多实例部署
2.5. order-service客户端配置
与user-service同理,启动后访问页面如下
3. 总结
本节读者带领大家完成SpringCloud集成组件Eureka的开发、部署,并完成业务应用在Eureka的注册、访问。基于此细心的读者朋友们可以发现:上一章节还写死的访问地址,已经变成动态从注册中心获取了,避免了接口提供方注册信息变更、导致消费方接口服务调用异常的场景。
思考问题
- Eureka是什么?解决了什么问题?
- Eureka如何实现服务注册与服务发现?
- 还有哪些技术可以实现服务注册与服务发现?