微服务——Eureka和Nacos

目录

提供者和消费者

​编辑 Eureka注册中心——远程调用的问题

 Eureka注册中心——原理分析

  Eureka注册中心——搭建eureka服务

步骤:

  Eureka注册中心——服务注册

  Eureka注册中心——服务发现

总结

 Ribbon负载均衡——原理

流程:

 Ribbon负载均衡——策略

 Ribbon负载均衡——饥饿加载

 总结

​编辑 Nacos注册中心——认识和安装Nacos

docker拉取镜像

创建日志映射文件 

启动Nacos

访问Nacos

 账号密码

windows安装时的启动方法

  Nacos注册中心——快速入门

  Nacos注册中心——服务多级存储模型

服务集群属性配置 

  Nacos注册中心——NacosRule负载均衡

 Nacos注册中心——服务实例的权重设置

  Nacos注册中心——环境隔离

Nacos和Eureka的对比


提供者和消费者

微服务——Eureka和Nacos_第1张图片

微服务——Eureka和Nacos_第2张图片 针对上面这种情况,要看B相对于谁而言,B既可以是提供者,也可以是消费者。

微服务——Eureka和Nacos_第3张图片 Eureka注册中心——远程调用的问题

在之前的案例里面

url出现了硬编码,假如服务换了个服务器,每次都要重新修改代码和打包。

而且如果一个服务使用了多实例形成集群,url就不能指定了。

微服务——Eureka和Nacos_第4张图片

 Eureka注册中心——原理分析

eureka的客户端包含了消费者和提供者,客户端启动时都会到服务端注册。

消费者要取到提供者的地址信息可以到eurka服务端去找。

并且每个客户都会向服务端发送心跳请求,如果不发了,默认宕机,就会剔除客户信息

微服务——Eureka和Nacos_第5张图片

 微服务——Eureka和Nacos_第6张图片

  Eureka注册中心——搭建eureka服务

步骤:

微服务——Eureka和Nacos_第7张图片

 这里不需要指定eureka版本是因为在父工程已经通过版本依赖管理指定了版本信息。

创建好后通过浏览器直接访问

微服务——Eureka和Nacos_第8张图片

可以看见有一个“注册到eureka的实例”,这里现在只有一个服务端,能看见计算机名和端口在后面。 

  Eureka注册中心——服务注册

步骤

微服务——Eureka和Nacos_第9张图片

将两个服务配置完之后可以看见两个客户端

微服务——Eureka和Nacos_第10张图片

一个服务启动多个实例

微服务——Eureka和Nacos_第11张图片

微服务——Eureka和Nacos_第12张图片

  Eureka注册中心——服务发现

微服务——Eureka和Nacos_第13张图片

 完成之后重启orderservice.

运行两次之后两个实例分别收到一次查询请求。

总结

微服务——Eureka和Nacos_第14张图片

 Ribbon负载均衡——原理

流程:

微服务——Eureka和Nacos_第15张图片

加上那个@LoadBalanced注解后,会有如下的一个拦截器拦截所有来自客户端的http请求。

会拿到userservice根据设定好的规则进行对url和端口号的转换和负载均衡访问。

微服务——Eureka和Nacos_第16张图片 微服务——Eureka和Nacos_第17张图片

  

 Ribbon负载均衡——策略

在上面可以看见IRule接口定义规则。

微服务——Eureka和Nacos_第18张图片

有一个RandomRule随机和RoundRobinRule轮询。轮询下还有个根据权重轮询。

默认规则是ZoneAvoidanceRule,其父类中有轮询规则。

常见规则

微服务——Eureka和Nacos_第19张图片

 微服务——Eureka和Nacos_第20张图片

第一种方案是作用于全局的,定义了一个IRule覆盖默认的IRule,不管调用哪一个微服务都是随机。

第二种方案可以针对某一种服务进行负载均衡的规则覆盖 

 Ribbon负载均衡——饥饿加载

微服务——Eureka和Nacos_第21张图片

 总结

微服务——Eureka和Nacos_第22张图片 Nacos注册中心——认识和安装Nacos

微服务——Eureka和Nacos_第23张图片

 这里的安装使用docker容器化部署。

在云服务器上。

docker拉取镜像

docker pull nacos/nacos-server

创建日志映射文件 

mkdir -p /home/nacos/logs

启动Nacos

