增加Maven配置,用来动态获取配置文件信息;
<build> <finalName>microservicecloud</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <delimiters> <delimit>$</delimit> </delimiters> </configuration> </plugin> </plugins> </build>在项目中配置INFO信息;
info: app.name: atguigu-microservicecloud company.name: build.artifactId: $project.artifactId$ build.version: $project.version$ 26.尚硅谷_SpringCloud_Eureka自我保护机制介绍在自我保护模式中,Eureka Server会保护服务注册表中的信息,不再注销任何服务实例。当它收到的心跳数重新恢复到阈值以上时,该Eureka Server节点就会自动退出自我保护模式。它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。一句话说:好死不如赖活着。
27.尚硅谷_SpringCloud_Eure服务发现在主程序上增加开启功能注解 ;
@EnableDiscoveryClient //服务发现使用服务发现功能;
@Autowired private DiscoveryClient client; @RequestMapping(value = "/dept/discovery", method = RequestMethod.GET) public Object discovery() { List<String> list = client.getServices(); System.out.println("**********" + list); 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; } 28.尚硅谷_SpringCloud_Eureka集群配置修改Euraka实例名;
eureka: instance: hostname: eureka7001.com #eureka服务端的实例名称将实例名配置进hosts文件,文件路径为
C:\Windows\System32\drivers\etc\hosts配置内容:
127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com修改配置文件:
eureka: client: service-url: defaultZone: :7002/eureka/,:7003/eureka/ 集群的节点出现在 unavailable-replicas 下的可能原因:原因一:prefer-ip-address 配置项设置错误
比如,9001 服务器设置了prefer-ip-address: true,那么它注册到 9002 和 9003 服务器时应该使用 defaultZone::9001/eureka/ ,但此时可以发现使用的仍然是 hostname 名,导致错误发生。
另一种原因是,三个9001、9002 和 9003 都设置了prefer-ip-address: true,导致最后解析出来的 hostname 都是相同的IP,使副本不可用。
原因二:register-with-eureka 配置项设置错误
看网上很多博客和资料都把此项设置成了 false,此时 eureka 不会注册到其他服务器上,所以出现错误。
29.尚硅谷_SpringCloud_Eureka比Zookeeper好在哪里CAP图:
分布式系统必须满足P(分区容错性)。
Zookeeper保证CP,
Eureka保证AP。
Zookeeper在master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举,选举期间zk集群不可用。
Eureka各个节点都是平等的,几个节点挂掉不影响其他节点正常工作。
Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样是整个注册服务瘫痪。
Ribbon 30.尚硅谷_SpringCloud_Ribbon是什么Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。Spring Cloud的负载均衡算法可以自定义。
LB分为集中式LB和进程内LB。
集中式LB即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方。
进程内LB将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己在从这些地址中选择出一个合适的服务器。
Ribbon属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。
31.尚硅谷_SpringCloud_Ribbon配置初步