Spring Cloud Alibaba入门实践(四)-注册中心nacos
通过上篇博客,已经定义好了3个能够正常运行的微服务,然后通过RestTemplate来实现各个服务间的远程调用。
那么先考虑下之后业务扩展,可能会引发的问题有哪些?
- 远程调用使用RestTemplate硬编码,代码耦合度高,同时修改不易。
- 微服务为了实现高可用,势必要做多实例部署,那么多实例应该如何管理,还是使用硬编码维护地址么?调用关系突然就变得复杂了
- 一个服务有多个实例,除了高可用,肯定也得做负载均衡,分流减压,那么这负载均衡怎么做?也是硬编码?拿到所以的服务地址,然后循环取或者是随机取?那按权重负载均衡怎么做?按最小压力负载均衡怎么做?引发了一系列的问题。
这时候就需要引入注册中心,用于实现各个微服务的服务注册与发现。
服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服 务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中 的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实 例的访问。
简单的理解就是各个服务提供者把自己的服务信息注册到注册中心,由注册中心来统一管理,服务消费者则通过注册中心来拉取服务列表,从中找到自己想要的服务,远程调用该服务,个人感觉,这其实也是一种抽象和解耦的思想,把一些公共的,耦合度高的功能抽象出来,独立维护,方便之后的扩展。
常见的注册中心有Zookeeper ,Eureka ,Consul ,Nacos等,这里使用Nacos,Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,实现了动态服务发现、服务配置、服务元数据及流量管理。
Nacos怎么下载与启动,可以参考本篇博客【安装nacos】。
下载启动完毕后,把各个微服务注册进nacos只需要三步
1.在pom.xml中添加nacos的依赖 ,这里加在mall-common项目里,做统一管理
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2 在主类上添加@EnableDiscoveryClient注解,让注册中心能够发现,扫描到该服务,示例如下:
3.在application.yml中添加nacos服务的地址 ,如下:
4.每个服务都定义下自己的服务名,方便识别,示例如下:
每个服务重复2,3,4步骤,启动各服务,浏览器输入http://127.0.0.1:8848/nacos,查看服务列表,结果如下:
可以发现,目前3个服务都已经注册进nacos了,完成了微服务架构中最核心最基本的服务治理模块 ,接下来就是围绕服务治理,优化各服务之间的调用方式了。
上一篇: 记一次源码启动Nacos
下一篇: 二、Spring Cloud 配置中心
推荐阅读
-
Spring Cloud Alibaba | Nacos服务中心初探
-
Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(服务注册+配置管理示例)
-
spring cloud alibaba之nacos配置中心
-
Spring Cloud Alibaba(1) 实现服务注册与发现 Nacos Discovery
-
Spring Cloud Alibaba系列使用(二)----Nacos注册中心
-
Spring Cloud Alibaba入门实践(四)-注册中心nacos
-
Spring Cloud Alibaba-使用nacos做注册中心
-
Spring Cloud Alibaba实战(二) - Nacos注册中心
-
Spring Cloud 系列之 Alibaba Nacos 注册中心(二)
-
Nacos替换spring cloud注册中心Eureka