【云原生】微服务Nacos的简单介绍与使用

举报
酸菜鱼. 发表于 2022/07/12 09:00:46 2022/07/12
【摘要】 本文简单介绍了Nacos的特点以及使用,想要了解复习微服务的小伙伴儿们可以进来看看哟

前言:
最近看完了Nacos相关的课程,对相关知识总结如下,希望能够加深最近的印象以及帮助到各位大佬🎉🎉
如果文章有需要改进的地方还请大佬斧正🤞🤞
小威先感谢各位小伙伴儿了😉😉
在这里插入图片描述

🧁Nacos简介

国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。
Nacos是构建以“服务”为中⼼的现代应⽤架构(例如微服务范式、云原生范式)的服务基础设施,致力于微服务的发现、管理和信息配置,能帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理,从⽽更敏捷、更容易的构建、交付和管理微服务平台。Nacos几乎支持所有主流类型的服务的发现、配置和管理。Nacos服务领域模型主要分为命名空间、集群、服务
在这里插入图片描述

🍦Nacos实现原理

和我们之前介绍的Eureka很相似。

Nacos注册中心分为server与client,server采⽤Java编写,为client提供注册发现服务与配置服务。而client可以用多种语言实现,client与微服务嵌套在⼀起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。

服务注册的策略的是每5秒向nacos server发送⼀次心跳,心跳带上了服务名,服务ip,服务端⼝等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。
Nacos 而且支持基于 DNS 和基于 RPC 的服务发现。

原⽣SDK、OpenAPI、或⼀个独⽴的Agent TODO注册 Service 后,服务消费者可以使⽤DNS TODO或HTTP&API查找和发现服务。

如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例
Nacos 提供对服务的实时的健康检查,阻⽌向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层。

在这里插入图片描述

🍧Nacos的使用

1.引依赖:在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

在user-service和order-service中的pom文件中引入nacos-discovery依赖:

<dependency>   
<groupId>com.alibaba.cloud</groupId>    
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application代码

@SpringBootApplication
@EnableFeignClients(clients = UserClient.class,defaultConfiguration = DefaultFeignConfiguration.class)
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

在user-service和order-service的application.yml中添加nacos地址:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
mybatis:
  type-aliases-package: cn.itcast.user.pojo
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS

导入结果
在这里插入图片描述

🍹Nacos分级存储

一个服务可以有多个实例,例如我们的user-service,可以有81,82,83端口
假如这些实例分布于全国各地的不同机房,例如:

  • 127.0.0.1:8081,在上海机房
  • 127.0.0.1:8082,在上海机房
  • 127.0.0.1:8083,在杭州机房
    Nacos就将同一机房内的实例 划分为一个集群
    即user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型
    在这里插入图片描述

即Nacos分级模型:

  1. 一级是服务,例如提供用户功能的userservice服务
  2. 二级是集群,例如杭州机房集群、上海机房集群
  3. 三级是实例,例如杭州集群中某一台部署了userservice服务的服务器

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。
在这里插入图片描述

本文就先介绍这些,后续仍然会介绍Nacos的相关知识,如集群,负载均衡等。
大佬感觉文章写的还不错的话,期待得到大佬的支持哟🍺🍺🍺
最后再次感谢大家😉😉
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。