Nacos

服务注册

为什么要将服务注册到nacos?

(为了更好的查找这些服务)

在Nacos中服务提供者是如何向Nacos注册中心(Registry)续约的?

(5秒心跳)

对于Nacos服务来讲它是如何判定服务实例的状态?

(检测心跳包,15,30)

服务启动时如何找到服务启动注册配置类?

(NacosNamingService)

服务消费方是如何调用服务提供方的服务的?

(RestTemplate)

@Bean注解的作用?

(一般用于配置类内部,描述相关方法,用于告诉spring此方法的返回值要交给spring管理,bean的名字默认为方法名,假如需要指定名字可以@Bean(“bean的名字”),最多的应用场景是整合第三方的资源-对象)

@Autowired注解的作用?

(此注解用于描述属性,构造方法,set方法等,用于告诉spring框架,按找一定的规则为属性进行DI操作,默认按属性,方法参数类型查找对应的对象,假如只找到一个,则直接注入,类型多个时还会按照属性名或方法参数名进行值的注入,假如名字也不同,就出报错.)

Nacos中的负责均衡底层是如何实现的?

(通过Ribbon实现,Ribbon中定义了一些负载均衡算法,然后基于这些算法从服务实例中获取一个实例为消费方法提供服务)

Ribbon 是什么?

(Netflix公司提供的负载均衡客户端,一般应用于服务的消费方法)

Ribbon 可以解决什么问题?

(基于负载均衡策略进行服务调用, 所有策略都会实现IRule接口)

Ribbon 内置的负载策略都有哪些?

(8种,可以通过查看IRule接口的实现类进行分析)

@LoadBalanced的作用是什么?

(描述RestTemplate对象,用于告诉Spring框架,在使用RestTempalte进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后在拦截器内部,启动负载均衡策略。)

我们可以自己定义负载均衡策略吗?

(可以,基于IRule接口进行策略定义,也可以参考NacosRule进行实现)

为什么使用feign?

(基于Feign可以更加友好的实现服务调用,简化服务消费方对服务提供方方法的调用)。

@FeignClient注解的作用是什么?

(告诉Feign Starter,在项目启动时,为此注解描述的接口创建实现类-代理类)

Feign方式的调用,底层负载均衡是如何实现的?

(Ribbon)

@EnableFeignCleints 注解的作用是什么?

(描述配置类,例如启动类)

何为注册中心?

(用于记录服务信息的一个web服务,例如淘宝平台,滴滴平台,美团外卖平台,……)

注册中心的核心对象?

(服务提供方,服务消费方,注册中心-Registry)

市面上常用注册中心?

(Google-Consul,Alibaba-Nacos,…)

微服务架构下项目的构建过程?

(聚合工程)

Nacos是什么,提供了什么特性(服务的注册、发现、配置)?

你为什么会选择Nacos?
(活跃度、稳定、性能、学习成本)

Nacos的官网?

(nacos.io)

Nacos在github的源码?

(github.com/alibaba/nacos)

Nacos在windows环境下安装?

(解压即可使用)

Nacos在windows中的的初步配置?

(application.properties访问数据库的数据源)

Nacos服务注册的基本过程?

(服务启动时发送web请求)

Nacos服务消费的基本过程?

(服务启动时获取服务实例,然后调用服务)

Nacos服务负载均衡逻辑及设计实现?

(Ribbon)

注册中心的核心数据是什么?

(服务的名字和它对应的网络地址)

注册中心中心核心数据的存取为什么会采用读写锁?

(底层安全和性能)

Nacos健康检查的方式?

(基于心跳包机制进行实现)

Nacos是如何保证高可用的?

(重试,本地缓存、集群)

Feign是什么,它的应用是怎样的,feign应用过程中的代理对象是如何创建的

(JDK)?

Feign方式的调用过程,其负载均衡是如何实现?

(Ribbon)

配置中心

