简而言之,nacos与eureka的不同之处有三:后台老板、部署方式、功能。nacos是阿里的,eureka是奈飞的;nacos有自己的安装包,需要独立部署,eureka仅作为一个服务组件,引入jar包即可;nacos=eureka+config,它既是注册中心,也是配置中心。

  如何使用nacos?先下载安装包(下载地址https://github.com/alibaba/nacos/releases),打开下载页 -> 点击目前最新版本1.1.3跳到下载页 -> 点击压缩包 -> 下载到本地(E盘download目录)后解压 -> 通过命令行启动nacos:

C:\Users\wulf>e:

E:\>cd download\nacos\bin

E:\download\nacos\bin>startup.cmd -m standalone

         ,--.
,--.'|
,--,: : | Nacos 1.1.
,`--.'`| ' : ,---. Running in stand alone mode, All function modules
| : : | | ' ,'\ .--.--. Port:
: | \ | : ,--.--. ,---. / / | / / ' Pid: 32916
| : ' '; | / \ / \. ; ,. :| : /`./ Console: http://10.10.100.110:8848/nacos/index.html
' ' ;. ;.--. .-. | / / '' | |: :| : ;_
| | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io
' : | ; .' ," .--.; |' ; :__| : | `----. \
| | '`--' / / ,. |' | '.'|\ \ / / /`--' /
' : | ; : .' \ : : `----' '--'. /
; |.' | , .-./\ \ / `--'---'
'---' `--`---' `----' -- ::, INFO Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$209b3f7a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -- ::, INFO Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -- ::, INFO Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@6e9175d8' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -- ::, INFO Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$456fe22c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -- ::, INFO Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -- ::, INFO Tomcat initialized with port(s): (http) -- ::, INFO Root WebApplicationContext: initialization completed in ms -- ::, INFO Initializing ExecutorService 'applicationTaskExecutor' -- ::, INFO Adding welcome page: class path resource [static/index.html] -- ::, INFO Creating filter chain: Ant [pattern='/'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.css'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.js'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.html'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.map'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.svg'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.png'], [] -- ::, INFO Creating filter chain: Ant [pattern='/**/*.ico'], [] -- ::, INFO Creating filter chain: Ant [pattern='/console-fe/public/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/auth/login'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/console/health/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/cs/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/ns/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/cmdb/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/actuator/**'], [] -- ::, INFO Creating filter chain: Ant [pattern='/v1/console/server/**'], [] -- ::, INFO Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6c8bca63, org.springframework.security.web.context.SecurityContextPersistenceFilter@6d24ffa1, org.springframework.security.web.header.HeaderWriterFilter@74cadd41, org.springframework.security.web.authentication.logout.LogoutFilter@42a9e5d1, com.alibaba.nacos.console.filter.JwtAuthenticationTokenFilter@2364305a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@773f7880, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4c51bb7, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@470a696f, org.springframework.security.web.session.SessionManagementFilter@55e8ec2f, org.springframework.security.web.access.ExceptionTranslationFilter@62fad19, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5536379e] -- ::, INFO Exposing endpoint(s) beneath base path '/actuator' -- ::, INFO Initializing ExecutorService 'taskScheduler' -- ::, INFO Tomcat started on port(s): (http) with context path '/nacos' -- ::, INFO Nacos Log files: E:\download\nacos/logs/ -- ::, INFO Nacos Conf files: E:\download\nacos/conf/ -- ::, INFO Nacos Data files: E:\download\nacos/data/ -- ::, INFO Nacos started successfully in stand alone mode. -- ::, INFO Initializing Servlet 'dispatcherServlet' -- ::, INFO Completed initialization in ms

  我们通过localhost:8848/nacos可以访问到它,默认用户名密码都是nacos:

0.9.0.RELEASE版本的spring cloud alibaba nacos实例-LMLPHP

  我们创建个项目来注册到这个nacos,三板斧再来:

  1、pom引入spring boot、spring cloud、spring cloud alibaba和nacos依赖:

<?xml version="1.0" encoding="UTF-8"?>
<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.wlf</groupId>
<artifactId>spring-cloud-alibaba-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.9.0.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.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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

  2、application配置nacos地址:

#端口
server.port=
#应用名
spring.application.name=lxytrans-provider #注册中心
spring.cloud.nacos.discovery.server-addr=localhost:

  3、启动类加注解@EnableDiscoveryClient:

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @EnableDiscoveryClient
@SpringBootApplication
public class TransProviderApplication { public static void main(String[] args) {
SpringApplication.run(TransProviderApplication.class, args);
} @Slf4j
@RestController
static class TestController { @GetMapping("/hello")
public String hello() {
return "hello";
} @GetMapping("/hey")
public String hey() throws InterruptedException {
Thread.sleep(2000);
return "hey";
} }
}

  跑起来后我们看下nacos控制台实例:

   0.9.0.RELEASE版本的spring cloud alibaba nacos实例-LMLPHP

  以上是服务提供方注册到nacos, 消费方的注册跟服务方没啥不同,这里就不再列出。nacos更多介绍参见https://nacos.io/zh-cn/docs/what-is-nacos.html。至于消费方如何通过nacos调用提供方服务,参见0.9.0.RELEASE版本的spring cloud alibaba nacos+feign实例

  

05-11 20:14