本文介绍spring cloud 集成 nacos案例

本文介绍spring cloud 集成 nacos案例

官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
单机部署:

1.git克隆项目
git clone https://github.com/alibaba/nacos.git

2.进入根目录
cd nacos/

3.maven编译
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

3.进入目录
cd distribution/target/nacos-server-${version}/nacos/bin1
注意${version} 根据自己选择的版本

单机运行 后面加 -m standalone

4.启动服务
Linux/Unix/Mac环境:sh startup.sh -m standalone
win环境: cmd startup.cmd

启动后打印–

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

启动成功后,访问打印的ip,默认的端口为8848

默认账号:nacos
默认密码:nacos

接下来介绍集成nacos代码:

e:2#s-0;jHjd

集成nacos

发布配置:
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=demo-nacos.yml&group=DEFAULT_GROUP&content=useLocalCache=true"

配置中心代码

1.pom文件

<properties>
        <java.version>11</java.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <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-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2.配置文件 bootstrap.yml

spring:
  application:
    name: demo-nacos
  cloud:
    nacos:
      #配置中心
      config:
        #nacos地址
        server-addr: 127.0.0.1:8848
        #配置文件狗追扩展名,支持yml和properties,默认为properties
        file-extension: yml
        #命名空间,默认为public,命名空间用于区分不同环境,这里的值是在控制台创建时的id,可以手工输入也可以自动生成
        namespace: df70392d-c0c8-43ca-9045-688880e572f6
        #分组名在同一个命名空间内的分组名称
        group: demo-nacos
      #注册中心
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: df70392d-c0c8-43ca-9045-688880e572f6
        group: demo-nacos
  profiles:
    # 环境,用于区分相同分组的不同环境
    active: dev
server:
  port: ${PORT:8090}

其中命名空间和分组的作用都是用于分割不同环境的

3.代码,启动类啥都不用加

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
	//nacos上面存的值,默认false
    @Value("${useLocalCache:false}")
    private boolean useLocalCache;
	
    //用于获取注册的服务信息
    @Autowired
    private DiscoveryClient discoveryClient;
	
    //用于获取服务的环境信息
    @Autowired
    private Environment environment;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }

    @GetMapping("/getConfig")
    public List<String> getConfig(){
        return discoveryClient.getServices();
    }

    @GetMapping("/getPort")
    public String getPort(String s){
        return "我是"+environment.getProperty(s);
    }
}

4.测试

1.执行
curl localhost:8081/config/get
2.修改配置值继续执行
注意:怎么上传配置,可以去控制台操作,也可以用nacos提供的api操作,下面是官网的一个例子
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true

注册中心测试

1.pom文件,增加一点

	<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
	<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <!--spring cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

2.配置文件,增加了feign的配置

spring:
  application:
    name: demo-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: df70392d-c0c8-43ca-9045-688880e572f6
        group: demo-nacos
server:
  port: ${PORT:8090}

# feign配置
feign:
  sentinel:
    # 为feign整合sentinel
    enabled: true
  httpclient:
    # 让feign使用apache httpclient做请求;而不是默认的urlconnection
    enabled: true
    # feign的最大连接数
    max-connections: 200
    # feign单个路径的最大连接数
    max-connections-per-route: 50

3.启动类增加扫描注解

@SpringBootApplication
@EnableFeignClients(value="com.git.demoserver.feign")

4.代码

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Autowired
    private ApiService apiService;


    @GetMapping("/getConfig")
    public List<String> getConfig(){
        return apiService.getServices();
    }

    @GetMapping("/getPort")
    public String getPort(){
        return "我是"+apiService.getPort("server.port");
    }
}
@FeignClient(name = "demo-nacos")
public interface ApiService {
    @RequestMapping(method=RequestMethod.GET,value = "/config/getConfig")
    List<String> getServices();

    @RequestMapping(method=RequestMethod.GET,value = "/config/getPort")
    String getPort(@RequestParam(name="s",required = true) String s);
}

5.测试同上

配置和服务信息都可以去控制台查看

小结:

整体流程和一般的springcloud差不多,config直接和注册中心一起了,nacos基本用法就这样

参考文章nacos官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值