eureka
Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。eureka作为服务注册中心,Eureka保证了AP。个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。
1.服务端service(集群)
服务端类似一个容器,存放已注册的服务的服务名、地址等信息。向用户提供图形界面。
-
pom依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
-
主启动类
@SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
-
第一个服务端properties
server.port=7001 #eureke服务端的实列名称 eureka.instance.hostname=eureka7001.com #false表示不向注册中心注册自己 eureka.client.register-with-eureka=false #false表示自己就是注册中心 eureka.client.fetch-registry=false #设置与eureka server交互地址查询服务和注册服务都依赖这个地址 eureka.client.service-url.defaultZone=http://eureka7002.com:7002/eureka
-
第二个服务端properties
server.port=7002 #eureke服务端的实列名称 eureka.instance.hostname=eureka7002.com #false表示不向注册中心注册自己 eureka.client.register-with-eureka=false #false表示自己就是注册中心 eureka.client.fetch-registry=false #设置与eureka server交互地址查询服务和注册服务都依赖这个地址 eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka
-
集群相互注册相互守望
2.客户端client
客户端表示需要向服务端存入的服务,向服务端service注册服务。服务端也可以是集群,设置相同服务名称,并向同一个服务端或者服务端集群注册服务。
-
pom依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
主启动类
@SpringBootApplication @EnableEurekaClient public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
-
客户端properties
server.port=8001 server.servlet.context-path=/sent #服务名称 spring.application.name=cloud-payment-service #false表示向注册中心注册自己 eureka.client.register-with-eureka=true #false表示自己就是注册中心 eureka.client.fetch-registry=true #设置与eureka server交互地址查询服务和注册服务都依赖这个地址 eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #指定实例名称 eureka.instance.instance-id=payment8001 #显示ip eureka.instance.prefer-ip-address=true #指定实例名称 eureka.instance.instance-id=payment8001 #显示ip eureka.instance.prefer-ip-address=true