天天看点

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

nacos安装

下载地址

https://github.com/alibaba/nacos/releases

自己选择合适版本下载 .tar.gz 格式,本文使用nacos-server-2.0.1.tar.gz版本,本文使用nacos单机模式

解压安装

tar -zxvf nacos-server-2.0.1.tar.gz 
           

运行

进入bn目录

cd ./nacos/bin/
           

启动

sh startup.sh -m standalone
           

查看进程

ps -ef | grep nacos
           

查看网络端口 8848是否存在

netstat -lnpt | grep 8848
tcp6       0      0 :::8848                 :::*                    LISTEN      2750/java
           

可视化访问(默认用户nacos,密码nacos)

http://部署机器ip地址:8848/nacos/#/login
           
微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

项目构建

项目总体结构

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

父项目

pom.xml文件

<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">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.priv.nacos</groupId>
	<artifactId>nacos-cloud</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>nacos-cloud</name>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.7.RELEASE</version>
		<relativePath />
	</parent>
	<properties>
		<spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
		<java.version>1.8</java.version>
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
		<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
		<spring-boot.version>2.2.7.RELEASE</spring-boot.version>
	</properties>

	<!--全局引入springcloudalibaba下载依赖地址,并不会引入依赖 -->
	<dependencyManagement>
		<dependencies>
			<!--spring boot 2.2.7 -->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<!--spring cloud Hoxton.SR4 -->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<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>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</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.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skipTests>true</skipTests>    <!--默认关掉单元测试 -->
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
					<encoding>UTF-8</encoding>
					<optimize>true</optimize>
					<debug>false</debug>
					<showDeprecation>true</showDeprecation>
					<showWarnings>false</showWarnings>
					<compilerArguments>
						<verbose />
						<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
					</compilerArguments>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<modules>
		<module>nacos-producer</module>
		<module>nacos-consumer</module>
	</modules>
</project>
           

生产者项目

nacos配置中心添加生产者配置

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

项目结构

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

pom.xml文件

<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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.priv.nacos</groupId>
		<artifactId>nacos-cloud</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>nacos-producer</artifactId>
	<dependencies>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>
           

bootstrap.yml

server:
 port: 9002
spring:
 application:
   name: nacos-provider
 cloud:
   nacos:
     discovery:
       server-addr: 自己nacos部署机器IP:8848
     config: 
       server-addr: 自己nacos部署机器IP:8848
       file-extension: yml 	
           

DemoCotroller.java

package com.priv.producer.controller;

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

import com.priv.producer.service.DemoService;

@RestController
@RequestMapping("/producer")
public class DemoCotroller {
  
  @Autowired
  private DemoService demoService;
  
  @RequestMapping("/test/{key}")
  public String test(@PathVariable(name = "key") String key){
  	return demoService.test(key);
  }
}
           

DemoService.java

package com.priv.producer.service;

public interface DemoService {
	String test(String key);
}

           

DemoServiceImpl.java

package com.priv.producer.service.impl;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import com.priv.producer.service.DemoService;

@RefreshScope
@Service
public class DemoServiceImpl implements DemoService{
   
   @Value("${user.name}")
   private String name;
   
   @Value("${user.age}")
   private Integer age;
   
   @Override
   public String test(String key) {
   	return key+"---->>>name:"+name+"==age:"+age;
   }
}
 
           

NacosProducerApplication.java

package com.priv.producer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProducerApplication {
  public static void main(String[] args) {
  	SpringApplication.run(NacosProducerApplication.class, args);
  }
}
           

消费者项目

项目结构

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

pom.xml文件

<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">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.priv.nacos</groupId>
		<artifactId>nacos-cloud</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>nacos-consumer</artifactId>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>
           

bootstrap.yml

server:
 port: 9001
spring:
 application:
   name: nacos-comsumer
 cloud:
   nacos:
     discovery:
       server-addr: 自己部署nacos机器ip:8848
feign:
 client:
   config:
     default:
       connectTimeout: 20000
       readTimeout: 20000
 httpclient:
   connection-timeout: 20000
   connection-timer-repeat: 20000
   enabled: true
   max-connections: 200
   max-connections-per-route: 50
           

DemoCotroller.java

package com.priv.consumer.controller;

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

import com.priv.consumer.feign.DemoService;

@RestController
@RequestMapping("/consumer")
public class DemoCotroller {
   
   @Autowired
   private DemoService demoService;
   
   @RequestMapping("/test/{key}")
   public String test(@PathVariable(name = "key") String key){
   	return demoService.test(key);
   }
}
           

DemoService.java

package com.priv.consumer.controller;

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

import com.priv.consumer.feign.DemoService;

@RestController
@RequestMapping("/consumer")
public class DemoCotroller {
   
   @Autowired
   private DemoService demoService;
   
   @RequestMapping("/test/{key}")
   public String test(@PathVariable(name = "key") String key){
   	return demoService.test(key);
   }
}
           

NacosConsumerApplication.java

package com.priv.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {
   public static void main(String[] args) {
   	SpringApplication.run(NacosConsumerApplication.class, args);
   }
}
           

测试

分别启动nacos-producer、nacos-producer 项目,查看服务注册nacos如下

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

使用postman进行消费者服务接口测试

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

修改nacos配置中心生产者服务配置如图,点击发布

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

再次使用postman进行消费者服务接口测试,返回数据信息,如图

微服务架构-使用spring-cloud-nacos作为注册中心、配置中心nacos安装项目构建测试结语

结语

经过如上步骤测试,完成使用nacos作为注册中心、配置中心功能实现

继续阅读