SpringCloud第三篇(服务中心与OpenFeign)

p

一、服务中心

在上一章我们实现了微服务拆分,并且通过Http请求实现了跨微服务的远程调用。不过这种手动发送Http请求的方式存在一些问题。
试想一下,假如商品微服务被调用较多,为了应对更高的并发,我们进行了多实例部署,如图:
在这里插入图片描述
此时,每个item-service的实例其IP或端口不同了。为了解决上述问题,就必须引入注册中心的概念了,接下来我们就一起来分析下注册中心的原理。

注册中心原理
在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下:
在这里插入图片描述
流程如下:

  • 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
  • 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
  • 调用者自己对实例列表负载均衡,挑选一个实例
  • 调用者向该实例发起远程调用

当服务提供者的实例宕机或者启动新实例时,调用者如何得知呢?

  • 服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)
  • 当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除
  • 当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表
  • 当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表

二、Nacos注册中心

官方网站如下:https://nacos.io/en/
在这里插入图片描述
我们基于Docker来部署Nacos的注册中心,
1,首先我们要准备MySQL数据库表,用来存储Nacos的数据。由于是Docker部署,所以大家需要将资料中的SQL文件导入到你Docker中的MySQL容器中:
在这里插入图片描述
2,将nacos文件夹上传至Liunx系统:
在这里插入图片描述
3,其中的nacos/custom.env文件中如下,有一个MYSQL_SERVICE_HOST也就是mysql地址,需要修改为你自己的虚拟机IP地址:

PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=192.168.88.128
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=123
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

4,然后,将课前资料中的nacos目录上传至虚拟机的/root目录。
进入root目录,然后执行下面的docker命令:

docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

5,启动完成后,访问下面地址:http://192.168.88.128:8848/nacos/,注意将192.168.88.128替换为你自己的虚拟机IP地址。
首次访问会跳转到登录页,账号密码都是nacos
在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 00:44:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 00:44:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 00:44:02       58 阅读
  4. Python语言-面向对象

    2024-07-14 00:44:02       69 阅读

热门阅读

  1. ArcGIS Pro SDK (九)几何 2 坐标

    2024-07-14 00:44:02       21 阅读
  2. ls命令学习记录2

    2024-07-14 00:44:02       21 阅读
  3. 无人机在应急救援中的几种应急方案

    2024-07-14 00:44:02       19 阅读
  4. compile gettext with vs

    2024-07-14 00:44:02       19 阅读
  5. 使机器人在执行任务倒快递

    2024-07-14 00:44:02       18 阅读