什么是配置中心?

  • (存储项目配置信息的一个服务)

    为什么要使用配置中心?

  • (集中管理配置信息,动态发布配置信息)

    市场上有哪些主流的配置中心?

  • (Apollo,nacos,……)

    Nacos配置管理模型的背景?

  • (环境不同配置不同)

    Nacos配置中的管理模型是怎样的?

  • (namespace,group,service/data-id)

    Nacos客户端(微服务)是否可以读取共享配置?

  • (可以)

    Sentinel

    Sentinel是什么?

    (阿里推出一个流量控制平台,防卫兵)

    类似Sentinel的产品你知道有什么?

    (hystrix-一代微服务产品)

    你了解哪些限流算法?

    (计数器、令牌桶、漏斗算法,滑动窗口算法,…)

    Sentinel 默认的限流算法是什么?

    (滑动窗口算法)

    你了解sentinel中的阈值应用类型吗?

    (两种-QPS,线程数)

    Sentinel 限流规则中默认有哪些限流模式?

    (直连,关联,链路)

    Sentinel的限流效果有哪些?

    (快速失败,预热,排队)

    Sentinel 为什么可以对我们的业务进行限流,原理是什么?

    我们在访问web应用时,在web应用内部会有一个拦截器,这个拦截器会对请求的url进行拦截,拦截到请求以后,读取sentinel 控制台的流控规则,基于流控规则对流量进行限流操作。

    如何理解热点数据?

    (访问频度比较高的数据,某些商品、谋篇文章、某个视频)

    热点数据的限流规则是怎样的?

    (主要是针对参数进行限流设计)

    热点数据中的特殊参数如何理解?

    (热点限流中的某个参数值的阈值设计)

    对于热点数据的访问出现限流以后底层异常是什么?

    (ParamFlowException)

    如何理解Sentinel中的授权规则?

    (对指定资源的访问给出的一种简易的授权策略)

    Sentinel的授权规则是如何设计的?

    (白名单和黑名单)

    如何理解Sentinel中的白名单?

    (允许访问的资源名单)

    如何理解Sentinel中的黑名单?

    (不允许访问的资源名单)、

    Sentinel如何识别白名单和黑名单?

    (在拦截器中通过调用RequestOriginParser对象的方法检测具体的规则)

    授权规则中RequestOriginParser类的做用是什么?

    (对流控应用值进行解析,检查服务访问时传入的值是否与RequestOriginParser的parseOrigin方法返回值是否相同。)

    Sentinel诞生的背景?

    (计算机的数量是否有限,处理能力是否有限,并发比较大或突发流量比较大)

    服务中Sentinel环境的集成,初始化?

    (添加依赖-两个,sentinel配置)

    Sentinel 的限流规则?

    (阈值类型-QPS&线程数,限流模式-直接,关联,链路)

    Sentinel 的降级(熔断)策略?

    (慢调用,异常比例,异常数)

    网关

    什么是网关?

    服务访问(流量)的一个入口,类似生活中的“海关“

    为什么使用网关?

    (服务安全,统一服务入口管理,负载均衡,限流,鉴权)

    Spring Cloud Gateway 应用的初始构建过程

    (添加依赖,配置)

    Gateway 服务的启动底层是通过谁去实现的?

    (Netty网络编程框架-ServerSocket)

    Gateway 服务做请求转发时一定要在注册中心进行注册吗?

    (不一定,可以直接通过远端url进行服务访问)

    何为谓词?

    (网关中封装了判断逻辑的一个对象)

    谓词逻辑的设计是怎样的?

    (谓词判断逻辑返回值为true则进行请求转发)

    你了解哪些谓词逻辑?

    (path,请求参数,请求方式,请求头,….)

    我们可以自己定义谓词工厂对象吗?

    (可以的)

    网关层面结合sentinel实现限流,其限流的类型有几种?

    (两种-route id,api)

    网关层面可以自定义限流后的异常处理结果吗?

    (可以)

    你知道Sentinel底层限流的算法有哪些?

    (滑动窗口,令牌桶,漏斗,。。。)

    Gateway在互联网架构中的位置?

    (nginx->gateway–>微服务–>微服务)

    Gateway底层负载均衡的实现?

    (Ribbon)

    Gateway应用过程中设计的主要概念?

    (路由id,路由uri,断言,过滤器)

    Gateway中你做过哪些断言配置?

    (after,header,path,cookie,…)

    Gateway中你用的过滤器有哪些?

    (添加前缀,去掉前缀,添加请求头,…,负载均衡,…)