无敌的服务注册中心Spring CloudAlibaba Nacos不进来看一看吗?

目录​​​​​​​

1、Nacos概述

2、Nacos安装运行

安装

运行 

 3、Nacos作为服务注册中心

 服务提供者order-service

服务消费者user-service

 4、Nacos作为配置中心

集群负载均衡配置

Data/Service+Group+Namespace关系

Namespace

Group

Service/Data

Instance

5、常用注册中心的对比

CAP理论

Nacos和其他注册中心比较

6、Nacos集群和持久化

7、Linux环境下进行Nacos配置

安装并运行


1、Nacos概述

Nacos支持发现配置管理几乎所有类型的服务。其Key features:Service Discovery And Service Health Check、Dynamic configuration management、Dynamic DNS service、Service governance and metadata management

官网 

2、Nacos安装运行

安装

官网下载毕竟在国外网站,下载很慢。准备nacos1.4链接,请自取:

链接:https://pan.baidu.com/s/1wyLqnVRi6si_DOYJHmDm8g?pwd=pqmy 
提取码:pqmy

官网nacos2.2.3版本https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.zip

运行 

直接将压缩包解压到非中文目录,进入bin目录运行cmd命令:startup.cmd -m standalone

 启动成功后直接访问:http://127.0.0.1:8848/nacos,默认账号和密码:nacos

 登录成功

 3、Nacos作为服务注册中心

父工程cloud-demo

  • pom.xml
<!-- spring-cloud-alibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

 服务提供者order-service

  • pom.xml
<!-- spring-cloud-starter-alibaba-nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  • application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址

服务消费者user-service

  • pom.xml
<!-- spring-cloud-starter-alibaba-nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
  • application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: user-service
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址

nacos注册进两个服务

借助apiPost自测/order/{orderId}和/user/{id}nacos内置了ribbon采用默认的轮询策略。

 4、Nacos作为配置中心

集群负载均衡配置

application.yml配置集群名称cluster-name

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: user-service
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      discovery:
        cluster-name: HZ   # 杭州集群

 同优先级集群配置轮询规则

user-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

 设置请求频率权重,权重越大,访问比率越高。权重值可以设置0-1之间。

Data/Service+Group+Namespace关系

Namespace实现了环境隔离,nacos可以有多个Namespace。不同Namespace的服务互相不可见。默认情况下,Service/Data、Group在public的Namespace下。

Namespace

 application.yml给指定命名控制配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      discovery:
        cluster-name: HZ  # 杭州集群
        namespace: d8aa7768-0c2e-4a31-b4ef-f61d0a1bc523  # 命名空间

 通过apipost发送localhost:8080/order/101请求跨数据库访问用户出现错误。

Group

 

Service/Data
  • 文件DataId为什么要遵循这种写法?

nacos在读取这个文件Id遵循最终公式:

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

  • 文件配置热更新

在具体的接口Controller上加@RefreshScope,通过注入@Value("${pattern.dateformat}")获取yaml或properties配置文件内容。nacos内目前只支持yaml或properties两种格式的配置文件。

通过自定义nacos热部署类通过@Autowired注入自定义类并getXxx属性方法。

config/MyNacosConfigration

@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class MyNacosConfigration {

    private String dateformat;

}
  • 环境共享

在bootstrap.yaml文件指定userservice服务是dev环境,但是服务端口8081、8082、8083。其中8082节点userservice是test环境。只要包括userservice的内容都能从nacos里读取。

读取nacos配置文件优先级的公式:

nacos:[实例名称]-[profile].[后缀] > nacos:[实例名称].[后缀] > local:application.yml

Instance

作为nacos中的服务实例分为临时实例和非临时实例。

  • 临时实例:当服务宕机停止一段时间后从nacos的服务列表中剔除服务实例。
  • 非临时实例:当服务宕机后停止一段时间不会从nacos的服务列表中剔除服务实例。

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      discovery:
        cluster-name: HZ  # 杭州集群
        namespace: d8aa7768-0c2e-4a31-b4ef-f61d0a1bc523  # 命名空间
        ephemeral: false  # false非临时实例   true临时实例

5、常用注册中心的对比

CAP理论

C(Consistency):强一致性

A (Avalibility):可用性

P(Partition Tolerance):分区容忍性

CAP描述的是一个分布式系统最多只能满足CAP中的两个条件,不可能同时满足三个条件

Nacos和其他注册中心比较

Nacos

Zookeeper

Eureka

Consul

CAP

CP+AP

CP

AP

CP

C一般是保证在一定时间内,集群中的各个节点会达到较强的一致性,会牺牲一些响应时间;A是系统一直处于可用状态,所有的请求都会被响应。

CP保证一致性;AP保证可用性。

6、Nacos集群和持久化

官网nacos集群架构图

 集群部署的过程:所有发出的请求经过nginx负载均衡分别转发到nacos集群服务的每一个节点上。每一个nacos服务实例连接mysql有主从节点的数据库集群上,以达到数据的持久化。Nacos在单机模式默认数据库Derby

我们准备一个集群结构:

依次修改nacos1、nacos2、nacos3的文件nacos1\conf

nginx/conf文件修改监听端口和代理端口

 多节点的nacos集群效果简单看一下哈~

Nacos集群

在实际企业中Nginx采用反向代理,nginx服务器设置一个域名。而Nacos采用一个节点部署到一台服务器上。

7、Linux环境下进行Nacos配置

安装并运行

准备了Nacos1.4版本,可以自取链接~

链接:https://pan.baidu.com/s/1-E4MW0y7k26TC8HjfslPVw?pwd=lqkb 
提取码:lqkb

官网nacos2.2.3版本,可以自行下载~

https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz

解压包

tar -zxvf nacos-server-1.4.1.tar.gz
# 删除安装包
rm -rf nacos-server-1.4.1.tar.gz

进入nacos/bin目录输入命令:sh startup.sh -m standalone启动。账号和密码:nacos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Husp0707

你的小小点赞、关注是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值