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. ATP - UI 自动化测试用例管理平台搭建

    用到的工具:python3 + django2 + mysql + RabbitMQ + celery + selenium python3和selenium这个网上很多教程,我不在这一一说明:   ...

  2. Nifi组件脚本开发—ExecuteScript 使用指南(三)

    上一篇:Nifi组件脚本开发-ExecuteScript 使用指南(二) Part 3 - 高级特征 本系列的前两篇文章涵盖了 flow file 的基本操作, 如读写属性和内容, 以及使用" ...

  3. DRF 三大认证的配置及使用方法

    目录 三大认证 一.身份认证 1.身份认证配置 1.1 全局配置身份认证模块 1.2 局部配置身份认证模块 2.drf提供的身份认证类(了解) 3.rf-jwt提供的身份认证类(常用) 4.自定义身份 ...

  4. LeetCode1576. 替换所有的问号

    原题链接 1 class Solution { 2 public: 3 string modifyString(string s) { 4 int lens = s.length(); 5 for(i ...

  5. 鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端

    1.首先鸿蒙的js文件上传,设置目录路径为: 构建路径在工程主目录下: 该目录的说明见下面描述: 视图构建如下: 界面代码: <div class="container"&g ...

  6. POJ-2236(并查集)

    Wireless NetWork POJ-2236 需要注意这里的树的深度需要初始化为0. 而且,find函数需要使用路径压缩,这里的unint合并函数也使用了优化(用一开始简单的合并过不了). #i ...

  7. C# 基础 - 委托、事件

    1. 委托 sequenceDiagram 方法->>委托: 返回值和入参一样 委托->>方法: 调用委托就是调用绑定的方法 delegate int NumTest(int ...

  8. 读 Kafka 源码写优雅业务代码:配置类

    这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一剑! 往期文章 Kafka 探险 ...

  9. gulp打包详解

    gulp的作用 删除文件中冗余的内容,压缩文件,减小文件体积 实际项目中运行的都是压缩完成以后的文件 减小加载响应时间 gulp打包压缩对象 html,css,js,sass,webserver 音频 ...

  10. arcgis10.2 全套安装教程

    一.安装LicenseManager 1.运行在licensemanager目录下的Setup.exe 2.安装完成后点击stop停止服务,然后点击"OK" 3.选择ArcGIS1 ...