栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Nacos注册中心介绍+SpringCloud代码示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nacos注册中心介绍+SpringCloud代码示例

本文将介绍Nacos作为注册中心是如何使用的。首先简单了解下Nacos架构:

服务 (Service)

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。

服务注册中心 (Service Registry)

服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

从上述定义可以知道,服务/一组服务在启动时会将自身注册到服务注册中心的服务注册表当中,当其它服务请求另一个服务时会先查找服务注册表找到对应可用实例,再发起对可用实例的服务调用。

不多展开,本文以一个SpringCloud服务端工程+一个SpringCloud客户端工程,同时启动2个服务端实例,客户端采用RestTemplate负载均衡调用服务端的方式演示效果。

(1)整体工程结构:

springcloud-nacos:父pom工程,主要定义公用的maven依赖,如springboot,springcloud,springcloud-alibaba等。

nacos-spring-cloud-provider:服务端工程,提供服务。

nacos-spring-cloud-comsumer:客户端工程,接收浏览器请求获取服务端服务,响应服务端数据。

(1)springcloud-nacos:父pom工程的maven文件pom.xml定义:



  4.0.0
  com.alibaba.example
  nacos-spring-cloud-example
  pom
  0.2.0-SNAPSHOT

  
    
    
      org.springframework
      spring-webmvc
      5.0.8.RELEASE
    
    
    
      org.springframework
      spring-core
      5.0.8.RELEASE
    
    
    
      javax.servlet
      javax.servlet-api
      3.0.1
      provided
    
    
      org.apache.tomcat.maven
      tomcat7-maven-plugin
      2.2
      provided
    
    
      com.alibaba
      fastjson
      1.2.31
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.1
    
  

  
  
    
      
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.5.1
        
          1.7
          1.7
          UTF-8
        
      
      
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.2
        
          /
          9090
          UTF-8
          tomcat7
          
          true
        
      
    
  

(2)nacos-spring-cloud-provider工程:

pom.xml:

引入spring-boot-starter-web和spring-cloud-starter-alibaba-nacos-discovery、

nacos-client,注意还要额外引入hibernate-validator用于替换springbootweb内部的高版本兼容包。

核心依赖为spring-cloud-starter-alibaba-nacos-discovery



    
        nacos-spring-cloud-example
        com.alibaba.example
        0.2.0-SNAPSHOT
    

    4.0.0
    nacos-spring-cloud-provider
    
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.hibernate
                    hibernate-validator
                
            
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            
                
                    com.alibaba.nacos
                    nacos-client
                
            
        
        
            com.alibaba.nacos
            nacos-client
        
        
            org.hibernate
            hibernate-validator
            5.1.0.Final
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            repackage
                        
                    
                
            
            
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    


application.properties:

主要声明注册中心的集群地址spring.cloud.nacos.discovery.server-addr。

注意在集群模式下这里一定要配置多个,否则启动会报错。

server.port=8070
spring.application.name=service-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:3333,127.0.0.1:4444,127.0.0.1:5555

NacosProviderApplication:

主要定义要提供的服务方法,同时开启服务注册。核心是添加@EnableDiscoveryClient注解

package com.alibaba.nacos.example.spring.cloud;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

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

	@Value("${server.port}")
	private int port;

	@RestController
	class EchoController {
		@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
		public String echo(@PathVariable String string) {
			return "Hello Nacos Discovery " + string + ",port:"+port;
		}
	}
}

以上就创建好了SpringCloud的服务端,在IDEAJ设置Edit Configuration,勾上Allow parallel run,启动一个服务端实例后,修改applicaiton.properties配置文件的port端口由8070改为8071继续启动该服务,这样就同时启动了2个服务端的服务,端口分别为8070和8071。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号