nacos是什么?注册中心在微服务中的作用是什么?
注册中心
注册中心主要涉及三大角色
1.服务提供者(被调用的接口) 2.服务消费者(调用接口者) 3.注册中心
项目中使用了nacos作为注册中心,注册中心在微服务架构中是必不可少的存在,它可以作为服务与服务之间的一个通讯录,
实际上它里面存储就是各个服务的信息(例如ip,端口,服务名)
如果没有注册中心,我们就需要通过ip加端口的方式去访问其他服务.这样做的话,如果服务ip或端口发生改变,我们就需要大量的修改代码,注册中心就解决了这个问题,可以根据名称动态的获取ip和端口
Ribbon是什么?在微服务中的作用是什么?
负载均衡
在项目中,如果一个服务的访问量变大了,一台服务器承受不了压力,这个时候就需要做集群,那么如果做了集群,这个服务就会有多个访问地址,这时一个请求进来的话应该访问哪个服务呢,因为如果访问不均衡的话还是会造成资源的分配不平均,ribbon负载均衡就解决了这个问题,它里面有三个策略,分别是轮询,随机,权重.通过这些策略就可以均衡分配请求.
Feign是什么?在微服务中的作用是什么?
远程调用(服务间的调用)
Feign的远程调用指的是微服务间的远程调用(项目内服务之间的调用,与Gateway无关)
而Feign的负载均衡指的也是服务间互相调用的负载均衡(与Gateway无关)
因为在微服务架构中,各个服务都部署在不同的服务器中,在没有feign之前我们都是通过restTemplate这个类来远程调用服务,那么使用了feign之后,就使我们调用服务像调用本地方法一样简单,只需要写一个feign接口,贴上对应注解写上参数,调用的时候通过ioc容器获取对应接口的对象,调用方法就可以调用该服务.
其实feign的底层也是用的restTemlpate来发送请求调用服务,而且底层也集成了ribbon负载均衡,所以在nacos下使用fegin默认实现了负载均衡(默认轮巡模式)
Sentine是什么?在微服务中的作用是什么?
服务熔断降级
我的理解Sentine在项目中是作为一个保护资源的存在,在高并发的情况下,可能会有多大量的请求请求一个资源,那么这个资源的服务器可能会承受不住这种压力而崩溃,用户也就访问不到这个服务了.
而且还会导致服务器雪崩效应,就是一个服务出现问题导致其他调用这个服务的服务出错,然后这个问题就像雪崩一样扩散,最终导致整个项目出现问题.
那么sentine就可以解决这个问题,可以为某个接口来做
限流(通过监控QPS来限制访问的流量),
降级(当满足某些条件就进行熔断操作),来保证服务器不会因为超大的访问量冲垮.
没有具体操作过,因为在项目中由项目经理操作.
Gateway是什么?在微服务中的作用是什么?
服务网关
这里指的是客户端对项目服务的访问与feign的内部调用不一样
网关的作用作为统一的入口,可以把一些通用的功能放到网关这里进行处理(登录拦截,验证,鉴权,限流)
在微服务项目中,存在多个服务,每个服务都分别部署在各种的服务器上,那就代表有多个访问地址.这样对于客户端的开发非常不友好,因为这样要记录很多访问地址,而且如果地址改变了就需要修改很多代码.
服务网关就可以解决这个问题,首先网关启动,会在注册中心注册,顺便带回一份最新的服务信息列表,那么当一个请求进入网关的时候,会带上路由规则,这个路由规则就是服务的名称,这时网关获取服务名与本地的服务信息列表对比,发现有对应的服务就会根据信息拼接url,在根据ribbon(feign)的负载均衡配置选择合适的节点,通过restTemplate对象发送一个http请求,访问该服务
其次还可以在网关配置过滤器filter做一些登录验证,鉴权等的统一功能.
Gateway与Feign负载的区别?
gateway负载均衡是相对于请求的负载,对于web(客户端)请求进行负载,而feign是服务间调用的负载,服务间的限流.
流程是:请求到gateway,gate通过路由请求到对应的服务,如果服务间有调用,使用feign进行服务间调用,然后数据原路返回web