微服务-分布式架构
- 单体架构你觉得存在什么缺陷?(容量、计算、故障)
- 为什么要使用分布式架构?(增加容量、高并发、高性能、高可用)
- 分布式架构有什么劣势?(设计的难度、维护成本)
- 为什么要使用缓存?(减少数据库访问压力、提高性能)
- 使用缓存时要注意什么问题?(一致性、淘汰算法、击穿、雪崩)
- 如何理解反向代理?(服务端代理,是服务端服务器的一种代理机制,请求转发)
- 反向代理如何实现负载均衡?(轮询,轮询+权重,哈希IP)
- 什么是读写分离、读写分离的目的是什么?(单机数据库有瓶颈、读写频次,并发能力)
- 读写分离后可能会带来什么问题?(数据同步)
- 当我们向写库写数据时还要做什么?(写缓存、数据同步到读库)
- 为什么要进行分库、分表,有哪些分表策略?(业务数据可靠性、查询性能)
- 何为服务,有什么是微服务?(服务-软件要解决的问题,可以提供的功能。微服务-服务中的共性再抽象,以实现更好的重用)
- 哪种互联网架构设计最好?(没有最好,只有更好,脱离业务谈就够就是耍流氓)
Nacos服务注册中心应用实践
为什么要将服务注册到nacos?(为了更好的查找这些服务)
在Nacos中服务提供者是如何向Nacos注册中心(Registry)续约的?(5秒心跳)
对于Nacos服务来讲它是如何判定服务实例的状态?(检测心跳包,15,30)
服务消费方是如何调用服务提供方的服务的?(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进行实现)