本文来自于个人我的主页: 初识 Nacos(上) 学习《Spring Cloud 服务发现新选择》,转载请保留连接 ;)
最近在从零接触Alibaba 开源项目Nacos,学习的是小马哥(mercyblitz)的技术周报,以前看了后忘记总结,致使也没有什么印象。因此如今决定学习一章,写一篇学习感悟,而且持续更新下去。首先这一章节主要讲得是服务发现(Service Discovery),做为 Spring Cloud 最核心功能特性之一,受到业界的普遍关注。html
在现行的 Spring Cloud 服务发现技术体系中,以 Spring Cloud Eureka 为典型表明,它做为官方推荐解决方案,被业 界普遍运用,然而其设计缺陷也很是之明显。还有Spring Cloud Zookeeper和Spring Cloud Consul。那么先介绍这三种的特色吧。java
综上所述,让我得出了Spring Cloud服务发现方案对比结果:git
那么这三种服务发现的基本模式是怎样的呢?如今来谈谈Spring cloud 服务器发现模式。github
sping-cloud-start-*
XXApplication.java
文件中添加@EnableDiscoveryClient
,注解开启服务注册与发现功能。如下我以Eureka发现模式为例:算法
resources-application.properties
中分别配置好二者的端口号,像客户端这块还须要写好应用名称、以及Eureka 服务器地址。XXApplication.java
了,像个人服务端端口是12345
,就访问localhost:12345。页面跳转以下图所示,恭喜你的Eureka服务已经起来了。Instances currently registered with Eureka
出现EUREKA-CLIENT
的状态信息。spring-cloud-alibaba-nacos-discovery 做为 Spring Cloud Alibaba 服务发现的核心模块,其架构基础与 Spring Cloud 现行方案相同,均构建在 Spring Cloud Commons 抽象。所以,它在 Spring Cloud 服务发现的使用上,开发人员将不会心存任何的违和感。spring
从功能特性而言,spring-cloud-alibaba-nacos-discovery 仅是 Nacos 在 Spring Cloud 服务发现的解决方案,Nacos 在 Spring Cloud 中还支持分布式配置的特性。与开源产品不一样的是,Nacos 曾经历过中国特点的超大流量考验,以及巨型规模的集群实施,不管从经验积累仍是技术沉淀,现行 Spring Cloud 解决方案 都是没法比拟的。然而这并不是说明它天衣无缝,在内部的评估和讨论中,也发现其中差距和文化差别。为了解决这些问题,讨论将从总体架构和设计思考两个方面,介绍 Nacos 与 Spring 技术栈整合状况,以及与其余开源方案的适配思考,总体上,下降 Nacos 使用门槛,使迁移成本接近为零,达到“一次开发,处处运行”的目的。
那么接下来咱们经过Github上,Spring Cloud Alibaba项目中官方给出的指导文档来配置启动 Nacos吧。浏览器
首先须要获取 Nacos Server,支持直接下载和源码构建两种方式。服务器
启动 Server,进入解压后文件夹或编译打包好的文件夹,找到以下相对文件夹 nacos/bin,并对照操做系统实际状况之下以下命令。网络
sh startup.sh -m standalone
cmd startup.cmd
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
SpringApplication.run
)@SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @RestController class EchoController { @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET) public String echo(@PathVariable String string) { return string; } } }
spring.application.name=service-provider server.port=18082
启动应用,支持 IDE 直接启动和编译打包后启动。架构
ProviderApplication
,执行 main 方法启动应用。mvn clean package
将工程编译打包,而后执行 java -jar nacos-discovery-provider-example.jar
启动应用。在浏览器输入此地址http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=service-provider 并点击跳转,能够看到服务节点已经成功注册到 Nacos Server。