一、Eureka注册中心
1、order-service如何得知user-service实例地址?
-
user-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端)。这个叫服务注册
-
eureka-server保存服务名称到服务实例地址列表的映射关系
-
order-service根据服务名称,拉取实例地址列表。这个叫服务发现或服务拉取
2、order-service如何从多个user-service实例中选择具体的实例?
-
order-service从实例列表中利用负载均衡算法选中一个实例地址
-
向该实例地址发起远程调用
3、order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?
-
user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
-
当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
-
order-service拉取服务时,就能将故障实例排除了
二、Nacos注册中心
1、nacos启动
cd进入bin目录,执行startup.cmd -m standalone
2、服务分级存储模型
3、权重配置
如果权重修改为0,则该实例永远不会被访问
4、环境隔离
默认情况下,所有service、data、group都在同一个namespace,名为public
给微服务配置namespace只能通过修改配置来实现。
此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错
5、Nacos和Eureka的区别
5.1Nacos与eureka的共同点
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
5.2Nacos与Eureka的区别
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
三、Feign远程调用
四、Gateway服务网关
1、权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。
2、路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡。
3、限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。