一、微服务
1、什么是微服务?
- 微服务是一种软件的开发架构和组织方法,(软件)由明确定义的API进行通信的小型独立的服务组成。更易于扩展和快速开发。
2、微服务的优点缺点?说下开发项目中遇到的坑?
3、你所知道的微服务技术栈?
4、什么是 Spring Cloud ?
-
Spring Cloud是一个微服务框架,提供了全套的分布式系统解决方案;
-
对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和Spring Boot开发框架的集成;
-
为服务治理、配置管理、服务熔断、智能路由、全局一致性锁、集群状态管理等操作提供了一种简单的开发方式;
-
提供了快速构建分布式系统的工具,可以快速的启动服务或构建应用。
5、使用 Spring Cloud 有什么优势?
- 分布式开发、部署(分布式架构);
- 代码耦合度低、模块专一性提升(服务间调用复杂,尽量降低耦合减少复杂性);
- 系统稳定性提升(高可用)。
6、Spring Boot和Spring Cloud的区别?
- Spring Boot是一种快速开发技术实现,约定大于配置;
- Spring Cloud提供了全套的分布式系统解决方案,每个微服务方案都以Spring Boot为基础。
7、Spring Cloud 和Dubbo区别?
- Dubbo是RPC(远程过程调用)框架,需要整合其它组件使用,如:Zookepeer、Redis;
- Spring Cloud提供了全套的分布式系统解决方案,采用HTTP方式通信
二、服务调用:
8、微服务之间是如何独立通讯的?
- 同步:HTTP、RPC
- 异步:消息队列
9、说说 RPC 的实现原理
- 建立通信;
- 服务寻址;
- 网络传输(序列化、反序列化);
- 服务调用。
10、REST 和RPC对比
-
REST:HTTP协议传输,数据一般为JSON或XML格式,还包含了大量HTTP头信息,传输效率相对RPC较低。
HTTP有跨平台特性;
-
RPC一般使用TCP协议序列为二进制传输,提供方与调用方接口需保持一致;
-
REST方式更灵活,RPC更高效。
11、负载均衡的意义什么?
- 优化资源使用,避免单一资源过载。
12、什么是Ribbon负载均衡?
- 基于Netflix Ribbon实现的客户端负载均衡工具;
- 连接超时、重试;
- 轮询、随机连接或自定义算法实现负载均衡。
13、Ribbon和Feign的区别?
- 启动类注解不同,Ribbon是@RibbonClient,feign的是@EnableFeignClients;
- 服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明;
- 调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。
14、什么是 Netflix Feign?它的优点是什么?
三、服务注册:
15、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
- zookeeper保证了CP,主节点挂掉后导致选主期间服务不可用;
- eureka保证了AP,各个节点之间是平等的,挂一个节点其它节点还能提提供服务;
16、服务注册和发现是什么意思?Spring Cloud 如何实现?
17、Eureka和Zookeeper区别
18、eureka自我保护机制是什么?
19、作为服务注册中心,Eureka比Zookeeper好在哪里?
四、配置中心:
20、分布式配置中心能干嘛?
五、熔断降级
21、什么是 Hystrix?它如何实现容错?
22、什么是 Hystrix 断路器?我们需要它吗?
23、Hystrix相关注解
24、什么是服务熔断?什么是服务降级?
25、springcloud断路器作用?
六、网关
26、Spring Cloud Gateway?
27、什么是 zuul路由网关
七、消息总线
28、什么是 Spring Cloud Bus?我们需要它吗?