热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《SpringCloudAlibaba微服务架构》专题(二)SpringCloudAlibabaNacos之服务注册中心入门

文章目录1.Nacos简介1.1.为什么叫Nacos?1.2.Nacos是什么?1.3.Nacos能干嘛?1.4.去哪里下载Nacos以及

文章目录

  • 1.Nacos简介
    • 1.1.为什么叫Nacos?
    • 1.2.Nacos是什么?
    • 1.3.Nacos能干嘛?
    • 1.4.去哪里下载Nacos以及文档地址?
  • 2.Nacos的关键特性
    • 2.1.服务发现和服务健康监测
    • 2.2.动态配置服务
    • 2.3.动态 DNS 服务
    • 2.4.服务及其元数据管理
  • 3.环境要求
    • 3.1.预备环境准备
    • 3.2.依赖
  • 4.版本依赖关系
  • 5.nacos安装
    • 5.1.Windwos
    • 5.2.Linux
  • 6.环境搭建
    • 6.1.搭建springcloud-alibaba-nacos
    • 6.2.搭建springcloud-alibaba-provider服务提供者
    • 6.3.搭建springcloud-alibaba-consumer服务消费者


1.Nacos简介

1.1.为什么叫Nacos?

前四个字母分别为NamingConfiguration的前两个字母,最后的s为service

1.2.Nacos是什么?

nacos是第二代微服务SpringCloudAlibaba开源的一款注册中心和分布式配置中心组件,其功能上为第一代微服务SpringCloud中Eureka和Config的结合体。简而言之,Nacos可以实现分布式服务注册与发现和分布式配置中心功能。

Nacos官方文档: https://nacos.io/zh-cn/docs/what-is-nacos.html

1.3.Nacos能干嘛?

替代Eureka做服务注册中心;
替代Config做服务配置中心;

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1.4.去哪里下载Nacos以及文档地址?

Nacos各个版本下载地址
https://github.com/alibaba/nacos/tags

Nacos GitHub地址
https://github.com/alibaba/Nacos

Nacos官网
https://nacos.io/zh-cn/

Nacos文档地址
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

2.Nacos的关键特性

2.1.服务发现和服务健康监测

Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
动态配置服务

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

2.2.动态配置服务

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
在这里插入图片描述

2.3.动态 DNS 服务

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

Nacos 提供了一些简单的 DNS APIs 帮助您管理服务的关联域名和可用的 IP:PORT 列表

2.4.服务及其元数据管理

Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

Nacos 全景图如下图:
在这里插入图片描述
如 Nacos 全景图所示,Nacos 无缝支持一些主流的开源生态,例如

  • Spring Cloud
  • apache Dubbo and Dubbo Mesh
  • Kubernetes and CNCF。

使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

3.环境要求

3.1.预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
64 bit JDK 1.8+。
Maven 3.2.x+。

3.2.依赖

版本说明参考: https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

spring-cloud-dependencies.version: Spring Cloud Hoxton.SR3
spring-cloud.version: 2.2.2.RELEASE
spring-cloud-alibaba-version: 2.2.0.RELEASE
spring-boot-version: 2.2.5.RELEASE
nacos-version: 1.1.4

4.版本依赖关系

在这里插入图片描述

5.nacos安装

nacos的安装和部署、启动都可参照nacos官方文档,这里我就以Windows环境为例,Windwos平台下如果要使用nacos,需要先去下载nacos-server安装包,下载完成后解压,双击bin目录下面的startup.cmd启动即可。

nacos-server官网下载: https://github.com/alibaba/nacos/releases/

5.1.Windwos

nacos-server 1.2.1 Windows环境
在这里插入图片描述
在这里插入图片描述

注意: windwos环境下启动nacos双击start.up即可。且windows环境默认是以单机模式启动。

Windows环境启动

cmd startup.cmd 或者双击 startup.cmd 文件

5.2.Linux

nacos-server 1.2.1 Linux 环境

注意: linux环境默认是以集群机模式启动的,所以如果使用的是linux,需要执行以下命令,表示单机模式启动。

在这里插入图片描述

Linux/Unix/Mac环境启动

sh startup.sh -m standalone

