nacos安装配置和单机部署教程

文章正文
发布时间:2025-05-12 02:07

首先说明:次教程是针对的nacos版本:1.3.2,不同的版本,可能略有不同。

Springcloudalibaba的版本与Springboot的版本与nacos版本需要对应

Nacos支持三种部署模式

单机模式 - 用于测试和单机试用。

集群模式 - 用于生产环境,确保高可用。

多集群模式 - 用于多数据中心场景。

单机部署:

1、首先去官网下载nacos

Releases · alibaba/nacos · GitHub

默认是集群启动的,可以修改为单机启动模式:

Windows启动脚本命令:

startup.cmd -s standalone

nacos初体验

父maven的版本依赖

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="" xmlns:xsi="" xsi:schemaLocation=" https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <modules> <module>order-nacos</module> <module>stock-nacos</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example.springcloudalibaba</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloudalibabaDemo</name> <description>Demo project for Spring springcloudalibaba</description> <properties> <java.version>1.8</java.version> <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version> <sping.boot.version>2.3.2.RELEASE</sping.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> <!--springcloudalibaba的版本管理,通过dependency继承--> <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> <!--springboot的版本管理器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${sping.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>

在每个子模块中引入nacos依赖

<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>

每个子模块中配置nacos,端口不同

server: port: 8021 #nacos配置 # 应用名称,nacos会将该名称当做服务名称 spring: application: name: stock-service cloud: nacos: server-addr: 127.0.0.1:8848 discovery: username: nacos password: nacos #登录nacos可视化界面的用户名和密码 namespace: public #命名空间

配置好nacos后会将服务自动注册

nacos的服务调用依赖负载均衡器,默认是ribbon。在消费者端配置restTemplate用于调用提供者端的服务接口

package per; 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; @SpringBootApplication public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class,args); } @Bean @LoadBalanced // 负载均衡器注解,nacos的服务调用依赖于负载均衡(nacos无法将服务名称转化为服务地址,需要使用负载均衡器,默认使用轮询的方式) public RestTemplate restTemplate(RestTemplateBuilder builder){ RestTemplate RestTemplate = builder.build(); return RestTemplate; } }

编写服务提供者

package per.pz.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("stock") public class stockController { //读取配置文件中的端口 @Value("${server.port}") String port; @RequestMapping("/reduct") public String reduct(){ System.out.println("扣减库存"); return "扣减库存111"+port; } }

编写服务消费者

package per.pz.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; @RestController @RequestMapping("order") public class oderController { @Autowired RestTemplate RestTemplate; @RequestMapping("/add") public String add(){ System.out.println("下单成功"); // 服务间的通讯,没有使用微服务的方式 // 方法的缺点是在代码中写死服务地址,所以使用注册中心解决 // String msg = RestTemplate.getForObject(":8021/stock/reduct",String.class); // nacos服务调用,无需使用地址,使用服务名称即可 String msg = RestTemplate.getForObject("",String.class); return "下单成功111"+msg; } }

首页
评论
分享
Top