springCloud-eureka

//1.Eureka服务端
@SpringBootApplication
@EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来
public class EurekaServer7001_App(){
}
//2.yml配置
server: 
  port: 7001
 
eureka: 
  instance:
    hostname: localhost #eureka7001.com #eureka服务端的实例名称
  client: 
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url: 
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/      
 #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
      
 
//3.服务生产者
@SpringBootApplication
@EnableEurekaClient //本服务启动后会自动注册进eureka服务中
//@EnableDiscoveryClient //服务发现
public class DeptProvider8001_App
{
	public static void main(String[] args)
	{
		SpringApplication.run(DeptProvider8001_App.class, args);
	}
}
//4.生产者配置
eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka
#       defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: microservicecloud-dept8001
    prefer-ip-address: true     #访问路径可以显示IP地址
#
info:
  app.name: microservicecloud
  company.name: www.atguigu.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$



# 注: 配置info需要  <!-- actuator监控信息完善 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

//5.eureka的自我保护机制

如果EurekaServer在一定时间内没有接受到某个微服务实例心跳,EurekaServer将会注销该实例(默认901秒)

当EurekaServer节点在短时间丢失客户端,那么这个节点就会进入自我保护模式,一旦进入该模式,EurekaServer就会保护

服务注册表中的信息,不删除服务注册表中的数据(不会注销任何微服务),当网络故障回复后,该EurekaServer节点会自动退出自我保护模式。

自我保护模式是一种对网络异常的安全保护措施,保留所有微服务,也不会盲目注销任何健康的微服务。

//6.服务发现

加注解:

@EnableDiscoveryClient //服务发现
        @Autowired
	private DiscoveryClient client;

	@RequestMapping(value = "/dept/discovery", method = RequestMethod.GET)
	public Object discovery()
	{
		List<String> list = client.getServices(); //获取所有微服务
                
                //获取指定微服务
		List<ServiceInstance> srvList = client.getInstances("MICROSERVICECLOUD-DEPT");
		for (ServiceInstance element : srvList) {
			System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
					+ element.getUri());
		}
		return this.client;
	}

//Eureka与Zookeeper的区别

1.Zookeeper保证一致性和分区容错性(CP),Eureka保证可用性和分区容错性(AP)

2.Zookeeper:当其中一个节点down掉后,其他节点会重新进行leader选举,选举时间太长,30-120s,且选举期间整个Zookeeper不可用。

3.Eureka:保证可用性,Eureka各个节点都是平等的,几个节点挂掉不会影响剩余节点,依然可以提供注册和查询服务。如果连接该节点失败,就会自动连接到其他节点。只要有一台Eureka存在就能保证注册服务的可用性,不过不能保证查到的信息是最新的(不保证强一致性)。

3.1 如果15分钟内超过85%的节点没有正常心跳,那么Eureka会认为客户端与注册中心出现了网络故障,会出现以下几种情况

(1)Eureka不再从注册列表中移除,因为长时间没有收到心跳而应该过期的服务

(2)Eureka仍然能接受新服务的注册和查询请求,但是不会同步到其他节点上(保证当前节点可用)

(3)当网络稳定时,当前实例新的注册信息会被同步到其他节点中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值