nacos注册中心之服务注册

微服务是一种经过良好架构设计的分布式架构方案,特征:

1、单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。

2、面向服务:微服务对外暴露业务接口

3、自治:团队独立,技术独立,数据独立,部署独立

4、隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

因为每个服务之间是互相独立的,就连对应的数据库信息都是独立的,他们之间各自完成各自的服务,不会互相影响,具有隔离性。

但问题也就有了,我们在开发一个项目时,肯定要开发不止3,4个微服务,需要开发上百个微服务都是有可能的,且每个微服务实现的功能都很单一,在我们进行复杂一点的操作时就需要多个微服务互相调用。那么海量的微服务,我们应该怎么去管理他们,并且怎么让他们之间实现互相调用呢?

nacos注册中心就是来帮助我们做这个的:

我们都知道在微服务中有服务提供者和服务消费者。服务提供者:一次业务中,被其他微服务调用的服务。(提高接口给其他微服务);服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务的接口)。

在服务提供者和服务消费者等微服务启动时,就会向nacos注册中心发送注册信息,信息包括本服务的名字(配置中自定)和本微服务的端口号(暴露调用接口)等等信息。

这样nacos注册中心中就有了所有微服务的相关信息,在服务消费者需要调用服务提供者的服务时,就只需要向nacos注册中心根据服务名称去拉取对应的服务,nacos注册中心就会把调用该服务需要的所有信息发送给服务消费者,这样服务消费者就可以根据获取的端口和服务名称发送远程调用了。

同时为了防止已经在nacos注册中心完成注册的服务在调用中途挂了,而导致整个项目出现问题,nacos注册中心会让注册的服务每隔几秒或十几秒向nacos发送一次心跳,来向nacos证明该服务还活着,还能正常工作。

下面让我们先来下载nacos,网址:Tags · alibaba/nacos · GitHub

选择你想下载的版本就好了。

在注册后,你会得到一个nacos文件夹。

然后打开终端,在终端中启动nacos:先在终端中切换到nacos文件夹中的bin目录。

启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone

然后在浏览器中打开网址:http://localhost:8848/nacos

默认登陆账号和密码都是:nacos

如果启动成功就会显示这样的页面:

目前我还没有启动微服务并注册到nacos,所有现在为空 。

在我们需要启动并注册到nacos的服务的application.yml文件中应该声明好对应的数据库连接信息、本服务端口和nacos的地址。

XML 复制代码
server:
  port: 8088   #本服务端口号
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud?useSSL=false&allowPublicKeyRetrieval=true
    username: root
    password: quwenhao
    driver-class-name: com.mysql.jdbc.Driver
  application:
      name: orderservice  #注册到nacos中本服务的名称,后面会根据该名称做服务的远程调用
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 # nacos服务地址
#以后操作数据库mybatis的配置
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true

这样后启动该服务就被注册到nacos中。我启动了俩个

我们可以点击 详细 去查看该微服务的详细信息

相关推荐
SL_staff8 分钟前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈
Mikko739 分钟前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
.Bryce.1 小时前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
SL_staff1 小时前
JVS-APS的7个刚性约束设计:从无限产能幻觉到可执行排产的工程实践
java·spring cloud·全栈
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
Escalating_xu4 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅4 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路4 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData5 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat5 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm