Spring Cloud AliBaba 基础教程:使用Nacos 实现服务注册与发现

Spring Cloud AliBaba 基础教程:使用Nacos 实现服务注册与发现

什么是Nacos

Nacos 致力于帮助你发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助你快速实现动态服务发现,服务配置,服务元数据及流量管理。Nacos帮助你更快捷和容易地构建,交付和管理微服务平台。Nacos是构建以”服务“为中心的现代应用架构的服务基础设施。

安装Nacos

下载地址:https://github.com/alibaba/nacos/releases
下载完成之后,解压。根据不同平台,执行不同命令,启动单机版Nacos服务:

  • Linux/Unix/Mac:sh startup.sh -m standalone
  • Windows:双击startup.sh
    startup.sh 脚本位于Nacos解压后的bin目录下。这里主要介绍Spring Cloud与Nacos的集成使用,对于Nacos的高级配置,后续再补充。
    启动完成之后,访问:http://127.0.0.1:8848/nacos/
    可以进入Nacos的服务管理页面,具体如下

在这里插入图片描述
默认用户名密码:nacos

构建应用接入Nacos注册中心

完成Nacos服务启动后,我们就可以编写两个应用(服务提供者和服务消费者)来验证服务的注册与发现了。

服务提供者

第一步:创建一个Spring Boot应用 可以命名为:alibaba-nacos-discovery-server
第二步:编辑pom.xml,加入必要的依赖配置

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud-commons.version>Finchley.SR1</spring-cloud-commons.version>

    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-commons.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>0.2.2.RELEASE</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.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>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

上述内容主要有三部分:

  • parent:定义Springboot版本
  • dependdencyManagement:spring cloud 的版本以及springcloud alibaba的版本,由于spring cloud alibaba还未纳入springcloud的主板管理总,所以需要自己加入
  • dependencies:当前应用要使用的依赖内容,这里主要加入了Nacos的服务注册与服务发现模块:spring-cloud-starter-alibaba-nocas-discovery.由于在dependencyManagement中已经引入了版本,所以这里就不需要指定具体版本了。

第三步:创建应用主类,并实现一个HTTP接口

	@EnableDiscoveryClient
	@SpringBootApplication
	public class AlibabaNacosDiscoveryServerApplication {
	
		public static void main(String[] args) {
			SpringApplication.run(AlibabaNacosDiscoveryServerApplication.class, args);
		}
	
	
		@Slf4j
		@RestController
		static class TestController{
			@GetMapping("/")
			public String hello(@RequestParam String name){
				log.info("invoked name="+name);
				return "hello"+ name;
			}
		}
	}

内容非常简单,@SpringBootApplication定义了Springboot应用;@EnableDiscoveryClient开启Spring Cloud的服务注册与 发现由于这里引入了Spring-cloud-starter-alibaba-nacos-discovery模块,所以,Spring Cloud Common中定义的那些服务和服务治理相关的接口将使用Nacos的实现,这点不论我i们使用Eureka,Consul还是其他SpringCloud整合的注册中心都一样了,这也是Spring Cloud做了封装的好处所在。
第四步:配置服务名和Nacos地址

	spring.application.name=alibaba-nacos-discovery-server
	server.port=8081
	spring.cloud.nacos.discovery.server-addr=127.0..0.1:8848

第五步: 启动上面创建的应用
在应用启动好了之后,我们可以在控制台或日志中看到如下内容,代表已经注册成功:

:nacos registry, alibaba-nacos-discovery-server 192.168.1.3:8001 register finished

在启动都OK之后,我们可以访问Nacos管理页面 http://127.0.0.1:8848/nacos/ 来查看服务列表,此时可以看到如下内容:

这里会显示当前注册的所有服务,以及每个服务的集群数目,实例数,健康实例数。点击详情,我们还能看到每个服务具体的实例信息,如下图所示:在这里插入图片描述

服务消费者

接来来,实现一个应用来消费上面已经注册到Nacos的服务。
第一步:创建一个springboot应用,命名为:alibaba-nacos-discovery-client-common
第二步:编辑pom.xml中的内容,与上面服务提供者的一样即可。
第三步: 创建应用主类,并实现一个HTP接口,在该接口中调用服务提供方的接口。

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

		@Autowired
		LoadBalancerClient loadBalancerClient;
		@GetMapping("test")
		public String test(){
			ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
			String url =serviceInstance.getUri()+"?name="+"juzhi";
			RestTemplate restTemplate = new RestTemplate();
			String result= restTemplate.getForObject(url,String.class);
			return "Invoke:"+url+",return:"+result;
		}

	}

这里使用了SpringCoud Common中的LoadBalancerClent接口来挑选服务实例信息。然后从挑选出的服务信息中获取可访问的URL,拼接上服务提供方的接口规则来发起调用。
第四步:配置服务名称和Nacos地址,让服务消费则可以发现上面已经注册到Nacos的服务

spring.application-name=alibaba-nacos-discovery-client-common
server.portd=8002
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步:启动消费者,然后通过curl或者postMan等工具发起访问。下面以postMan为例

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值