nacos服务注册与发现

本文介绍了如何使用Nacos作为服务注册与发现的中心,包括Nacos的下载与启动,以及创建nacos-provider和nacos-client两个示例工程进行服务的注册与调用,最后进行了工程测试验证。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。这几句话是从nacos官网截取的,关于nacos的介绍,可以直接上官网去查看 nacos快速开始。话不多说,我们看一个nacos做服务注册发现的示例。

nacos注册中心服务

nacos的注册中心支持Linux/Unix/Mac/Windows操作系统,推荐Linux/Unix/Mac上使用。我们下载一个nacos服务在Windows上做示例用。

nacos的服务包可以在GitHub中下载 https://github.com/alibaba/nacos/releases ,当前有2.0.0版本和1.4.1版本,我们下载1.4.1版本

下载好的nacos-server包解压后,到bin目录下面使用命令cmd startup.cmd -m standalone 启动nacos注册中心服务,注意单机版的一定要添加 -m standalone表示为单机版,否则启动报错 

单机版的nacos无法在bin目录双击startup.cmd启动,因为无法带进-m standalone启动参数,所以推荐在命令窗口执行启动

启动后,可以在启动日志中看到,Nacos 1.4.1版本,Running in stand alone mode单机版模式,端口Port: 8848,控制台Console: http://192.168.187.1:8848/nacos/index.html

在浏览器中输入http://192.168.187.1:8848/nacos/index.html ,输入默认的用户名/密码 nacos/nacos,即可登录到nacos控制台,至此,nacos注册中心完成。

nacos服务注册与发现

nacos-provider

pom文件完整的依赖关系

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
	</properties>

	<dependencies>
	     <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter</artifactId>
	    </dependency>
	     <!-- SpringMVC -->
	     <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
		<dependency>
		    <groupId>com.alibaba.cloud</groupId>
		    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		    <version>2.2.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
			<version>2.2.1.RELEASE</version>
		</dependency>
	</dependencies>

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

application.properties 中添加注册中心配置

server.port=8080
spring.application.name=nacos-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

springboot启动主类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosProviderApplication{

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

}

提供一个供访问的Controller

@RestController
public class HelloController {

	@GetMapping(value = "/hello")
    public String hello(String name) {
        return "Hello: " + name + " , I am provider";
    }
}

启动正常启动后,工程启动日志可以看到如下启动信息,删除了日志前面的时间信息

nacos registry, DEFAULT_GROUP nacos-provider 192.168.187.1:8080 register finished
Started NacosProviderApplication in 7.522 seconds (JVM running for 8.225)
[fixed-localhost_8848] [subscribe] nacos-provider+DEFAULT_GROUP

表示nacos注册成功,本服务IP为192.168.187.1,端口8080,在nacos的分组为DEFAULT_GROUP分组

到nacos控制台可以看到

点击操作栏的详情,可以看到服务的详情信息

再通过反问的url测试一下  http://localhost:8080/hello?name=zhangqi

至此,nacos-provider注册成功

nacos-client

nacos-client工程与nacos-provider工程类似

pom文件相同,这里不再列出

properties配置文件,设置工程名nacos-client,设置端口号8081

server.port=8081
spring.application.name=nacos-client
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

主启动类相同,不再列出

访问类

@RestController
public class ConsumerController {
 
	@Autowired
	RestTemplate restTemplate;
	
	@LoadBalanced
	@Bean
	public RestTemplate rest() {
		return new RestTemplate();
	}
	
	@RequestMapping("/hi")
	public String hello(String name) {
		return restTemplate.getForObject("http://nacos-provider/hello?name=" + name, String.class);
	}
}

工程测试

启动nacos-client和nacos-provider工程,在注册中心可以看到两个服务均注册到nacos注册中心

在浏览器输入nacos-client的访问地址 http://localhost:8081/hi?name=zhangqi ,看是否可以请求到nacos-provider的信息

 

至此,nacos服务注册和发现的小demo完成。

目录

nacos注册中心服务

nacos服务注册与发现

nacos-provider

nacos-client

工程测试


 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值