目录
12.Eureka和Zookeeper都可以提供服务注册与发现功能,请说说两个的区别?
[15.什么是SpringCloud Zuul(服务网关)?](#15.什么是SpringCloud Zuul(服务网关)?)
11.DiscoveryClient的作用?
可以从注册中心中根据服务别名获取注册的服务器信息。
12.Eureka和Zookeeper都可以提供服务注册与发现功能,请说说两个的区别?
Zookeeper保证了CP(C:一致性,P:分区容错性),
Eureka保证了AP(A:高可用性)
(1)当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新选leader。问题在于,选leader时间过长,30到120秒,且选取期间zk集群都不可用,这样就会导致选取期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事情,虽然服务能够恢复,但是漫长的选取时间导致的注册长期不可用是不能容忍的。
(2)Eureka保证可用性,Eureka各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点仍然可以提供注册和查询服务。而Eureka的客户端向某个Eureka注册发现或发现时连接失败,则会自动切换到其他节点,只要有一台Eureka还在,就能保证注册服务可用,只是查到的信息可能不是最新的。除此之外,Eureka还有自我保护机制,如果在15分钟内超过85%的节点没有正常的心跳,那么Eureka就认为客户端与注册中心发生了网络故障,此时会出现几种情况:
①Eureka从不在注册列表中移除因为长时间没有收到心跳而应该过期的服务。
②Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上(即保证当前节点仍然可用)
③当网络稳定时,当前实例新的注册信息会被同步到其他节点。因此,Euraka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样使整个微服务瘫痪。
13.什么是网关?
网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。
14.网关的作用是什么?
统一管理微服务请求,权限控制,负载均衡,路由转发,监控,安全控制黑名单和白名单等。
15.什么是SpringCloud Zuul(服务网关)?
Zuul是对SpringCloud提供的成熟对的路由方案,他会根据请求的路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,他对外隐藏了微服务的真正接口地址。
三个重要概念:动态路由表,路由定位,反向代理:
动态路由表:Zuul支持Eureka路由,手动配置路由,这两种都支持自动更新。
路由定位:根据请求路径,Zuul有自己的一套定位服务规则以及路由表达式匹配。
反向代理:客户端请求到路由网关,网关受理之后,在对目标发送请求,拿到响应之后再给客户端。
他可以Eureka,Ribbon,Hystrix等组件配合使用。