天天看點

微服務架構-使用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作為注冊中心、配置中心功能實作

繼續閱讀