启动成功后如图:
在这里插入图片描述
初始访问地址: http://127.0.0.1:8848/nacos/index.html
账号密码: nacos/nacos
在这里插入图片描述

在这里插入图片描述

6.环境搭建

以订单(Order)调用商品(Product)为例,分别创建父工程springcloud-alibaba-nacos、子工程springcloud-alibaba-providerspringcloud-alibaba-consumer

6.1.搭建springcloud-alibaba-nacos


  • pom.xml


<project xmlns&#61;"http://maven.apache.org/POM/4.0.0"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><groupId>com.bruce.springcloud-alibaba-nacosgroupId><artifactId>springcloud-alibaba-nacosartifactId><packaging>pompackaging><version>1.0-SNAPSHOTversion><modules><module>springcloud-alibaba-providermodule><module>springcloud-alibaba-consumermodule>modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-dependenciesartifactId><version>2.2.5.RELEASEversion><type>pomtype><scope>importscope>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-dependenciesartifactId><version>Hoxton.SR3version><type>pomtype><scope>importscope>dependency><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-alibaba-dependenciesartifactId><version>2.2.1.RELEASEversion><type>pomtype><scope>importscope>dependency>dependencies>dependencyManagement>project>

6.2.搭建springcloud-alibaba-provider服务提供者


  • pom.xml


<project xmlns&#61;"http://maven.apache.org/POM/4.0.0"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud-alibaba-nacosartifactId><groupId>com.bruce.springcloud-alibaba-nacosgroupId><version>1.0-SNAPSHOTversion>parent><modelVersion>4.0.0modelVersion><artifactId>springcloud-alibaba-providerartifactId><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId><exclusions><exclusion><artifactId>spring-boot-starter-tomcatartifactId><groupId>org.springframework.bootgroupId>exclusion>exclusions>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-undertowartifactId>dependency><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId>dependency>dependencies><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>

  • application.yml

server:port: 8715
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848enabled: trueapplication:name: nacos-product

  • 启动类AppProvider

package com.bruce;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** &#64;BelongsProject: springcloud-alibaba-nacos* &#64;BelongsPackage: com.bruce* &#64;CreateTime: 2021-02-18 13:08* &#64;Description: TODO*/&#64;SpringBootApplication
public class AppProvider {public static void main(String[] args) {SpringApplication.run(AppProvider.class);}
}

  • 启动并测试

在这里插入图片描述

  • 查看注册列表

在这里插入图片描述

6.3.搭建springcloud-alibaba-consumer服务消费者


  • pom.xml


<project xmlns&#61;"http://maven.apache.org/POM/4.0.0"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&#61;"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud-alibaba-nacosartifactId><groupId>com.bruce.springcloud-alibaba-nacosgroupId><version>1.0-SNAPSHOTversion>parent><modelVersion>4.0.0modelVersion><artifactId>springcloud-alibaba-consumerartifactId><dependencies><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId><exclusions><exclusion><artifactId>spring-boot-starter-tomcatartifactId><groupId>org.springframework.bootgroupId>exclusion>exclusions>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-undertowartifactId>dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId>dependency>dependencies><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>

  • application.yml

server:port: 8710
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848enabled: trueapplication:name: nacos-order

  • 启动类AppConsumer

package com.bruce;/*** &#64;BelongsProject: springcloud-alibaba-nacos* &#64;BelongsPackage: com.bruce* &#64;CreateTime: 2021-02-18 13:16* &#64;Description: TODO*/
&#64;SpringBootApplication
public class AppConsumer {public static void main(String[] args) {SpringApplication.run(AppConsumer.class);}
}

  • 启动并测试

在这里插入图片描述

  • 查看注册列表
    在这里插入图片描述
    在这里插入图片描述

推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 使用Docker安装和运行Nexus
    本文介绍了使用Docker安装和运行Nexus的方法,包括docker-compose.yml配置和启动时可能出现的权限问题解决方法。同时提供了登录控制台验证安装的地址和登录信息。 ... [详细]
  • Android图形架构学习笔记(待修改)
    以下简单总结来自Android官网,稍作总结:https:source.android.google.cndevicesgraphics概览Andr ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
author-avatar
古台山_683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有