什么是微服务?
之前的项目是将所有功能写在一个项目里,打成jar包或war包部署,是单体架构,单体架构的缺点:1、耦合度高,拓展成本高。
首先微服务是一种分布式架构的方案,微服务对业务之间进行了拆分,每个业务拆分成单独的一个服务,每一个服务只负责某一个业务,也就是所说的微服务。
服务间的调用方式有哪些?
RestTemplate、OpenFeign、Dubbo
什么是SpringCloud?
SpringCloud是目前国内使用最广泛的微服务框架,SpringCloud不是某一个框架,而是解决微服务架构的一系列框架,它其中包含了很多组件
它包括的组件如下:
1、服务注册:
Eureka 、Nacos、consul
2、服务远程调用
OpenFegin 、Dubbo
3、服务链路监控
Zipkin、Sleuth
4、统一配置管理
SpringCloudConfig、Nacos
5、统一网关路由
SpringCloudGateway、Zuul
6、流控、降级、保护
Hystix、Sentinel
SpringCloud中的核心组件?
注册中心:
1、eureka 2、nacos
负载均衡
1、ribbon
服务远程调用
1、OpenFegin 2、Dubbo
SpringBoot、SpringCloud、微服务三者间关系?
首先SpringBoot和SpringCloud同属于Spring家族,SpringBoot使得搭建Springcloud更加的简单,而SpringCloud是实现微服务架构的框架。
什么是注册中心?
eureka注册中心本身也是一个服务,同时提供了负载均衡的功能
注册中心的作用?
2、服务发现
**)
如何使用Eureka注册中心
1、在父工程先新建一个maven模块
2、引入eureka服务端依赖
3、编写启动类、在启动类上加上@EnableEurekaServer注解
4、在配置文件中配置服务名称、注册中心地址
5、在具体的服务中引入Eureka客户端依赖
6、在配置文件中配置服务名称、注册中心地址
如何使用Nacos注册中心
1、在父工程中引入引入SpringCloudAlibaba的依赖
2、在服务中引入nacos-discovery依赖:
什么是Ribbon? 作用?
Ribbon是一种负载均衡策略,作用:可以将请求按照一定的规则算法分配到具体的服务中
Ribbon的工作原理?
1、RibbonLoadBalancerClient会拦截请求,获取请求中的服务名称,
2、DynamicServerListLoadBalancer会根据服务名称去注册中心拉取服务列表
3、eureka返回服务列表,例:locahost:8080、locahost:8081
4、IRule利用内置负载均衡规则,从列表选择一个比如:locahost:8080、
5、RibbonLoadBalabcerClient修改请求地址,用locahost:8080代替服务名称,然后发送真实请求
Ribbon支持的负载均衡策略?
RoundRobinRule:简单轮询服务列表来选择服务器。
AvailabilityFilteringRule:对以下两种服务器进行忽略: (1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。 (2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的
WeightedResponseTimeRule:为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule:随机选择一个可用的服务器。
RetryRule:重试机制的选择逻辑
Ribbon如何配置修改负载均衡策略?
第一种、
在配置类里定义一个新的IRule,交给ioc容器管理
第二种、
在配置类里配置:
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
Ribbon如何设置饥饿加载?
在配置类里:
ribbon:
eager-load:
clients: userservice
Nacos和Eureka的区别和共同点:
共同点:
两者都具有服务注册、服务发现、健康检测等功能
区别:nacos会把服务提供者划分为临时实例和非临时实例
而临时实例是服务提供者像注册中心发送心跳、当服务提供者宕机,注册中心会从列表中剔除。
非临时实例是注册中心主动发请求询问服务提供者的健康状态,若服务提供者宕机了,注册中心也不会从列表中剔除。
