前言:面试题是一个以信息整合性看技术特性的一个手段。
springCloud是一系列框架的有序整合。目的在于大规模、分布式、微服务应用部署的解决方案。
微服务是将一个大而全的业务系统按照一定的业务边界拆分成几个或多个系统,以SpringBoot微服务的方式部署应用。
springBoot 基于Spring bean容器思想,专注快速,简单的微服务单体开发。
SpringCloud 专注于大规模SpringBoot微服务应用部署后的通讯,管理,治理方向。
SpringCloud是Spring生态链的一个高级延伸产品,封装了丰富的组件和工具集合,方向致力于分布式领域应用的快速构建和解决方案。
①、服务注册发现:对于大规模服务信息中央化的采集、维护、管理。
②、配置中心:是对服务业务配置的一个集中化承载,信息的查看、维护以及动态修改这方面的效率。
③、Feign和Ribbon的负载均衡,提高服务组间调用的代码量和简洁度,提升系统的可用和稳定性。
④、断路器:是提供了Hystrix组件的降级和熔断,起到保护系统,提高可靠性。
⑤、网关:是起到一种隔离微服务族群,屏障的作用,并且具有统一认证,鉴权,路由,流量管控第一入口的作用
⑥、各个组件定位清晰,各有分工,也很强大,共同配合致力于分布式服务应用。
⑦、拆分微服务,对于系统某一个点影响面的风险性降低,系统的定位也更具有职能化,专注度的提升。另外对于系统的改进和优化无论是人员,关注度范围,提升的性能上线都有显著提升。
这就有很多了,我讲几个开发中最重要的
Spring Cloud Eureka:服务注册与发现
Spring Cloud Zuul:服务网关
Spring Cloud Ribbon:客户端负载均衡
Spring Cloud Feign:声明性的Web服务客户端
Spring Cloud Hystrix:断路器
Spring Cloud Confifig:分布式统一配置管理
主要还是网络开销
(1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
(2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
(3)冗余-分布式系统中的冗余问题。
(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
(5)性能-问题 由于各种运营开销导致的性能问题。
可以从注册中心中根据服务别名获取注册的服务器信息。
1、什么是网关
网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。
2、网关作用
统一管理微服务请求,权限控制、负载均衡、路由转发、监控、安全控制黑名单和白名单等
3、Zuul网关
4、如何设计一套API接口
考虑到API接口的分类可以将API接口分为开发API接口和内网API接口,内网API接口用于局域网,为内部服务器提供服务。开放API接口用于对外部合作单位提供接口调用,需要遵循Oauth2.0权限认证协议。同时还需要考虑安全性、幂等性等问题。
5、如何实现动态Zuul网关路由转发
通过path配置拦截请求,通过ServiceId到配置中心获取转发的服务列表,Zuul内部使用Ribbon实现本地负载均衡和转发。
6、Zuul网关如何搭建集群
使用Nginx的upstream设置Zuul服务集群,通过location拦截请求并转发到upstream,默认使用轮询机制对Zuul集群发送请求
1、什么是负载均衡
多个服务组成的集群根据路由算法对处理任务进行分担,以减轻单体服务的压力并增大处理量和效率。