1.单体,分布式,集群的概念
- 单体的应用:所有的业务模块都是放在一个项目中写的,并没有进行拆分
- 单体的系统: 应用和支持应用的组件(数据库,ES)都部署到同一个机器
- 分布式应用: 将业务的模块拆分,在多台机器上进行部署.
- 分布式系统: 应用和支撑应用的组件部署到多台机器,完成功能需要依赖分布在不同机器上的组件才能完成.
- 集群: 将应用/系统,拷贝,同时提供功能. 一般需要配合负载均衡使用.
2.什么是微服务?
- 将应用拆分成若干个小的模板,每个模板独立开发,部署,测试. 相互之间通过网络进行调用.
3.什么是SpringCloud,和SpringBoot有什么关系?
- 框架的集合,微服务的解决方案. 将微服务所需要的组件都组合起来,给搭建微服务框架提供基础的组件.
- 基础组件都是基于SpringBoot开发的.每一个微服务都基于SpringBoot进行开发.
4.注册中心Nacos
- 服务和服务之间需要进行远程调用,注册中心管理URL和端口信息.
- 服务启动的时候需要往注册中心注册IP和端口,同时拉取服务列表到本地缓存中。
- 进行远程调用的时候读取本地缓存,拼接成URL,使用RestTemplate调用
- 实现动态感知机器的上下线。 基于心跳包的机制,服务每个5秒会往注册中心发送心跳包,注册中心内部会有定时器扫描服务列表,会剔除长时间没有更新的服务列表
5.负载均衡ribbon
- 在服务的生产者进行集群的情况下,服务器调用者可以实现负载均衡.
- 根据远程调用的名称,在本地的缓存列表中,根据配置的负载均衡的规则,找到具体的IP和端口,然后进行调用
- 内部自动实现的,不需要我们做任何操作,属于客户端的负载均衡
6.Feign远程调用工具
- 远程调用服务像调用本地代码一样。
- 使用动态代理+反射进行URL拼接,然后使用ribbon,进行负载均衡
7.服务器的雪崩
- 由于服务和服务之间存在调用关系,由于某一个服务出问题,导致其他服务调用该服务的时候出现阻塞,最终导致资源都被耗尽,从而导致一大批服务不可用
- 引入如下机制避免雪崩问题
- 超时机制
- 隔离机制
- 限流机制
- 熔断机制
- 降级机制



