## 概述 在 Spring Cloud Netflix 阶段我们采用 Eureka 做作为我们的服务注册与发现服务器,现利用 Spring Cloud Alibaba 提供的 Nacos 组件替代该方案。 [Nacos 官网](https://nacos.io/zh-cn/) ## 什么是 Nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 ![](https://img.kancloud.cn/d0/f9/d0f9f56b71851b3b1a25d1b4a8c68930_1130x495.png) ## 服务注册中心技术对比 ![](https://img.kancloud.cn/1d/f5/1df59f5920cc17caa24003cd64902ed9_1751x742.png) ## eureka与nacos的区别 * eureka采用AP模式实现注册中心,无中心节点无leader概念,采用peertopeer集群架构 * nacos 默认采用AP模式,在1.0版本之后增加了AP+CP的混合模式实现注册中心,采用raft协议,有leader概念 ## 安装部署 ### 准备环境 Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行 Nacos,还需要为此配置 Maven 环境,请确保是在以下版本环境中安装使用: * 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。 * 64 bit JDK 1.8+ ### 启动 * windowd启动方式 ``` D:\open-capacity-platform\register-center>h: H:\>cd alibaba H:\alibaba>cd open-capacity-platform H:\alibaba\open-capacity-platform>cd register-center H:\alibaba\open-capacity-platform\register-center>cd nacos-server H:\alibaba\open-capacity-platform\register-center\nacos-server>cd bin H:\alibaba\open-capacity-platform\register-center\nacos-server\bin>startup.cmd ,--. ,--.'| ,--,: : | Nacos 1.1.3 ,`--.'`| ' : ,---. Running in stand alone mode, All function modules | : : | | ' ,'\ .--.--. Port: 8848 : | \ | : ,--.--. ,---. / / | / / ' Pid: 15752 | : ' '; | / \ / \. ; ,. :| : /`./ Console: http://130.75.131.208:8848/nacos/index.html ' ' ;. ;.--. .-. | / / '' | |: :| : ;_ | | | \ | \__\/: . .. ' / ' | .; : \ \ `. https://nacos.io ' : | ; .' ," .--.; |' ; :__| : | `----. \ | | '`--' / / ,. |' | '.'|\ \ / / /`--' / ' : | ; : .' \ : : `----' '--'. / ; |.' | , .-./\ \ / `--'---' '---' `--`---' `----' 2019-01-14 10:09:35,970 INFO Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$843504bf] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2019-01-14 10:09:36,138 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) 2019-01-14 10:09:36,144 INFO Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@543295b0' 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) 2019-01-14 10:09:36,154 INFO Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$a909a771] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2019-01-14 10:09:36,168 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) 2019-01-14 10:09:37,996 INFO Tomcat initialized with port(s): 8848 (http) 2019-01-14 10:09:39,425 INFO Root WebApplicationContext: initialization completed in 7639 ms ``` * Linux启动方式 ./startup.sh -m standalone ## 访问服务 打开浏览器访问:http://localhost:8848/nacos ![](https://img.kancloud.cn/1d/c1/1dc1245c9b1a77a0f9e19a0df0ddf181_1920x753.png) **注:从 0.8.0 版本开始,需要登录才可访问,默认账号密码为 nacos/nacos** ## nacos服务注册,可参考user-ceneter 引入POM ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` bootstrap.yml增加以下配置 ``` spring: cloud: nacos: discovery: server-addr: ip:prot #nacos的地址 ``` 工程启动类添加以下注解 ``` @EnableDiscoveryClient ``` ## nacos API > 用API服务注册,由于未心跳检测,服务发现服务不会一直有效 ### 服务注册API ![](https://img.kancloud.cn/a3/89/a389514090e691500b44458b9a472daa_1718x417.png) ### 服务发现API ![](https://img.kancloud.cn/b4/fd/b4fd86b96178a319748c26faf12b2f05_1708x702.png) ### 控制台查看 ![](https://img.kancloud.cn/91/40/9140c967ac967f2ee003fb676e9784b2_1909x474.png)