目录
大家一起加油 ! ! !
什么是微服务架构
微服务架构就是单体的应用程序分成多应用程序,这个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度集中式管理 。
为什么要学习SpringCloud
1. springcloud 是基于SpringBoot把市场上优秀的服务框架组合起来,通过Spring Boot风格进行封装屏蔽掉复杂的配置饿汉实现原理
2. 开箱即用,以前dubbo+zookeeper下载和配置复杂费时间,springcloud只需要jar的依赖就行
3. springcloud大多数子模块都是直击痛点,像zuul解决的跨域,fegin解决的负载均衡,hystrix的熔断机制等等
SpringCloud是什么?
1. Spring Cloud 是一系列框架的有序集合。他利用Spring Boot的开发便利性巧妙地简化了分布式基础设施的可开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的发开风格做到意见启动和部署。
2. Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置饿汉实现原理,最终给开发者流出一套简单易懂、易部署和维护的分布式系统开发工具包。
Spring Cloud常见组件有哪些?
1. 注册中心组件:Eureka,Nacos等
2. 负载均衡组件:Ribbon
3. 远程调用组件:OpenFeign
4. 网关组件:Zuul,Gateway
5. 服务保护组件:Hystrix,Sentinel
6. 服务配置管理组件: SpringCloudConfig,Nacos
Nacos的服务注册表结构是怎样的?
要了解Nacos的服务注册表结构,需要从两方面入手:
1. 一是Nacos的分级存储模型
2. 二是Nacos的服务端源码
Nacos如何支持案例内部数十万服务器注册压力?
Nacos内部接收到注册的请求时,不会立即写数据,而是将服务注册任务放入一个队列就立即响应给客户端。然后利用线程池读取阻塞队列中的任务,异步来完成实例更新,从而提高并发写能力。
网关和过滤器有什么区别
网关是对所有服务的请求进行分析过滤,过滤器是对单个服务而言
如何设计一套API接口
考虑到API接口的分类可以将API接口分为开发API接口和内网API接口,内网API接口用于局网,为内部服务器提供服务。开放API接口用于对外部合作单位提供接口调用,需要遵循Oauth2.0权限认证协议。同时还需要考虑安全性、幂等性等问题。
负载均很的意义是什么?
1. 简单来说:先将集群,集群就是把一个的事情交给多个人去做,假如要做1000个产品给一个人做要10天,我叫10个人做就是一天,这就是集群,负载均衡的话就是用来控制集群,他把做的最多的人让他慢慢做休息会,把做的最少的人让他加量让他做多点。
2. 在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
Ribbon是什么?
1. Ribbon是Netflix发布的开源项目,主要功能是提供客户端负载均衡算法
2. Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。简单的说,就是再配置文件中列出后面所有的机器,Ribbon会自动的帮助你基于某种规则(简单轮询、随机连接、权重等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。(有点类似Nginx)
谈谈服务雪崩效应
1. 雪崩效应时大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用时互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃,发生雪崩的原因有以下几点:
1. 单个服务代码存在bug
2. 请求访问量激增导致服务发生崩溃(如大型商城的抢红包,秒杀功能)
3. 服务器的硬件故障也会导致部分服务不可用
服务降级是什么?
当客户端请求服务器端的时候,防止客户端一直等待,不会处理逻辑代码,直接返回一个友好的提示给客户端
服务熔断是什么?
服务熔断是在服务降级的基础上更加直接的一种保护方式,当在一个统计时间范围内的请求失败数量达到设定值(requestVolumeThreshold)或当前的请求错误率达到设定的错误率法制(errorThresholdPercentage)时,开启断路,之后的请求直接走fallback方法,在设定时间(eleepWindowInMilliseconds)后尝试恢复。
服务隔离是什么?
服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。
SpringCloud有几种调用接口方式
1. Feign
2. RestTemplate
Config
分布式配置中心有哪些框架?
Apollo、zookeeper、springcloud config。
分布式配置中心的作用
动态变更项目配置信息而不必重新部署项目。
什么是Spring Cloud Config?
spring clodu config为分布式系统中的外部配置提供服务器和客户端支持,可以方便的对微服务各个环境下的配置进行集中式管理。Spring Cloud Config分为Config Server和Config Client两部分。Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config Server的接口来读取配置文件。
什么是Spring Cloud Gateway?
1. Spring Cloud Gateway是Spring Cloud官方退出的第二代网关框架,取代Zuul网关,网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。
2. 使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改