关键词:
服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos。
一、Spring Cloud 服务注册和发现组件
1.Spring Cloud Eureka 闭源风波
在Spring Cloud的子项目中,Spring Cloud Netflix提供了Eureka来实现服务的发现功能,Eureka的服务发现包含两大组件:
服务端发现组件(EurekaServer)和客户端发现组件(Eureka Client)。
Eureka的服务发现机制如图所示。
当客户端服务通过注解等方式嵌入到程序的代码中运行时,客户端发现组件就会向注册中心注册自身提供的服务,并周期性地发送心跳来更新服务,
如果连续三次心跳都不能够发现服务,那么Eureka就会将这个服务节点从服务注册表中移除。
各个服务之间会通过注册中心的注册信息以Rest方式来实现调用,并且可以直接通过服务名进行调用。
2012年,Netflix 将 Euerka 开源,Euerka 在 Spring Cloud 中广泛应用,但是2018年6月, Netflix 宣布 Euerka 2.0 闭源,目前社区中集成的都是1.0版本。
闭源之后,服务发现选择哪个组件,答案就是 Nacos。
2.阿里巴巴开源 Nacos
阿里巴巴官方给Nacos的定位是「一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台」。
Nacos支持的功能包括服务发现,集成配置中心,和服务数据管理。
二、Nacos本地安装和启动
可以通过源码和发行包两种方式来获取 Nacos,下面我们下载源码并且构建。
从 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
启动Nacos服务
Linux/Unix/Mac系统
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
Windows系统
启动命令:
` cmd startup.cmd `
或者双击startup.cmd运行文件
应用启动之后,访问 http://127.0.0.1:8848/nacos/,Nacos0.8 版本已经支持简单登录功能,默认用户名/密码为: nacos/nacos。
三、集成 Spring Cloud 服务发现
如果你还不是很熟悉 Spring Cloud 项目的创建,可以先看一下前面这篇博文,。
最新的版本关系查看 版本说明Wiki
创建服务提供者
1.新建 Spring Boot 工程,命名为 nacos-spring-cloud,在中添加 Nocos 的依赖,注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
2.添加一个模块,nacos-spring-cloud-provider,作为 服务提供者,Pom文件配置如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.0.Final</version>
</dependency>
</dependencies>
3.创建启动类,在启动类中添加一个Restful类型的方法,作为服务实现。
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
@RequestMapping(value = "/hello/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello " + string;
}
}
4.修改配置文件,注册到 Nacos 控制台。
server.port=8070
spring.application.name=service-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
5.启动工程,查看 Nacos 控制台。
创建服务消费者
1.添加一个新 module,nacos-spring-cloud-consumer,作为服务消费者。
2.在启动类中添加一个Restful类型的方法,Pom文件依赖如下:
<properties>
<spring-cloud-openfeign.version>2.0.0.RELEASE</spring-cloud-openfeign.version>
<spring-cloud-netflix.version>2.0.0.RELEASE</spring-cloud-netflix.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>${spring-cloud-netflix.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-cloud-openfeign.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
</dependencies>
3.创建启动类和测试方法,来调用提供者的服务。
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
通过RestTemplate调用服务:
@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/hello/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://service-provider/hello/" + str, String.class);
}
}
4.修改配置文件,订阅服务
server.port=8080
spring.application.name=service-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
5.启动工程,查看 Nacos 控制台。
6.测试服务调用,正常返回。
四、总结
这个小教程用一个简单的示例,搭建了基于Nacos的 Spring Cloud 服务发现,可以看到 Nacos 的控制台还有配置管理的功能,下一节会学习 Nacos 的配置管理。
springcloudalibaba之nacos组件(代码片段)
文章目录1、概述2、父项目搭建3、Nacos介绍3.1、是什么3.2、干什么3.3、服务注册与发现框架对比3.4、CP和AP4、Nacos服务注册4.1、Nacos服务提供者项目搭建4.2、Nacos服务消费者项目搭建4.3、结果分析5、Nacos配置中心5.1、Nacos配置中心基... 查看详情
“基于springcloudalibaba的微服务架构实战:nacos配置管理“(代码片段)
引言SpringCloudAlibaba是SpringCloud和Alibaba集团联合推出的开源微服务框架,旨在为Java开发者提供一种简单、易用、高效的微服务解决方案。Nacos是一个面向云原生应用的动态服务发现、配置管理和服务管理平台,提供了服务... 查看详情
springcloudalibaba微服务介绍及nacos注册中心实战(代码片段)
文章目录前言I、微服务与SpringCloudII、Nacos注册中心III、SpringCloudAlibabaNacos实战1、新建父工程2、新建demo-a服务3、新建demo-b服务4、实现服务调用:传统方式5、实现服务调用:Nacos+Ribbon方式总结最后前言SpringCloudAlibaba微... 查看详情
微服务springcloudalibaba之nacos篇,nacos就是注册中心+配置中心的组合
...务,面试前如何快速熟悉微服务第二篇:微服务SpringCloudAlibaba之Nacos篇,Nacos就是注册中心+配置中心的组合第三篇:微服务SpringCloudAlibaba之Sentinel篇,使用熔断器防止雪崩第四篇:SpringClou 查看详情
视频作品《[springcloudalibaba]微服务之注册中心nacos》上线了
1.场景描述第二个视频作品出炉了,《[SpringCloudAlibaba]微服务之注册中心nacos》上线了,有需要的朋友可以直接点击链接观看。(如需购买,请通过本文链接购买)2.课程内容课程地址:https://edu.51cto.com/sd/a6ff4课程目录:第一章课... 查看详情
springcloudalibaba实战(7:nacos注册中心管理微服务)(代码片段)
源码地址:https://gitee.com/fighter3/eshop-project.git持续更新中……在上一节我们已经完成了NacosServer的本地部署,这一节我们学习如何将Nacos作为注册中心,管理微服务。1、注册中心简介1.1、什么是注册中心在微服务的体系里,注册... 查看详情
springcloud-springcloudalibaba之nacos(代码片段)
阅读本文可先参考博文https://blog.csdn.net/MinggeQingchun/article/details/125613600Nacos(英文全称:DynamicNamingandConfigurationService),是由阿里巴巴团队使用Java语言开发并于2018年7月推出来的开源项目(Nacos 查看详情
springcloud微服务springcloudalibaba整合nacos实战(代码片段)
...1下载安装包4.2 修改脚本启动模式4.3 启动nacos服务五、SpringCloudAlibaba整合Nacos5.1 Spring Cloud Alibaba版本选型5.2 实验整合案例说明5.3 整合完整过程5.3.1创建聚合工程,包括两个子模块5.3.2 根pom引入如下依赖5.3.3 子模块导入... 查看详情
springcloudalibaba实战(7:nacos注册中心管理微服务)(代码片段)
源码地址:https://gitee.com/fighter3/eshop-project.git持续更新中……在上一节我们已经完成了NacosServer的本地部署,这一节我们学习如何将Nacos作为注册中心,管理微服务。1、注册中心简介1.1、什么是注册中心在微服务的体... 查看详情
springcloudalibaba企业落地实战:一文带你掌握nacos基础应用(代码片段)
1.为什么使用选择nacosnacos在springcloud体系中作为注册中心与配置中心使用。相当于eureka与apollo的功能。一个老生常谈的问题nacos和eureka区别,下图是楼主在网上查找到。但是在楼主实际应用中还有以下有点特别称道:nacos... 查看详情
springcloudalibaba企业落地实战:一文带你掌握nacos基础应用(代码片段)
1.为什么使用选择nacosnacos在springcloud体系中作为注册中心与配置中心使用。相当于eureka与apollo的功能。一个老生常谈的问题nacos和eureka区别,下图是楼主在网上查找到。但是在楼主实际应用中还有以下有点特别称道:nacos... 查看详情
springcloud系列教程汇总整理手册
...ingCloud系列之分布式配置中心极速入门与实践3、微服务之SpringCloudAlibaba3.1、Nacos服务注册与发现SpringCloudAlibaba系列之快速开始搭建Nacos环境SpringCloudAlibaba系列之Nacos服务注册与发现3.2、Nacos分布式配置中心SpringCloudAlibaba系列之Nacos... 查看详情
springcloud学习笔记总结(代码片段)
文章目录1.SpringCloudAlibaba简介2.SpringCloudAlibaba之Nacos介绍和安装3.Nacos服务注册与发现之服务提供者注册4.Nacos服务注册与发现之服务消费者注册和负载5.Nacos服务注册与发现之服务注册中心对比提升6.Nacos作为服务配置中心7.Nacos服务... 查看详情
springcloudalibaba商城实战项目基础篇(day02)(代码片段)
四、搭建SpringCloudAlibaba环境4.1、简介官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/zh-cn/index.html我们所选用的组件:SpringCloudAlibaba-Nacos:注册中心(服务发现/注册)SpringCloudAlibaba-Nacos:配置... 查看详情
springcloud-springcloudalibaba之nacos,集成ribbon(代码片段)
负载均衡(LoadBalance) 负载均衡(LoadBalance),简单点说就是将用户的请求平摊分配到多个服务器上运行,以达到扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的负载... 查看详情
springcloud-springcloudalibaba之nacosconfig配置数据;mysql持久化;nacos集群(代码片段)
阅读本文可先参考博文https://blog.csdn.net/MinggeQingchun/article/details/125613600https://blog.csdn.net/MinggeQingchun/article/details/125614065https://blog.csdn.net/MinggeQingchun/article/details/125621111http 查看详情
springcloudalibaba开篇
SpringCloudAlibaba开篇简述SpringCloudAlibaba专题简述SpringCloud是使用Netflix的开源组件或者基于Netflix的开源组件来进行微服务框架的研发,但是随着Netfix开源组件不断地进入到维护模式,这也导致了阿里开源的SpringCloudAlibaba。Spri... 查看详情
springcloudalibaba实战(10:分布式配置中心)(代码片段)
源码地址:https://gitee.com/fighter3/eshop-project.git持续更新中……在我们前面介绍Nacos的时候,说到,Nacos除了可以作为注册中心,还可以作为配置中心,而在SpringCloudNetfilx的体系下,这个工作是由SpringCloudConfig... 查看详情