SpringCloud Alibaba使用(一) - Nacos服务注册、配置中心、集群和持久化

SpringCloud Alibaba使用(一) - Nacos服务注册、配置中心、集群和持久化
SpringCloud Alibaba使用(二) - sentinel 流控规则、降级规则、热点key限流、系统规则、@SentinelResource
SpringCloud Alibaba使用(三) - sentinel fallback整合ribbon+openFeign 服务熔断功能 规则持久化
SpringCloud Alibaba使用(四) - seata分布式事务

一.介绍 SpringCloud Alibaba Nacos

centos安装文件 mysql5.7.29、nginx1.9.9、jdk1.8.251、nacos1.2.1

官方文档
中文文档
1.介绍
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
2. 主要功能
在这里插入图片描述
Nacos就是注册中心+配置中心的组合
Nacos = Eureka+Config+Bus
在这里插入图片描述

二.安装并运行Nacos

Nacos下载地址
在这里插入图片描述
解压安装包,直接运行bin目录下的startup.cmd
命令运行成功后直接访问http://localhost:8848/nacos
在这里插入图片描述
默认账号密码都是nacos
在这里插入图片描述
安装成功

三.Nacos作为服务注册中心演示

1.新建基于Nacos的服务提供者

alibaba-provider-payment9001 alibaba-provider-payment9002

  1. pom
 <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
    </dependencies>
  1. yml
server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
        ip: localhost  #配置地址
management:
  endpoints:
    web:
      exposure:
        include: '*'
  1. 启动类
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderNacosMain9001 {

    public static void main(String[] args) {
        SpringApplication.run(ProviderNacosMain9001.class,args);
    }
}
  1. 业务类
@RestController
@Slf4j
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        System.out.println("运行");
        return "serverPort: "+ serverPort+"\t id"+id;
    }
    @GetMapping(value = "/payment/nacos")
    public String getPayment2()
    {
        return "333333";
    }
}

执行 成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.新建基于Nacos的服务消费者

  1. pom
<dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


  1. yml
server:
  port: 83
spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
service-url:
  nacos-user-service: http://nacos-payment-provider



  1. 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderNacosMain83 {

    public static void main(String[] args) {
        SpringApplication.run(OrderNacosMain83.class,args);
    }
}
  1. RestTemplate config
@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced //给 RestTemplate 实例添加 @LoadBalanced 注解,开启 @LoadBalanced 与 Ribbon 的集成:
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }

}
  1. 业务类
   @RestController
    @Slf4j
    public class OrderNacosController
    {
        @Resource
        private RestTemplate restTemplate;

        @Value("${service-url.nacos-user-service}")
        private String serverURL;

        @GetMapping(value = "/consumer/payment/nacos/{id}")
        public String paymentInfo(@PathVariable("id") Long id)
        {
            return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
        }

}

运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

四.Nacos作为服务配置中心演示(config)

在这里插入图片描述

1.新建 alibaba-config-nacos-client9101

  1. pom
 <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <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>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

  1. bootstrap.yml
    在这里插入图片描述
server:
  port: 9101
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
        ip: localhost
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: bb332b46-5aa0-4f00-b3f2-fa6ed71a0749
#${spring.application.name}-${spring.profile.active}.${file-extension}
  1. application.yml
spring:
  profiles:
    active: test
  1. 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigMain9101 {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigMain9101.class,args);
    }
}
  1. 业务类
@RestController
@RefreshScope //配置自动刷新
public class ConfigclientController {

    @Value("${config.version}")
    private String configVersion;

    @GetMapping("/config/version")
    public String getConfigVersion() {
        return configVersion;
    }
}

2.在Nacos中添加配置信息

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按照官方文档的要求规则为:

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

prefix默认为spring.application.name的值
spring.profile.active既为当前环境对应的profile,可以通过配置项spring.profile.active
file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension配置
在这里插入图片描述

运行 http://localhost:9101/config/version
在这里插入图片描述
nacos上修改
在这里插入图片描述
结果
在这里插入图片描述

五.Group方案

1.nacos新建配置

在这里插入图片描述
在这里插入图片描述

2.增加bootstrap.yml配置

server:
  port: 9101
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
        ip: localhost
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        group: test_GROUP  #分组
#${spring.application.name}-${spring.profile.active}.${file-extension}

运行结果
在这里插入图片描述

六.Namespace方案

1.nacos新建配置

在这里插入图片描述
回到服务管理-服务列表查看,新增
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.增加bootstrap.yml配置

server:
  port: 9101
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
        ip: localhost
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: bb332b46-5aa0-4f00-b3f2-fa6ed71a0749
        group: test_GROUP
#${spring.application.name}-${spring.profile.active}.${file-extension}

3.修改application.yml配置

spring:
  profiles:
    active: dev

在相同的空间命名,相同的Data Id下,寻找不同的分组(group)
结果
在这里插入图片描述

七.Nacos集群和持久化配置

