谈谈你对微服务的理解?
- 单体结构:耦合性高,并发量低
- 分布式架构:对业务进行了拆分,每个业务独立作为一个模块,也可以说每个业务可以在不同机器上运行,能大大提升并发能力
- 微服务定义:微服务属于分布式架构的一种
- 单一职责,每个服务都对应唯一业务能力
- 面向服务,对外暴露业务接口
- 自治:团队独立,数据独立,部署独立
- 隔离性:隔离性强
SpringBoot SpringCloud 微服务3者关系?
- 微服务,是一种架构的设计思想
- Spring Cloud是微服务架构的一套具体解决方案
- Spring Boot 是基于Spring 的一套快速配置脚手架
- 微服务和Springboot: 微服务 中的单个服务可以基于Springboot快速开发
- SpringCloud和Springboot: SpringCloud是基于SpringBoot开发的,所以SpringCloud依赖SpringBoot
SpringCloud中核心组件有哪些?各组件的作用是什么?
- 网关组件:zuul、gateway等 转发请求,进行过滤
- 注册中心组件:Eureka,nacos (从哪里来到哪里去)维护注册表
- 配置中心组件:nacos 维护配置文件,实施热更新
- 负载均衡组件:Ribbon 顾名思义负载均衡,要清楚Ribbon常用负载均衡策略:轮询 随机 权重 。。。
- 微服务保护组件:Hystrix、sentinel 发起的请求是通过Hystrix的线程池来走,不同的服走不同的线程池,实现了不同的服务调度隔离,避免服务雪崩的问题
- 远程服务调用组件:Feign/openFeign 基于fegin的动态代理机制,根据注解和选择机器,拼接Url地址,发起请求
nacos作用描述? 具体如何使用?
nacos Server提供服务发现的功能,各个微服务会将自己的信息注册到nacos Server。
首先需要安装nacos服务端,然后在微服务的yml文件中注册nacos的网址和微服务名,然后将服务微服务注册到nacos服务端,并且微服务注册是基于心跳检测的,每30秒注册一次维护自己的注册状态,如果一定时间90秒之后没有此微服务的心跳就会进行剔除
注册成功后,其他微服务如果需要使用另一个微服务会从服务端进行拉取,并且拉取的是微服务名称,就算一个微服务搭建有集群也没啥关系,然后在nacos服务端就会将服务名自动解析成网段,并且拉取服务也是30秒一次,并且拉取完成后会将信息存储到本地(nacos Client 会缓存服务注册表中的信息),就算nacos服务端宕机已经拉取到的服务也能正常通讯,但如果再注册一个微服务则不能拉取到这个服务