1.什么是微服务?
主要是将以前柔和在以前的系统安装一定的维度进行拆分,比如业务拆分,功能拆分等,最大限度的降低耦合度,每一个微服务相当于一个进程,可以单独的部署应用,整合在一起就是一套完成的业务系统
2.SpringBoot和SpringCloud,请你谈谈对他们的理解
SpringBoot 是用来简化spring应用的初始搭建以及开发过程的 技术应用框架,快速进行业务开发
SpringCloud是分布式微服务架构的整体解决方案框架,它提供了包含服务注册(Eureka),负载均衡(Ribbon和Feign),路由网关(zuul),服务配置中心(SpringCloudConfig),服务断路(Hystrix),服务监控等一系列完整的微服务治理框架
3.微服务之间是如何独立通讯的
同步:RPC,REST等
异步:消息队列
4.什么是服务熔断?什么是服务降级
服务熔断是应对微服务雪崩效应的一种保护机制,当某个微服务不可用或者响应时间太久的情况,在某个时间内达到一定次数(默认5秒内调用20次)启动熔断机制,可以返回指定错误信息
服务降级是当服务熔断后,改服务将不再被调用,客户端可以返回指定错误信息
springCloud运用Hystrix进行服务熔断与降级服务
5.springCloud和Dubbo有哪些区别?企业应该怎么选择
Dubbo采用的是RPC调用,
springCloud采用http的REST方式,
在一定程度上牺牲了调用上的性能,但是降低了代码的强依赖性,是微服务架构更加灵活
SpringCloud是分布式微服务架构的整体解决方案框架,它提供了包含服务注册(Eureka),负载均衡(Ribbon和Feign),路由网关(zuul),服务配置中心(SpringCloudConfig),服务断路(Hystrix),服务监控等一系列完整的微服务治理框架,并且完美适配spring技术项目,相对而言,Dubbo就有其局限性了
社区活跃度,dubbo2012年中断,2017年重启,5年的真空期+无法后续的维护保障
6.微服务的优缺点分别是什么?说下你在项目开发中碰到的坑)
优点:松耦合,聚焦单一业务功能,无关开发语言,团队规模降低
缺点:随着服务数量增加,管理复杂,分布式部署追踪问题困难
7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?。
zookeeper 是CP原则,强一致性和分区容错性
eureka 是AP 原则 可用性和分区容错性
zookeeper当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但是选取主节点期间会导致服务不可用,这是不能容忍的
eureka各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务,