~1 什么是微服务
微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间一般通过 HTTP 的 RESTfuLAPI 进行通信协作。
~2 微服务通信
服务之间一般通过 HTTP 的 RESTfuLAPI 进行通信协作。
~3 springcloud 和Dubbo有哪些区别
(1)服务调用方式:dubbo是RPC springcloud Rest Api
(2)注册中心:dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
(3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
~4 对springoot和springloud的理解
springBoot专注于快速,方便的开发单个个体微服务,springCloud关注与全局的服务治理框架
~5 什么是熔断和服务降级
服务降级:当客户端请求服务器端的时候,防止客户端一直等待,不会处理业务逻辑代码,直接返回一个友好的提示给客户端。
服务熔断是在服务降级的基础上更直接的一种保护方式,当在一个统计时间范围内的请求失败数量达到设定值(requestVolumeThreshold)或当前的请求错误率达到设定的错误率阈值(errorThresholdPercentage)时开启断路,之后的请求直接走fallback方法,在设定时间(sleepWindowInMilliseconds)后尝试恢复。
服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式
~8 Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别
ZooKeeper中的节点服务挂了就要选举
在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的,
选举就是改微服务做了集群,必须有一台主其他的都是从
Eureka各个节点是平等关系,服务器挂了没关系,只要有一台Eureka就可以保证服务可用,数据都是最新的。
如果查询到的数据并不是最新的,就是因为Eureka的自我保护模式导致的
Eureka本质上是一个工程,而ZooKeeper只是一个进程
Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像ZooKeeper 一样使得整个注册系统瘫痪
ZooKeeper保证的是CP,Eureka保证的是AP
CAP:
C:一致性>Consistency;
取舍:(强一致性、单调一致性、会话一致性、最终一致性、弱一致性)
A:可用性>Availability;
P:分区容错性>Partition tolerance;