一、什么是springcloud,作用和功能是什么?
springcloud是一个微服务的一站式解决方案能与springboot无缝衔接,当我们在讲一个个功能从单体应用中抽离出来成为一个单独的服务时,我们会面临一系列的问题,当这个服务挂了怎么办,做成集群,那么如何均衡的访问他们,调用集群服务时如何保证数据的一致性。基于这些问题springcloud提供了解决方案。
二、什么是Eureka,主要作用和功能是什么?
Eureka是springcloud的注册中心,主要作用就是将服务进行统一的管理,提供给调用者调用。
三、Eureka的工作原理
Eureka的集群工作原理,Eureka集群节点会两两相连,将服务注册到Eureka的一个节点上会自动同步到所有节点。调用者随机访问到一台Eureka并将服务的ip缓存到本地进行调用。
四、Eureka和zookeeper的区别
zk是本身就是基于CP做的服务协调而Eureka是基于AP做的注册中心,Eureka必须依赖于web服务器才能启动,而zk可以直接启动,zk一个rpc(tcp)通信,Eureka是一个http (tcp)的rest接口调用,zookeeper因为是cp,所以考虑到网络情况的脑裂发生,有了过半数存活原则保证数据的一致性,并且集群也是基于主从做的,为了数据的一致性所有的更新状态有leader节点来做,follower可以来响应。过半数存活原则会让少的集群不可用拒绝提供服务,zk这段期间会进行主从选举一般是30s到150s之间整个集群的服务都将不可用,牺牲了一定可用性来保持的数据一致性。Eureka的AP系统会让集群即使发生脑裂的情况,它会对接受的实际心跳和应收的心跳如果不满足85%也就是实际收到的心跳没有85%那么会启动自我保护机制,因为他认为一般大概的宕机情况是少发生的,而这种多的宕机情况可能时发生了网络波动脑裂而造成的收不到另外集群节点的服务心跳(节点收到心跳会自动同步到其他节点)。所以他会保证高可用另外的脑裂的集群服务也继续可以使用,这种也就会造成数据的不一致(但这种查看到之前的数据我们可以容忍)也就牺牲了一定的一致性做的高可用。
五、什么ribbon
ribbon就是一个客服端的负载均衡器
六、ribbon的负载均衡有哪些
默认是一个轮询访问,有随机的、有一致性哈希、有加权
七、什么是Fegin
Fegin是一个ribbon+hystrix的集合体 客服端负载均衡器,由于java对ribbon的不是面向对象思想的写法不习惯。
八、ribbon和nginx的区别
ribbon是对把所有的服务端ip拿过来在客户端这边做个负载均衡然后得到一个ip去访问,nginx是发送请求给一个反向代理服务器由他来代替你去访问后台,你也不知道服务端是否是一个集群,很好的保护了服务端的资源。
九、什么是hystrix,有什么作用
hystrix就是一个熔断器,是微服务架构的保险丝,当我们遇到微服务互相调用时在遇到高并发的场景时,我们的服务会面临大量线程阻塞的情况也就导致服务端的资源耗尽从而导致一连串的服务挂掉导致服务雪崩,为了防止这种情况让服务直接不可用或者直接返回无关竟要的返回来解决阻塞问题。