当前位置: 首页 > news >正文

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

p

文章目录

  • 一、服务中心
  • 二、Nacos注册中心

一、服务中心

在上一章我们实现了微服务拆分,并且通过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
在这里插入图片描述

http://www.lryc.cn/news/399929.html

相关文章:

  • Linux重要知识点
  • Unity宏和编辑器
  • 计算机网络——网络层(概念及IP地址划分)
  • 【JVM实战篇】内存调优:内存泄露危害+内存监控工具介绍+内存泄露原因介绍
  • CVE漏洞爬虫脚本
  • 如何搭建互联网医院系统源码?医疗陪诊APP开发实战详解
  • 高通平台android的Framework开发遇到的一些问题总结
  • 基于modbus tcp通讯的雷赛导轨控制器调试软件
  • 阿里云产品流转
  • GO语言中的接口(interface)
  • 模拟电路再理解系列(2)-电源滤波电路
  • uniapp使用多列布局显示图片,一行两列
  • 近期几首小诗汇总-生活~卷
  • 超时导致SparkContext构造失败的问题探究
  • 【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)
  • Nginx 负载均衡详解
  • Unity3D开发之传送带实现
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(二)-支持高分辨率视频直播应用
  • python的私有属性和数据封装
  • 一文学会鉴别“套壳”ChatGPT模型
  • Docker基本管理1
  • python-28-零基础自学python-json存数据、读数据,及程序合并
  • Excel第30享:基于辅助列的条件求和
  • Java查看RSA密钥的ASN1结构
  • 友思特方案 | 低延迟GigE Vision解决方案:用于红外设备、医疗和工业级探测面板
  • 网络安全策略:优先防护而非溯源的重要性
  • ES6 Iterator 与 for...of 循环(五)
  • typora删除多余图片
  • 【ceph】ceph-mon重新选举的情况
  • PopClip(Mac 划词增强工具)值得购买吗?