栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloudAlibaba-Nacos 介绍、单机模式下搭建及基本使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloudAlibaba-Nacos 介绍、单机模式下搭建及基本使用

文章目录
  • 一、架构图及框架使用组件组件
    • 1.1.架构图
    • 1.2.组件
  • 二、Nacos介绍
    • 2.1.为什么是 Nacos?既然有了 Eureka、Consul、zookeeper,为什么还有 Nacos?
  • 三、nacos 能做什么?
  • 四、Nacos 服务端搭建
  • 五、Nacos client 服务端的搭建
  • 六、注册中心
  • 七、配置中心
  • 八、补充
  • 九、Nacos进阶


一、架构图及框架使用组件组件 1.1.架构图

1.2.组件
功能选择方案
分布式配置中心Springcloud config、zookeeper、Nacos
服务注册与发现Eureka、Nacos、Zookeeper
服务网关路由Zuul、springcloud gateway
服务调用Resttemplate、Ribbon、Fegin
负载均衡Ribbon
断路器Hytrix、Sentinel
分布式消息Rabbitmq、kafka、springcloud stream
二、Nacos介绍 2.1.为什么是 Nacos?既然有了 Eureka、Consul、zookeeper,为什么还有 Nacos?

a) Nacos 是 SpringCloudAlibaba 架构中最重要的组件。
b) Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提
供注册中心、配置中心和动态 DNS 服务三大功能。能够无缝对接 Springcloud、Spring、Dubbo
等流行框架。
c) nacos 和 eureka 功能对比

模块NacosEureka功能说明
注册中心服务治理,服务中心化注册
配置中心eureka 需 要 配 合springcloud config实现
配置动态刷新nacos 通过 netty 保持tcp 长链接进行推送,eureka需要配合mq实现配置动态刷新
可用区 az对服务集群划分不同区域,实现区域隔离,并提供灾难级自动切换
分组nacos 根据不同的业务、环境进行分组管理(namespace,group)
元数据提供服务标签数据(环境、服务标识)
权重nacos 提供权重设置,调整承载流量压力
健康检查nacos 提供服务端或者客户端发起的健康监测,eureka 是有客户端发起心跳
负载均衡均提供负载均衡策略,eureka 采用 ribbon

d) eureka 停止维护
e) nacos 支持 a(高可用)p(分区容错)和 c(一致性)p 的切换默认为 ap, eureka 仅支持ap,zookeeper 仅支持 cp

三、nacos 能做什么?

1、服务注册发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现,服务端可以通过 SDK 或者 Api 进行服务注册,相应的服务消费者可以使用 DNS 或者 Http 查找的方式获取服务列表。Nacos 同时提供对服务的实时健康检查,阻止想不健康的主机或服务发送请求,与 Eureka 类似 Nacos 也有友好的控制台界面。
2、动态 DNS 服务:
支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。
3、动态配置服务:
接触过 SpringCloud 应该对 config 有所了解,那么配置中心也就很好理解,Nacos 支持动态的配置管理,将服务的配置信息分环境分类别外部管理,并且支持热更新。不过与 Config 不同Nacos 的配置信息存储与数据库中,支持配置信息的监听和版本回滚。
4、服务及元数据管理:
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA(服务等级协议)以及最首要的 metrics 统计数据(默认不开启暴露需要修改配置)。可以搭建搭建 prometheus 采集 Nacos metrics 数据也可以搭建搭建 grafana 图形化展示 metrics 数据

四、Nacos 服务端搭建

1、下载地址:https://github.com/alibaba/Nacos/releases


第一个为了 linux 版本 第二个为 windows 版本
2、下载并解压后可以看到以下目录结构:

3、conf 中存放的是配置文件及服务启动所须的数据库文件


nacos 默认使用的数据库为内嵌的 cmdb,我们也可以创建本地数据库并修改配置文件指向
本地数据库即可(推荐),对 nacos 集群化有帮助。
4、基本命令(单机模式下启动):
启动命令:sh startup.sh -m standalone
关闭命令:sh shutdown.sh
5、启动后 访问 http://localhost:8848/nacos/#/login 默认账号及密码均为 nacos


登录后界面

五、Nacos client 服务端的搭建

1、引入依赖


	com.alibaba.cloud
	spring‐cloud‐alibaba‐nacos‐discovery