Nacos支持三种部署模式
1.单机模式 - 用于测试和单机试用。
2.集群模式 - 用于生产环境,确保高可用。
3.多集群模式 - 用于多数据中心场景。

Nacos默认自带的是嵌入式数据库derby,Nacos持久化配置,就需要derby到mysql切换配置步骤

要求:
在这里插入图片描述

1.windows配置

在这里插入图片描述
官网要求仅支持mysql 5.6.5以上,安装
在这里插入图片描述
1.在 D:\development\nacos\conf 下找到 nacos-mysql.sql 导入到mysql数据库
在这里插入图片描述
2.application.properties文件添加数据库配置

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow

2.linux配置

linux安装
集群需要:1个nginx+3个nacos注册中心+1个mysql

2.1.安装nacos

下载
在这里插入图片描述

放入linux后解压

tar -zxvf nacos-server-1.2.1.tar.gz

在这里插入图片描述
进入bin文件,并备份startup.sh

cp startup.sh startup.sh.bk

在这里插入图片描述
移动

mv nacos /usr/local/nacos

2.2.安装mysql5.7

linux安装mysql5.7
运行

service mysql start

2.3.nginx 安装及配置

linux CentOS7 64位 nginx 安装及配置

2.4.集群配置步骤

2.4.1.nacos配置
2.4.1.1.application.properties配置
cd /usr/local/nacos/conf/
vim application.properties


//添加
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

重启

 ./shutdown.sh 
startup.sh -m standalone
2.4.1.2.Linux服务器上nacos的集群配置cluster.conf

在这里插入图片描述
复制重命名cluster.conf

[root@localhost conf]# cp cluster.conf.example cluster.conf

hostname -I

[root@localhost conf]# vim cluster.conf

在这里插入图片描述

2.4.1.3.编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端
cd /usr/local/nacos/bin/
vim startup.sh

PORT=$OPTARG
-Dserver.port=${PORT}

在这里插入图片描述
在这里插入图片描述
中间的修改处2(一台机器上面JVM参数大小有限):
修改

 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn1024k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=320m"


执行

[root@localhost bin]# ./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555



进入链接

http://192.168.2.100:3333/nacos/index.html
http://192.168.2.100:4444/nacos/index.html
http://192.168.2.100:5555/nacos/index.html

在这里插入图片描述
查看运行个数

ps -ef|grep nacos|grep -v grep|wc -l
2.4.2.Nginx的配置,由它作为负载均衡器

linux CentOS7 64位 nginx 安装及配置

2.4.2.1.修改nginx的配置文件


cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bk
//修改
vim nginx.conf



//添加至
#gzip  on;
upstream cluster{                                                        
 
    server 127.0.0.1:3333;
    server 127.0.0.1:4444;
    server 127.0.0.1:5555;
}
server{
                          
    listen 1111;
    server_name localhost;
    location /{
         proxy_pass http://cluster;
                                                        
    }

在这里插入图片描述
执行

[root@localhost sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf

cd /usr/local/nginx/sbin
./nginx
2.4.3.测试通过nginx访问nacos

在这里插入图片描述

2.4.4.多集群模式各启动

集群需要:1个nginx+3个nacos注册中心+1个mysql

#mysql启动
service mysql start   

#nacos 集群启动
cd /usr/local/nacos/bin/
./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555

#查看nacos运行个数
ps -ef|grep nacos|grep -v grep|wc -l

#启动nginx
cd /usr/local/nginx/sbin
./nginx //启动nginx

http://192.168.2.100:3333/nacos/index.html
http://192.168.2.100:4444/nacos/index.html
http://192.168.2.100:5555/nacos/index.html

#nginx测试
http://192.168.2.100:1111/nacos/index.html
在这里插入图片描述
成功

2.4.5.集群测试

用9101测试

2.4.5.1.bootstrap.yml修改
server:
  port: 9101
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        #server-addr: localhost:8848 #服务注册中心地址
        server-addr: 192.168.2.100:1111
        ip: localhost
      config:
        #server-addr: localhost:8848 #配置中心地址
        server-addr: 192.168.2.100:1111
        file-extension: yaml #指定yaml格式的配置
        #group: test_GROUP
        #namespace: bb332b46-5aa0-4f00-b3f2-fa6ed71a0749
#${spring.application.name}-${spring.profile.active}.${file-extension}
2.4.5.2.新增配置 (http://192.168.2.100:1111/nacos/index.html)

在这里插入图片描述

2.4.5.3.mysql查询插入

在这里插入图片描述

2.4.5.4.启动9101

成功
在这里插入图片描述
修改配置
在这里插入图片描述
ok

3.问题处理

3.1.启动nacos集群 出现bug

在这里插入图片描述
解决
给虚拟机扩容
在这里插入图片描述
硬盘改60GB
在这里插入图片描述
内存改2G
在这里插入图片描述

七.代码下载

代码下载

END

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值