欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Cloud Alibaba入门实践(四)-注册中心nacos

程序员文章站 2022-07-15 09:49:43
...

通过上篇博客,已经定义好了3个能够正常运行的微服务,然后通过RestTemplate来实现各个服务间的远程调用。

那么先考虑下之后业务扩展,可能会引发的问题有哪些?

  1. 远程调用使用RestTemplate硬编码,代码耦合度高,同时修改不易。
  2. 微服务为了实现高可用,势必要做多实例部署,那么多实例应该如何管理,还是使用硬编码维护地址么?调用关系突然就变得复杂了
  3. 一个服务有多个实例,除了高可用,肯定也得做负载均衡,分流减压,那么这负载均衡怎么做?也是硬编码?拿到所以的服务地址,然后循环取或者是随机取?那按权重负载均衡怎么做?按最小压力负载均衡怎么做?引发了一系列的问题。

这时候就需要引入注册中心,用于实现各个微服务的服务注册与发现。

服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服 务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中 的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。

服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实 例的访问。

简单的理解就是各个服务提供者把自己的服务信息注册到注册中心,由注册中心来统一管理,服务消费者则通过注册中心来拉取服务列表,从中找到自己想要的服务,远程调用该服务,个人感觉,这其实也是一种抽象和解耦的思想,把一些公共的,耦合度高的功能抽象出来,独立维护,方便之后的扩展。

常见的注册中心有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注解,让注册中心能够发现,扫描到该服务,示例如下:
Spring Cloud Alibaba入门实践(四)-注册中心nacos
3.在application.yml中添加nacos服务的地址 ,如下:
Spring Cloud Alibaba入门实践(四)-注册中心nacos
4.每个服务都定义下自己的服务名,方便识别,示例如下:
Spring Cloud Alibaba入门实践(四)-注册中心nacos
每个服务重复2,3,4步骤,启动各服务,浏览器输入http://127.0.0.1:8848/nacos,查看服务列表,结果如下:
Spring Cloud Alibaba入门实践(四)-注册中心nacos
可以发现,目前3个服务都已经注册进nacos了,完成了微服务架构中最核心最基本的服务治理模块 ,接下来就是围绕服务治理,优化各服务之间的调用方式了。