微服务的注册中心

目前开源的注册中心框架有很多,国内比较常见的有:

  • Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用
  • Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用
  • Consul:HashiCorp公司出品,目前集成在SpringCloud中,不限制微服务语言
    以上几种注册中心都遵循SpringCloud中的API规范,因此在业务开发使用上没有太大差异。由于Nacos是国内产品,中文文档比较丰富,而且同时具备配置管理功能(后面会学习),因此在国内使用较多。
    我们基于Docker来部署Nacos的注册中心,首先我们要准备MySQL数据库表,用来存储Nacos的数据。然后将sql文件导入到Docker的MySQL文件中,由于是Docker部署,所以大家需要将资料中的SQL文件导入到你Docker中的MySQL容器中:
bash 复制代码
docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

启动完成后,访问下面地址:http://192.168.150.101:8848/nacos/,注意将192.168.150.101替换为你自己的虚拟机IP地址。首次访问会跳转到登录页,账号密码都是nacos。

接下来,我们把服务注册到Nacos,步骤如下:

  • 引入依赖``
  • 配置Nacos地址
  • 重启在pom.xml文件添加
bash 复制代码
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在application.yml中添加nacos地址配置:

bash 复制代码
spring:
  application:
    name: item-service # 服务名称
  cloud:
    nacos:
      server-addr: 192.168.150.101:8848 # nacos地址

启动实例访问nacos控制台就可以在服务管理的服务列表里面发现服务注册成功。

如果我们要订阅服务,这个这个过程就是服务发现,步骤如下:

  • 引入依赖
  • 配置Nacos地址
  • 发现并调用服务

这里Nacos的依赖于服务注册时一致,这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。我们在调用服务中的pom.xml中添加下面的依赖:

bash 复制代码
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在调用服务的application.yml中添加nacos地址配置:

bash 复制代码
spring:
  cloud:
    nacos:
      server-addr: 192.168.150.101:8848
相关推荐
韩楚风4 分钟前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian
Slice_cy14 分钟前
Mint 自研框架设计与实现:从重复开发走向配置驱动(五)
前端·后端·架构
heimeiyingwang21 分钟前
【架构实战】Helm Chart 进阶:依赖管理、测试与 CI/CD 集成
ci/cd·架构
四眼肥鱼23 分钟前
【Nextjs】macos 系统运行报错:Error: Cannot find module '../lightningcss.darwin-x64.node'
前端·架构·前端框架
Wang's Blog36 分钟前
Go-Zero项目开发34: 微服务超时控制与重试机制实践
开发语言·微服务·golang·go-zero
GitLqr1 小时前
别被“Flutter 传感器延迟 150ms”带偏了:这可能只是你的实现方式错了
flutter·架构·kotlin
SamDeepThinking1 小时前
微信支付对接实战:从下单到回调的完整落地过程
后端·程序员·架构
X-⃢_⃢-X2 小时前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
减瓦2 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生