SpringCloud笔记(三)——Nacos

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 SpringCloud笔记(三)——Nacos,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Nacos

学习视频链接:
黑马程序员:https://www.bilibili.com/video/BV1LQ4y127n4

1、认识与安装nacos

什么是nacos?

Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。

官方介绍是这样的:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

官方网址:http://nacos.io

nacos安装

1、先到nacos的GitHub官网进行下载:https://github.com/alibaba/nacos/tags

请添加图片描述

2、下载完成后,点击解压到我们方便找到的路径当中

请添加图片描述

3、在命令行当中启动bin文件夹当中的startup.cmd

startup.cmd -m standalone

请添加图片描述

4、在浏览器中输入http://192.168.17.1:8848/nacos/index.html (默认的账号密码都是nacos)

请添加图片描述

如果需要修改端口,在conf文件夹当中用记事本打开application.properties文件,找到server.port修改即可
请添加图片描述

2、服务注册

1、在父工程中添加spring-cloud-alilbaba的管理依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

2、添加nacos的客户端依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3、在yml配置文件当中配置naco服务地址

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

请添加图片描述

3、Nacos服务分级存储模型

请添加图片描述

关于服务跨集群调用问题

  • 服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
  • 本地集群不可访问时,再去访问其它集群
spring
    cloud:
      nacos:
        server-addr: localhost:8848 #nacos服务地址
        discovery:
            cluster-name: HZ #集群名称

请添加图片描述

如果没有定义集群默认默认就是归属本地

Nacos服务分级存储模型

  • 一级是服务,例如userService
  • 二级是集群,例如杭州/上海
  • 三级是实例,例如杭州机房的某台部署了userService的服务器

设置实例的集群属性方法:

在配置文件中添加spring.cloud.nacos.dicovery.cluster-name属性即可

4、NacosRule负载均衡

在没开启NacosRule负载均衡之前,Nacos默认使用轮询的方式在各个服务器当中进行访问。

配置NacosRule:

userService #配置服务名称
  ribbon:
    NFloadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #开启NacosRule负载均衡
  • NacosRule负载均衡默认同集群服务实例优先
  • NacosRule确定了可用实例后,访问方式为随机访问
  • 如果跨集群访问会有警告信息

5、服务实例的权重设置

目的:在服务器设备性能好的机器上多承担一些用户请求,性能差的少承担一些用户请求

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高!

配置方式:

1、在Nacos控制台选中实例后面的编辑按钮

请添加图片描述

2、将权重设置为你想要的大小(0-1)即可(越小访问的几率也越小)

请添加图片描述

6、环境隔离配置

Nacos管理台有一个单独的菜单”命名空间”,里面默认存在一个名为”public” 的默认命名
空间,我们在使用Nacos时不管是作为注册中心还是配置中心,都是作用在该命名空间之下
的,那么这个命名空间到底起着什么作用呢?其实Nacos基于Namespace帮助用户逻辑隔离
多个命名空间,这可以帮助用户更好的管理测试、预发、生产等多环境服务和配置,让每个环
境的同一个配置(如数据库数据源)可以定义不同的值。

让我们先来看看隔离之前的配置:

开启两个服务分别开启了orderService和userService,此时在nacos控制台的界面为;

请添加图片描述

到nacos控制台新建一个命名空间名为dev

请添加图片描述

配置orderService环境隔离:

cloud:
  nacos:
    server-addr: localhost:8848 # nacos服务地址
    discovery:
      namespace: 7712e234-2a11-4bd6-a5ba-e12caedef75a #dev环境,此字符串为nacos控制台新建命名空间时生成的id

重启服务之后,nacos控制台显示为:

请添加图片描述
请添加图片描述

可以发现,orderService被分组到了dev,此时接口调用会发现orderService无法调用userService,提示服务器错误
请添加图片描述

圈红翻译:负载平衡器没有可用于客户端的服务器:userservice


可知

  1. namespace用来做环境隔离
  2. 每个namespace都有唯一id
  3. 不通namespace下的服务不可见

7、Nacos、Eureka

相同点

  1. 都支持服务注册和服条拉取
  2. 都支持服务提供者心跳方式做健康检测

区别

  1. Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  2. 临时实例心跳不正常会被剔除,非临时实例则不会被
    剔除
  3. Nacos支持服务列表变更的消息推送模式,服务列表
    更新更及时
  4. Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/147349.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!