Nacos简介
为什么叫Nacos
前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service
是什么
1.是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
2.Nacos:Dynamic Naming and Configuration Service
3.Nacos 就是注册中心 + 配置中心的组合。也就是说Nacos等价于 Eureka + Config + Bus
能干什么
1.可以取代Eureka做服务中心。
2.可以取代Config做配置中心。
去哪里学习、下载?
GitHub:https://github.com/alibaba/Nacos
由于github上下载很慢,所以分享个nacos-server-1.2.1链接给大家:
链接:https://pan.baidu.com/s/112gp5pgDlcSM0Br6ByeymQ
提取码:b8l1
启动运行
解压文件,cmd进入bin目录并运行startup.cmd出现下图,即可
C:D ools acosin>startup.cmd ,--. ,--.'| ,--,: : | Nacos 1.2.1 ,`--.'`| ' : ,---. Running in stand alone mode, All function modules | : : | | ' ,' .--.--. Port: 8848 : | | : ,--.--. ,---. / / | / / ' Pid: 7520 | : ' '; | / / . ; ,. :| : /`./ Console: http://192.168.100.184:8848/nacos/index.html ' ' ;. ;.--. .-. | / / '' | |: :| : ;_ | | | | \__/: . .. ' / ' | .; : `. https://nacos.io ' : | ; .' ," .--.; |' ; :__| : | `----. | | '`--' / / ,. |' | '.'| / / /`--' / ' : | ; : .' : : `----' '--'. / ; |.' | , .-./ / `--'---' '---' `--`---' `----'
然后访问
创建实例
父pom
1 <!--统一管理jar包版本--> 2 <properties> 3 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 4 <maven.compiler.source>1.8</maven.compiler.source> 5 <maven.compiler.target>1.8</maven.compiler.target> 6 <junit.version>4.12</junit.version> 7 <log4j.version>1.2.17</log4j.version> 8 <lombok.version>1.16.18</lombok.version> 9 <mysql.version>5.1.47</mysql.version> 10 <druid.version>1.1.16</druid.version> 11 <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version> 12 </properties> 13 14 15 <!--子模块继承之后,提供作用:锁定版本+子modlue不用谢groupId和version--> 16 <dependencyManagement> 17 <dependencies> 18 <!--springboot 2.2.7--> 19 <dependency> 20 <groupId>org.springframework.boot</groupId> 21 <artifactId>spring-boot-dependencies</artifactId> 22 <version>2.2.7.RELEASE</version> 23 <type>pom</type> 24 <scope>import</scope> 25 </dependency> 26 <!--spring cloud Hoxton.SR5--> 27 <dependency> 28 <groupId>org.springframework.cloud</groupId> 29 <artifactId>spring-cloud-dependencies</artifactId> 30 <version>Hoxton.SR5</version> 31 <type>pom</type> 32 <scope>import</scope> 33 </dependency> 34 <!--spring cloud alibaba 2.1.0.RELEASE--> 35 <dependency> 36 <groupId>com.alibaba.cloud</groupId> 37 <artifactId>spring-cloud-alibaba-dependencies</artifactId> 38 <version>2.1.0.RELEASE</version> 39 <type>pom</type> 40 <scope>import</scope> 41 </dependency> 42 <!--mysql--> 43 <dependency> 44 <groupId>mysql</groupId> 45 <artifactId>mysql-connector-java</artifactId> 46 <version>${mysql.version}</version> 47 </dependency> 48 <!--druid--> 49 <dependency> 50 <groupId>com.alibaba</groupId> 51 <artifactId>druid</artifactId> 52 <version>${druid.version}</version> 53 </dependency> 54 <!--mybatis--> 55 <dependency> 56 <groupId>org.mybatis.spring.boot</groupId> 57 <artifactId>mybatis-spring-boot-starter</artifactId> 58 <version>${mybatis.spring.boot.version}</version> 59 </dependency> 60 <dependency> 61 <groupId>org.projectlombok</groupId> 62 <artifactId>lombok</artifactId> 63 </dependency> 64 </dependencies> 65 </dependencyManagement> 66 67 <build> 68 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 69 <plugins> 70 <plugin> 71 <artifactId>maven-clean-plugin</artifactId> 72 <version>3.1.0</version> 73 </plugin> 74 <plugin> 75 <artifactId>maven-site-plugin</artifactId> 76 <version>3.7.1</version> 77 </plugin> 78 <plugin> 79 <artifactId>maven-project-info-reports-plugin</artifactId> 80 <version>3.0.0</version> 81 </plugin> 82 </plugins> 83 </pluginManagement> 84 <plugins> 85 <plugin> 86 <groupId>org.apache.maven.plugins</groupId> 87 <artifactId>maven-site-plugin</artifactId> 88 <configuration> 89 <locales>en,fr</locales> 90 </configuration> 91 </plugin> 92 <!--热启动插件--> 93 <plugin> 94 <groupId>org.springframework.boot</groupId> 95 <artifactId>spring-boot-maven-plugin</artifactId> 96 <configuration> 97 <fork>true</fork> 98 <addResources>true</addResources> 99 </configuration> 100 </plugin> 101 </plugins> 102 </build> 103 <repositories> 104 <repository> 105 <id>nexus-aliyun</id> 106 <name>Nexus aliyun</name> 107 <url>http://maven.aliyun.com/nexus/content/groups/public</url> 108 <releases> 109 <enabled>true</enabled> 110 </releases> 111 <snapshots> 112 <enabled>false</enabled> 113 </snapshots> 114 </repository> 115 </repositories>
新建module模块cloudalibaba-provider-payment9001
POM
<dependencies> <!--springcloud alibaba nacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--引入热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
application.yml
server: port: 9001 spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: 127.0.0.1:8848 management: endpoints: web: exposure: include: '*'
主启动类 ,重点关注@EnableDiscoveryClient
package com.seegot.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @program: cloud2020 * @description: * @author: PP Zhang * @create: 2020-07-01 14:04 */ @SpringBootApplication @EnableDiscoveryClient public class NacosProviderMain9002 { public static void main(String[] args) { SpringApplication.run(NacosProviderMain9002.class,args); } }
业务类
1 package com.seegot.springcloud.controller; 2 3 import lombok.extern.slf4j.Slf4j; 4 import org.springframework.beans.factory.annotation.Value; 5 import org.springframework.web.bind.annotation.GetMapping; 6 import org.springframework.web.bind.annotation.PathVariable; 7 import org.springframework.web.bind.annotation.RestController; 8 9 /** 10 * @program: cloud2020 11 * @description: 12 * @author: PP Zhang 13 * @create: 2020-07-01 14:05 14 */ 15 @RestController 16 @Slf4j 17 public class ProviderController { 18 @Value("${server.port}") 19 private String serverPort; 20 @GetMapping(value = "/echo/{name}") 21 public String echo(@PathVariable("name") String name){ 22 return "Hello Nacos discovery,welcome " + name+",serverPort:"+serverPort; 23 } 24 }
启动测试
http://localhost:8848/nacos/#/serviceManagement?dataId=&group=&appName=&serverId=&namespace=
服务注册成功。