第二章 SpringCloudAlibaba之Nacos笔记

本文详细介绍了Nacos作为服务注册与发现、配置中心的使用,包括Nacos的安装启动、服务注册与发现的API操作,以及配置管理的多环境配置实现。此外,文章还探讨了Nacos集群部署的步骤,包括Windows和Linux环境,并分析了不同环境配置的优缺点。
摘要由CSDN通过智能技术生成

一、Nacos服务注册与发现

1、Nacos简介

Nacos是阿里开源的易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

通俗来说,Nacos是一个注册中心& 配置中心 ——作为注册中心,Nacos可用于替代Spring Cloud中的Eureka、Spring Cloud Zookeeper Discovery、Spring Cloud Consul Discovery;作为配置中心,Nacos可用于替代Spring Cloud Config、Spring Cloud Zookeper Config、Spring Cloud Consul Config。

服务发现的领域模型:

 

TIPS:其实从Nacos命名的由来:Dynamic Naming and Configuration Service 即可顾名思义了。

1.1、Nacos服务端安装&启动

前往 https://github.com/alibaba/nacos/releases ,下载安装包并解压。

1.2、Nacos支持三种部署模式

  • 单机模式 - 用于测试和单机试用。
  • 集群模式 - 用于生产环境,确保高可用。
  • 多集群模式 - 用于多数据中心场景。

1.3、单机模式下运行Nacos

Linux/Unix/Mac启动Standalone means it is non-cluster Mode

启动命令:. * sh startup.sh -m standalone

Windows启动

根据您的操作系统,到 bin 目录执行cmd startup.cmd或者双击startup.cmd文件,即可启动Nacos。

启动后,访问 http://127.0.0.1:8848/nacos 即可看到登录界面。

输入账号密码:nacos/nacos ,即可登录Nacos,并看到类似如下界面:

 

特别注意:

linux环境默认启动的是集群模式,所以如果启动单机模式,一定要添加参数-m standalone

1.4、集群模式下运行Nacos

集群模式下运行Nacos

https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

1)多集群模式

Nacos支持NameServer路由请求模式,通过它您可以设计一个有用的映射规则来控制请求转发到相应的集群,在映射规则中您可以按命名空间或租户等分片请求...

2)多网卡IP选择

当本地环境比较复杂的时候,Nacos服务在启动的时候需要选择运行时使用的IP或者网卡。Nacos从多网卡获取IP参考Spring Cloud设计,通过nacos.inetutils参数,可以指定Nacos使用的网卡和IP地址。目前支持的配置参数有:

ip-address参数可以直接设置nacos的ip

nacos.inetutils.ip-address=10.11.105.155

use-only-site-local-interfaces参数可以让nacos使用局域网ip,这个在nacos部署的机器有多网卡时很有用,可以让nacos选择局域网网卡

nacos.inetutils.use-only-site-local-interfaces=true

ignored-interfaces支持网卡数组,可以让nacos忽略多个网卡

nacos.inetutils.ignored-interfaces[0]=eth0

nacos.inetutils.ignored-interfaces[1]=eth1

preferred-networks参数可以让nacos优先选择匹配的ip,支持正则匹配和前缀匹配

nacos.inetutils.preferred-networks[0]=30.5.124.

nacos.inetutils.preferred-networks[0]=30.5.124.(25[0-5]|2[0-4]\\d|((1d{2})|([1-9]?\\d))),30.5.124.(2

1.5. 服务注册&发现和配置管理

服务注册

curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName'

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

关闭服务器Linux/Unix/Mac

sh shutdown.sh

1.6、如何自定义Nacos默认的账号密码?

默认启动的Nacos,所使用的数据库是Derby。而Derby是一款内嵌式数据库,因此本文所搭建的Nacos显然是不适用生产的,生产环境中的数据库又改如何配置呢?

1)修改nacos\conf目录下面application.properties配置文件

### If user MySQL as datasource:

spring.datasource.platform=mysql

db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=root

2)初始化数据库脚本

schema.sql、nacos-mysql.sql

如何搭建高可用集群?

2、使用Nacos实现服务注册与发现

1)新建项目springcloudalibaba-provider-user作为服务提供者

2)添加pom依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>
<!-- 加入springcloudalibaba支持 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <!--<version>Hoxton.SR3</version>-->
            <version>Greenwich.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3)添加配置application.properties

注意配置nacos注册中心地址:192.168.41.241:8848

server.port=8081
spring.application.name=springcloudalibaba-provider-user
spring.cloud.nacos.discovery.server-addr=192.168.41.241:8848
# Value range: 1 to 100. The bigger the value, the greater the weight
#spring.cloud.nacos.discovery.weight=1
# default value is ture
# ribbon.nacos.enabled=ture
management.endpoints.web.exposure.include=*

4)添加启动测试类ProviderUserApplication:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderUserApplication.class, args);
    }
    @RestController
    public class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值