Nacos

阿里巴巴开源项目,致力于微服务生态中的服务注册与发现以及配置管理,Nacos

SpringCloud

基于SpringBoot最好的微服务框架

SpringCloud + Nacos

  • nacos下载安装与启动,
    Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
    64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
    64 bit JDK 1.8+;下载 & 配置
    Maven 3.2.x+;下载 & 配置
    从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

      下载编译后压缩包方式

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

        启动

##Linux/Unix/Mac
##启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

##Windows
##启动命令:

cmd startup.cmd

##或者双击startup.cmd运行文件

  启动成功后,访问:http://localhost:8848/nacos,会跳转到登陆界面,默认的登陆用户名为nacos,密码也为nacos。

  • 项目依赖,注意添加spring cloud版本依赖以及对应springboot版本,对应项目应添加项目场景启动起(spring-boot-starter-web),本人踩坑,一开始写的spring-boot-starter,后面没跟启动场景,导致启动项目时,一直没有注册成功
<!--自定义属性-->
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>

    <!--依赖管理-->
    <dependencyManagement>
        <dependencies>
            <!-- spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入 -->
            <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>
    
    <dependencies>
        <!-- spring cloud alibaba nacos 服务注册与发现 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>
    </dependencies>
  • 启动配置文件
#启动端口
server.port=8889
#应用名称
spring.application.name=third-server
#向nacos server注册的地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=8888
spring.application.name=love-master
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  • 启动类,加入注解@EnableDiscoryClient,支持服务发现客户端,启动成功

  • 服务消费,注入Bean 为restTemplate 调用服务接口

    消费服务的启动类
     
    @SpringBootApplication
    @EnableDiscoveryClient //
    public class LoveMasterApplication {
        public static void main(String[] args) {
            SpringApplication.run(LoveMasterApplication.class, args);
        }
    
        /**
         * 使用RestTemplate消费服务
         * RestTemplate可以使用Ribbon作为负载均衡组件,在nacos-consumer工程中引入ribbon的依赖
         * @return
         */
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    
    }

    消费类

    @Controller
    @RequestMapping("/master/file")
    public class HelloFileController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @ResponseBody
        @RequestMapping("/hello")
        public Object hello(){
            ResponseEntity<String> hello = restTemplate.postForEntity("http://third-server/third/hello/hello",null, String.class);
            return hello.getBody();
        }
    }
    

    提供服务的启动类

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

    提供的服务

    @Controller
    @RequestMapping("/third/hello")
    public class HelloController {
        private static Logger logger = LoggerFactory.getLogger(HelloController.class);
    
        @RequestMapping("/hello")
        @ResponseBody
        public Object hello(){
            return "Hello world !";
        }
    }

    结果展示:访问 http://localhost:8888/master/file/hello

源码 

留言

下一篇  nacos 配置中心

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