20191003 尚硅谷Spring Cloud教学视频 (2)

增加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节点就会自动退出自我保护模式。它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。一句话说:好死不如赖活着

20191003 尚硅谷Spring Cloud教学视频

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图:

20191003 尚硅谷Spring Cloud教学视频

分布式系统必须满足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配置初步

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzysjd.html