微服务架构概述和 nacos 的介绍使用

记录学习微服务与分布式架构,学习 alibaba系列组件

1.区分微服务和传统服务单机架构有哪些区别?

上图解释
微服务架构概述和 nacos 的介绍使用_第1张图片

传统单机: 耦合度过高,数据库压力大,当单点故障以后系统全盘崩溃

微服务架构概述和 nacos 的介绍使用_第2张图片

分布式架构:引入服务的概念,将模块拆分成一个个服务,原则上来说,每个服务单独单独享有一个属于自己的数据库,通过相互依赖和调用,组成统一的服务。
核心组件:

  1. 网关
  2. 服务的发现与注册
  3. 负载均衡器
  4. 熔断器(监控流量进行熔断或降级处理)
  5. 配置中心服务
  6. 链路追踪服务

综上,在如今数据爆炸,全民进入互联网的今天,分布式架构有哪些优势呢?

  1. 易开发 和维护
    2.独立的部署和启动

但是我们也可以看到,这样的架构,有一个复杂的问题,就是要互相协同调用,对于治理需要付出精力。

作为一个服务如果我们想要调用别的服务,我们可以怎么做呢?

首先我们会想到用 Restemplate类来解决,提供uri地址进行通信,但是我们需要将url写死,对于数十个甚至上百个服务未免也太麻烦。因为 ip地址和端口是有可能改变的

Video video = restTemplate.getForObject("http://localhost:9000/api/v1/video/find_by_id?videoId="+videoId,Video.class);

所以我们引入了第一个组件,注册中心服务,负责发现和管理所有的服务。

2. nacos

一款alibaba 系的明星产品,可以负责发现和注册,相较于 其他产品,nacos 同时还提供动态配置的服务。
官网学习地址:https://nacos.io/zh-cn/

那么首先,什么是注册中心呢?

服务的注册:服务提供者provider,启动之后将自己的信息注册到注册中心,
服务的发现:对于其他服务而言,其他服务作为消费者,可以通过实时拉取注册中心上的服务名称来进行调用,避免上文说到的牵一发而动全身。
核心功能就是服务的管理,动态维护更新服务注册列表

admin / password: nacos / nacos

微服务架构概述和 nacos 的介绍使用_第3张图片

我们可以在服务列表里面发现我们注册启动的服务

使用步骤:

1. 添加依赖

<!--添加nacos客户端-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. 配置 application.xml

spring:
  application:
    name: #服务名称 video-servcie
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3. 通过注解进行使用

	在 XXXApplication类上写上 @EnableDiscoveryClient; 则可以nacos 发现并注册

微服务架构概述和 nacos 的介绍使用_第4张图片

// 这样通过服务名就可以直接从注册中心中拉取该名字的服务列表
List<ServiceInstance> list = discoveryClient.getInstances("video-service");
​
 ServiceInstance serviceInstance = list.get(0);
Video video =  videorestTemplate.getForObject("http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+
                "/api/v1/video/find_by_id?videoId="+videoId,Video.class);

你可能感兴趣的:(微服务)