docker run \
--name nacos -itd \
-e MODE=standalone \
-p 8848:8848 \
-v /home/nacos/logs:/home/nacos/logs  \
nacos/nacos-server
  1. -p:指定了宿主机端口为8848
  2. -v:指定宿主机与nacos的日志目录映射
  3. -e:指定环境变量(或–env)。MODE=standalone: 单机, MODE=cluster:集群(默认模式)

访问Nacos

http://服务器ip:8848/nacos

 账号密码

nacos:nacos

微服务——Eureka和Nacos_第24张图片

tmd, 这个nacos放在云端,本地的项目怎么能让云端的东西负载均衡?

还真可以。

windows安装时的启动方法

找bin目录下打开cmd运行

startup.cmd -m standalone

  Nacos注册中心——快速入门

使用Eureka和Nacos时代码不用怎么变化。

一个是依赖改变,一个是地址改变。

微服务——Eureka和Nacos_第25张图片

  yml配置文件注释eureka的配置,使用nacos的配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos服务地址

修改完之后就可以看见服务列表上出现了对应的项目和实例

微服务——Eureka和Nacos_第26张图片

最后,这里用云服务器的nacos也照样可以访问,这里版本不同是因为docker拉取默认拉最新版本的。并且负载均衡同样正常执行。 

微服务——Eureka和Nacos_第27张图片

  Nacos注册中心——服务多级存储模型

微服务——Eureka和Nacos_第28张图片

 微服务——Eureka和Nacos_第29张图片

在某个实例下可以看见默认是没有集群。

微服务——Eureka和Nacos_第30张图片

服务集群属性配置 

微服务——Eureka和Nacos_第31张图片

 现在user-service有三个实例,先修改为gz然后启动1和2

 再修改为hz然后启动3

然后在nacos控制台上就可以看见这个项目的三个实例分布在两个不同集群内

微服务——Eureka和Nacos_第32张图片 微服务——Eureka和Nacos_第33张图片

  Nacos注册中心——NacosRule负载均衡

为里实现order-service远程调用user-service时优先选择本地集群,需要给order-service配置集群属性。

 然后重启order-service。就可以在nacos控制台看见order-service也在gz集群中了。

目前还是轮询访问,因为没有配置IRule.

配置负载均衡规则

微服务——Eureka和Nacos_第34张图片

如果这里的没有实现在同一个地区的集群访问,可能是因为nacos版本过高,我这里就是,用了服务器上最新的nacos版本,不再支持这里旧的ribbon的负载均衡策略设置。用来提供的低版本nacos就又可以了。 

 Spring Cloud Nacos 2021使用LoadBalancer + Nacos做负载均衡 - 简书

 我是因为写错了要访问的服务名称,所以不关云服务上的nacos版本的事情。

userserver: #要做配置的微服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则

nacosrule优先选择本地集群,在本地集群的多个实例中优先选择随机策略。

并且在本地集群没有实例时会选择其他集群的服务,并且会给出警告让运维及时启动本地集群里面挂的服务。

加了一个注解会一直报错

 The maximum number of tolerable server reconnection errors has been reached

com.alibaba.cloud

    spring-cloud-starter-alibaba-nacos-config

微服务——Eureka和Nacos_第35张图片

 Nacos注册中心——服务实例的权重设置

 微服务——Eureka和Nacos_第36张图片

微服务——Eureka和Nacos_第37张图片 置为0就会导致这个实例访问不了。

微服务——Eureka和Nacos_第38张图片

 

  Nacos注册中心——环境隔离

服务实例之间隔离之后就无法访问。Group是分组的意思,业务相关度高的服务可以放到一个组里面。

微服务——Eureka和Nacos_第39张图片

微服务——Eureka和Nacos_第40张图片

在nacos控制台可以看见有一个public的保留空间。原先的项目实例都在这个空间里面

微服务——Eureka和Nacos_第41张图片

 微服务——Eureka和Nacos_第42张图片

新建一个命名空间

微服务——Eureka和Nacos_第43张图片

 

 修改一个服务的命名空间

微服务——Eureka和Nacos_第44张图片

 然后重启order-service。

然后重新访问order-service就有如下错误:找不到可用实例

 微服务——Eureka和Nacos_第45张图片

  

 

Nacos和Eureka的对比

微服务——Eureka和Nacos_第46张图片

 nacos会将提供者划分为临时实例或者非临时实例。

非临时实例无响应时不会从列表剔除,而是等其回复健康。并且主动向消费者推送消息。

微服务——Eureka和Nacos_第47张图片

 微服务——Eureka和Nacos_第48张图片

 

你可能感兴趣的:(微服务,微服务,eureka,java,Nacos)