Nacos(注册中心)

有关Spring Cloud Alibaba之前写过三篇文章。

Spring Cloud Alibaba(1)---入门篇

Spring Cloud Alibaba(2)---RestTemplate微服务项目

Spring Cloud Alibaba(3)---Nacos概述

有关注册中心,之前有写过Eureka注册中心

SpringCloud(3)---Eureka服务注册与发现

前言

有关Nacos客户端的搭建和Nacos的介绍在 Spring Cloud Alibaba(2)---Nacos概述 有讲到,所以这里不在陈述。因为是要实现注册中心,所以一定是要有多个微服务,

上一篇博客 RestTemplate微服务项目 已经搭建好一个脚手架,这篇是在它的基础上添加Spring Cloud Alibaba框架和Nacos组件。

一、概述

1、没有服务注册中心

正常逻辑如果没有注册服务发现中心的话,订单服务如何去调取商品服务呢?

我们可以将服务调用 域名端口号 写死到代码或配置文件中,然后通过HTTP请求,这样做是可以,但有很多不足。

1、人工维护慢慢会出现瓶颈和问题:新增服务或服务扩容,所有依赖需要新增修改配置;
2、某台服务器挂了还要手动摘流量;服务上下线变更时效慢;
3、人工配置的话容易出现错误或漏配

这时你会想如果能让服务自动化完成配置(注册)和查找(发现)就好了,于是乎服务注册发现就应运而生。

2、Nacos注册中心理论

这里把这个图片做个简单解释

1. 订单服务和商品服务启动的时候, 会注册到服务发现中心(Nacos), 告诉它,我的ip和端口号是什么。
2. 订单服务要调商品服务的时候,会先去注册列表获取所以商品服务的注册信息(ip+端口号)。
3. 拿到了商品服务的ip和port, 接下来就可以调用商品服务了.

我们可以看出有了注册服务中心, 订单服务 需要知道 商品服务 的地址和端口号不需要通过我们去配置而是可以直接去注册中心拿到。

二、项目搭建

1、启动Nacos客户端

有关Nacos客户端的搭建之前有说过,这里不在陈述

sh startup.sh -m standalone

2、父工程(mall-parent)

对于父工程,只要添加SpringCloudAlibaba相关jar包就可以了

pom.xml

            <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency> <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

3、商品微服务(mall-goods)-消费方

这里需要修改三个地方:pom.xmlSpringBoot启动类bootstrap.yaml配置类

1).pom.xml

添加Nacos客户端jar包

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

2).bootstrap.yaml配置类

注册到指定Nacos客户端

spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

3).SpringBoot启动类

添加@EnableDiscoveryClient注解

@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.jincou.goods.dao")
public class GoodsApplication { public static void main(String [] args){
SpringApplication.run(GoodsApplication.class,args);
} }

4、订单微服务(mall-order)-提供方

这里同样需要修改三个地方:pom.xmlSpringBoot启动类bootstrap.yaml配置类,代码和上面一样这里就不在贴出。

三、测试

商品微服务采用集群方式启动,端口号分别为:6001、6002
订单微服务未采用集群方式启动,订单服务端口号:7001

上面都启动成功后,我们来访问Nacos客户端。

http://127.0.0.1:8848/nacos

从图中可以看出 在服务列表上

 mall-goods 健康实例数有两个。因为商品服务商品是启动了2个。
mall-order 健康实例数只有一个。

我们可以在看下,商品服务列表中的详情,点进去之后,可以看出商品服务集群的端口

总结 这篇博客也是比较简单了来学习了Nacos作为服务注册中心,下一篇博客开始写Nacos作为配置中心

GitHub地址:spring-cloud-alibaba-study

少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(4)

Spring Cloud Alibaba(4)---Nacos(注册中心)的更多相关文章

  1. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

  2. Spring Cloud Alibaba(5)---Nacos(配置中心)

    Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...

  3. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  4. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  5. Spring Cloud Alibaba(3)---Nacos概述

    Spring Cloud Alibaba(3)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  6. spring cloud实战 1-高可用注册中心

    创建父maven项目 提交代码至GitHub 创建eureka-server-1 项目搭建两种方式: 父pom中继承spring-boot-starter-parent,子pom中直接结成父pom.该 ...

  7. Spring Cloud 系列之 Consul 注册中心(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Consul 注册中心(一) 本篇文章讲解 Consul 集群环境的搭建. Consul 集群 上图是一个简单的 Co ...

  8. Spring Cloud Alibaba 整合 Nacos 实现服务配置中心

    在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...

  9. Spring Cloud Alibaba 教程 | Nacos(五)

    扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...

随机推荐

  1. 手把手教你Centos7 部署 gitlab社区版

    一.前置说明: 操作系统:Centos 7 物理内存:>=2G 本人亲测,如果安装低版本的gitlab,比如我这里所使用的v8.17.0,物理内存1G,swap 2G虚拟内存即可部署.高版本的所 ...

  2. Vue学习笔记-Django REST framework3后端接口API学习

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  3. JS中try catch的用法

    在js中也可以使用try/catch语法,把可能发生异常的代码使用try包裹起来,然后在catch中对异常进行处理,处理后就不会影响后面代码的执行. const a = null try { cons ...

  4. Linux常用小命令

    1:查看当前磁盘内存 df-ah/df-hl 2:查看文件和文件夹大小 du -h --max-depth=1 /目的文件夹 3:scp 拷贝命令 指定端口传输文件 scp -p port filen ...

  5. 创建AD域之后设置DNS服务访问外网

    AD域内需要有DNS服务器,用于解析域内的计算机名,域内的计算解析公网的域名需要设置一个转发器(Forwarder). 一定要设置好自己的默认网关.DNS因为部署在AD服务器上,直接loopback地 ...

  6. JAVA基础(一)—— 基础类型与面向对象

    JAVA基础(一)--基础类型与面向对象 1 数据类型 基本类型 byte short int long float double boolean char n 8 16 32 64 32 64 tr ...

  7. deepin-terminal改造之路

    目录 1. 背景介绍 2. 下载源码 3. 依赖检查及安装 4. 改造之路 4.1 终端透明度快捷键 4.1.1 设置面板增加选项内容 4.1.2 添加配置解析内容 4.1.3 功能实现 4.1.4 ...

  8. 10万级etl调度软件Taskctl-web版免费授权及产品功能特性

    转: 10万级etl调度软件Taskctl-web版免费授权及产品功能特性 初识Taskctl-Web版 Taskctl Free应用版原型是在原有商用版Taskctl 6.0衍生扩展开发出的专门为批 ...

  9. Kibana 插件环境搭建教程

    原文 环境背景, Kibana 7.4.0, Elasticsearch 7.4.0 注意, 执行以下命令时, 尽量在管理员权限的命令行窗口里执行, 避免一些没有权限的报错; 1. 准备 Kibana ...

  10. ORM框架 和 面向对象编程

    ORM框架: 1.SQLAlchemy:  - 作用   1.提供简单的规则   2.自动转换成SQL语句  - DB first/code first   DB first: 手动创建数据库以及表  ...