2、启 动 类 写 注 解 ( 也可 以 不 写 )@EnableDiscoveryClient

3、写配置文件 :

4、以上三步做完启动项目如何检查是否注册成功?

a) 方式一:服务启动后可以在 nacos 管理界面查看注册成功的服务。


b ) 方式二:可以通过发现客服端搜索实例名的形式查看服务是否注册成功,并查
看注册具体信息。


六、注册中心

1、无注册中心的:

a)从上面看出的缺点就是,在调用的时候,请求的 ip 地址和端口是硬编码的。若此时,服务提供方(order)服务部署的机器换了端口或者是更换了部署机器的 ip,那么我们需要修改代码重新发布部署.
b)假设我们的 order 服务压力过大,我们需要把 order 服务作为集群,那么意味着 order 是多节点部署,比如原来我们只有一台服务器,现在有多台服务器,那么作为运维人员需要在服务消费方进行手工维护一份注册表(容易出错)

2、有注册中心:

只需要写服务名即可进行调用,对应用集群化维护方便

3、nacos 的 namespace 和配置中心
a) 命名空间:相当于环境,开发环境 测试环境 生产环境 ,每个空间里面的配
置是独立的
默认的 namespace 是 public, nameSpace 可以进行资源隔离,比如我们 wechat 环境下的nameSpace 下的服务是调用不到 dev 的 NameSpace 下的微服务


证明:调整 outh 应用的 namespace 为 dev,wx_pa-api 应用的 namespace 为 wechat,通过wx_pa-api 的 http://127.0.0.1:8089/root/getServiceList 接口查询 outh 应用 发现返回值 list size为 0,所以证明 nameSpace 可以进行资源隔离


b) 配置管理:配置中心,根据命名空间区分创建不同的配置,Group 组,这个类
似我们的项目,比如日间手术系统、手卫生系统等, 就是不同的项目。Data ID 这个就是我们项目下面的配置文件

4.新建配置

七、配置中心

1、以 前 的 配 置 :

a) 每个应用会有不同的配置环境(开发环境、生产环境、测试环境…),并且
每个环境的配置会有所不同,我们以前会生成不同 application 文件,项目多起来后管理会变得很复杂。
b) 配置属性的修改每次我们都需要进行项目的重启。

2、引入配置中心主要是为了:

a) 配置属性的动态刷新
b) 配置文件的集中管理


3 3 、根据这幅图,微服务需要解决的问题

a)微服务怎么知道配置中心的地址 ?
b)微服务到底需要连接哪个环境 ?
c)怎么找到 nacos config 上的对应的配置文件 ?

方式:
a) 接入配置中心:添加依赖包 spring-cloud-alibaba-nacos-config


	com.alibaba.cloud
	spring‐cloud‐alibaba‐nacos‐config

b) 编写配置文件,需要写一个 bootstrap.yml 配置文件
配置解释:

i、spring.cloud.nacos.config.server-addr: localhost:8848 表示微服务怎么去找我的
配置中心
ii、spring.application.name=wx-pa-api 表示当前微服务需要向配置中心
iii、索要 wx-pa-api 的配置:
spring.profiles.active=prod 表示我需要向配置中心索要 wx-pa-api 的生产环境的配置索要文件的格式为${application.name}- ${spring.profiles.active}.${file-extension}
真正在 nacos 配置中心上 就是 wx-pa-api-prod.yml

八、补充

1、如果我们需要不停机改变我们的生产环境的某个值(例如文件保存地址)来控制业务逻辑。我们需要在对应的 Controller 上添加@RefreshScope 进行动态刷新
2、如果存在部分配置为开发环境、生产环境、测试环境等不同环境共通,我们只需在配置中心创建例如 wx-pa-api.yml 的配置文件。配置的优先级 精准配置 会覆盖 与通用配置 相同的配置,然后再和通用配置互补。
3、不同服务存在相同的配置:

a) 通过 spring.cloud.nacos.config.shared-config ,配置文件中增加:
#各个微服务共享的配置,注意越排到后面的公共配置 yml 优先级越高


b) 通过 spring.cloud.nacos.config.extension-configs(优先级高于shared-config)

九、Nacos进阶
文章名链接
服务注册中心—服务发现nacos服务注册中心—服务发现nacos
nacos案例SpringCloud+Seata+nacos案例(包含源码 Seata及nacos安装教程)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号