spring cloud Alibaba 服务发现Nacos学习笔记四

喜欢ヅ旅行 2022-12-15 14:24 293阅读 0赞

服务发现Nacos

  • 一、服务发现原理
  • 二、Nacos 下载安装
  • 三、将应用注册到Nacos
  • 四、服务发现的领域模型
  • 五、服务发现原数据

一、服务发现原理

1、现有架构问题:用户中心服务提供者变化,消费者无法请求,怎么办?

2、定义:消费者总能找到服务提供者的机制就叫服务发现

3、原理(用mysql类比)
在这里插入图片描述

  • 微服务启动就在服务发现组件插入一条记录,内容中心想要找到用户中心,只需要查找名字为user-center 并且状态为up的微服务(存在问题:每次查询都需要发送请求到服务发现组件,服务发现组件压力会十分大,且服务发现组件挂了,所有微服务就不能正常调用了)
  • 贴近生产服务发现机制,微服务会定时发送查询请求到服务发送组件,然后进行缓存,调用其他微服务则直接读本地缓存(提升性能,不用每次调用都发送请求到服务发送组件;且服务发送组件挂了,不会影响微服务之间调用,只是没办法更新)
    PS:假设微服务宕机了,但服务发现组件却无法得知,需要修改表结构
    在这里插入图片描述
  • 增加一个心跳字段,用户中心微服务会向服务发现组件定时发送心跳,告知还在运行,若用户中心微服务很久都没发送心跳,则服务发送组件默认认为该此服务已挂,就把状态标记为down,内容中心定时发送请求后,得知地址发生变化,就不再去调用挂掉的用户中心微服务实例

二、Nacos 下载安装

1、定义:服务发送组件,也是配置组件,解决服务A如何找到服务B,管理微服务配置

2、架构演进
在这里插入图片描述
3、搭建Nacos Server:

  • 下载 地址

PS:如何选择版本,和client、provider兼容,idea选择spring-cloud-alibaba-dependencies使用Ctrl+B打开文件,然后搜索nacos

在这里插入图片描述
在这里插入图片描述

  • 搭建:参考文档 ,按指引启动,即成功搭建单机版nacos,网页输入localhost:8848/nacos,输入nacos/nacos 账号/密码 进入管理控制台

三、将应用注册到Nacos

1、遵循三板斧

  • 加依赖


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery
  • 加注解:新版本不需要

  • 写配置(yml配置文件):

    spring:
    cloud:

    1. nacos:
    2. discovery: #nacos server地址
    3. server-addr: localhost:8848

PS:clean install 启动后,提示warn no service to register,加入以下配置

  1. spring:
  2. application:
  3. # 服务名称尽量用-,不用要_,更不要用特殊字符
  4. name: user-center

PS:重新启动,可到nacos控制台查看
在这里插入图片描述
2、验证内容中心总是能找到用户中心机制
在这里插入图片描述
启动用户中心、内容中心,访问http://localhost:8088/test2,即可得到以下信息

  1. [{
  2. "serviceId": "user-center",
  3. "host": "192.168.0.102",
  4. "port": 8888,
  5. "secure": false,
  6. "metadata": {
  7. "nacos.instanceId": "192.168.0.102#8888#DEFAULT#DEFAULT_GROUP@@user-center",
  8. "nacos.weight": "1.0",
  9. "nacos.cluster": "DEFAULT",
  10. "nacos.ephemeral": "true",
  11. "nacos.healthy": "true",
  12. "preserved.register.source": "SPRING_CLOUD"
  13. },
  14. "uri": "http://192.168.0.102:8888",
  15. "scheme": null,
  16. "instanceId": null
  17. }, {
  18. "serviceId": "user-center",
  19. "host": "192.168.0.102",
  20. "port": 8080,
  21. "secure": false,
  22. "metadata": {
  23. "nacos.instanceId": "192.168.0.102#8080#DEFAULT#DEFAULT_GROUP@@user-center",
  24. "nacos.weight": "1.0",
  25. "nacos.cluster": "DEFAULT",
  26. "nacos.ephemeral": "true",
  27. "nacos.healthy": "true",
  28. "preserved.register.source": "SPRING_CLOUD"
  29. },
  30. "uri": "http://192.168.0.102:8080",
  31. "scheme": null,
  32. "instanceId": null
  33. }]

四、服务发现的领域模型

在这里插入图片描述

  • namespace:可建开发环境、生产环境、测试环境,三个环境之间是隔离的
  • group:不同服务可以划分到一个组,默认为default_group(现有版本暂未使用)
  • service:微服务
  • cluster1:集群,如内容中心、用户中心可放在北京的机房和南京的机房,配置的时候,设置让北京机房的内容中心优先访问北京机房的用户中心
  • instance:微服务实例

在这里插入图片描述
PS:namespace需在nacos控制台配置好

五、服务发现原数据

1、定义:配置和服务的描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。
PS:spring cloud Alibaba 0.9.0版本服务级别、集群级别元数据暂未使用

2、作用:

  • 提供描述信息
  • 让微服务调用更加灵活,如提供微服务版本控制(V1只能访问V1;V2只能访问V2)
    在这里插入图片描述
    3、配置:
  • 通过控制台
  • 配置文件指定
    在这里插入图片描述
  • 版本控制:xxx

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读