nacos单机环境部署 windows

目录

一、下载nacos

二、修改配置,启动nacos

1.直接启动

2.后台启动

三、springcloud中配置nacos

代码目录结构

1.springcloud配置文件pom

2.order-nacos订单模块的配置

pom.xml

application.yml

3.stock-service库存模块的配置

4.代码

OrderApplication.java

OrderController.java

StockApplication.java

StockController.java

四、项目启动及运行


一、下载nacos

选择配套springcloud版本的的nacos下载

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

 windows环境下选zip包。下载后解压。

二、修改配置,启动nacos

1.直接启动

进入解压后的bin目录,编辑startup.cmd,修改set MODE行,为set MODE="standalone",保存。

双击startup.cmd或者以管理员运行。

可以在bin/logs中查看日志,看是否启动成功。

2.后台启动

用nssm工具,将nacos安装为后台服务。nssm使用参考以下链接。

使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法_nssm kibana_格格巫 MMQ!!的博客-CSDN博客

 启动后输入地址访问。用户名密码均为nacos。

http://192.168.1.15:8848/nacos/index.html

三、springcloud中配置nacos

代码目录结构

1.springcloud配置文件pom

项目整体配置确定springcloud版本,决定各个组件的版本。

只需关注<dependencyManagement>即可,此处代替了<parent>。

<modules>下面的模块是项目添加模块时自动添加的。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>stock</module>
        <module>order</module>
        <module>stock-nacos</module>
        <module>order-nacos</module>
    </modules>
    <groupId>com.wind.springcloud</groupId>
    <artifactId>alibaba</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>alibaba</name>
    <description>springcloudalibaba</description>
    <packaging>pom</packaging>
    <properties>
        <java.version>1.8</java.version>
        <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>
        <spring.boot.version>2.3.11.RELEASE</spring.boot.version>
        <spring.cloud.version> Hoxton.SR8</spring.cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!--        alibaba版本管理-->
            <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>
            <!--        springboot版本管理-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--        springcloud版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.order-nacos订单模块的配置

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>alibaba</artifactId>
        <groupId>com.wind.springcloud</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>order-nacos</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- nacos服务注册发现       -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

</project>

application.yml

服务注册到nacos默认使用application name的值

server:
  port: 8020
spring:
  application:
    name: order-service
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      discovery:
        username: nacos
        password: nacos
#        namespace: public #服务分类管理 默认public
#        ephemeral: false #永久实例 默认true 临时实例
#        service: 默认取${spring.application.name}
#        group: 更细的分类管理
#        weight: #负载均衡权重
#        metadata: 元数据 可以根据源码做扩展

3.stock-service库存模块的配置

pom.xml和订单模块一致,application.yml只需要port改为8021即可。

4.代码

OrderApplication.java

其中@LoadBalanced是nacos默认负载均衡调用。解析服务名获得ip,port

package com.wind.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:51
 */
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        RestTemplate restTemplate = builder.build();
        return restTemplate;
    }
}

OrderController.java

package com.wind.order.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:47
 */
@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add(){
        System.out.println("下单成功");
        String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        return "order success!" + msg;
    }

}

StockApplication.java

package com.wind.stock;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:51
 */
@SpringBootApplication
public class StockApplication {
    public static void main(String[] args) {
        SpringApplication.run(StockApplication.class,args);
    }
}

StockController.java

package com.wind.stock.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:47
 */
@RestController
@RequestMapping("/stock")
public class StockController {


    @Value("${server.port}")
    private String port;

    @RequestMapping("/reduct")
    public String reduct(){
        System.out.println("下单成功");
        return "reduct success!:"+port;
    }

}

四、项目启动及运行

项目启动后,服务注册到nacos。

浏览器直接调用接口。可以看到后台通过服务名调用另一个服务成功

猜你喜欢

转载自blog.csdn.net/Spring_possible/article/details/130719068