Spring Cloud Alibaba(4)---Nacos(注册中心)
Nacos(注册中心)
有关Spring Cloud Alibaba之前写过三篇文章。
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.xml、SpringBoot启动类、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.xml、SpringBoot启动类、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(注册中心)的更多相关文章
- Spring Cloud Alibaba 使用nacos 注册中心
### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...
- Spring Cloud Alibaba(5)---Nacos(配置中心)
Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...
- Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本
Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...
- Spring Cloud Alibaba(2)---Nacos概述
Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...
- Spring Cloud Alibaba(3)---Nacos概述
Spring Cloud Alibaba(3)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...
- spring cloud实战 1-高可用注册中心
创建父maven项目 提交代码至GitHub 创建eureka-server-1 项目搭建两种方式: 父pom中继承spring-boot-starter-parent,子pom中直接结成父pom.该 ...
- Spring Cloud 系列之 Consul 注册中心(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Consul 注册中心(一) 本篇文章讲解 Consul 集群环境的搭建. Consul 集群 上图是一个简单的 Co ...
- Spring Cloud Alibaba 整合 Nacos 实现服务配置中心
在之前的文章 <Nacos 本地单机版部署步骤和使用> 中,大家应该了解了 Nacos 是什么?其中 Nacos 提供了动态配置服务功能 一.Nacos 动态配置服务是什么? 官方是这么说 ...
- Spring Cloud Alibaba 教程 | Nacos(五)
扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...
随机推荐
- 方案设计:基于IDEA插件开发和字节码插桩技术,实现研发交付质量自动分析
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程.四种角色的相互配 ...
- Redis 日志篇:系统高可用的杀手锏
特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机,内存中的数据全部丢失,假如 ...
- C语言:贪心算法之装箱问题
#include <stdio.h> #include <stdlib.h> #define N 6 #define V 100 typedef struct box // 使 ...
- Spring-03 依赖注入(DI)
Spring-03 依赖注入(DI) 依赖注入(DI) 依赖注入(Dependency Injection,DI). 依赖 : 指Bean对象的创建依赖于容器,Bean对象的依赖资源. 注入 : 指B ...
- 控制流程-if/while/for
目录 一.控制流程之if判断 1.单分支结构 2.双分支结构 3.多分支结构 二.控制流程之while循环 1.基本使用 2.break 3.continue 三.流程控制之for循环 1.break ...
- 第47天打卡学习(单例模式 深入了解CAS 原子引用 各种锁的理解)
18彻底玩转 单例模式 饿汉式 DCL懒汉模式 探究! 饿汉式 package com.kuang.single; //饿汉式单例 //单例模式重要思想是构造器私有 public class Hun ...
- 痞子衡嵌入式:盘点国内RISC-V内核MCU厂商(2020年发布产品)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内RISC-V内核MCU厂商(2020). 虽然RISC-V风潮已经吹了好几年,但2019年才是其真正进入主流市场的元年,最近国内大量 ...
- “Mac应用”已损坏,打不开解决办法
问题说明: 通常在非 Mac App Store下载的软件都会提示"xxx已损坏,打不开.您应将它移到废纸篓"或者"打不开 xxx,因为它来自身份不明的开发者" ...
- nginx错误分析 `104: Connection reset by peer`
故障描述 应用从虚拟机环境迁移到kubernetes环境中,有些应用不定时出现请求失败的情况,且应用没有记录任何日志,而在NGINX中记录502错误.我们查看了之前虚拟机中的访问情况,没有发现该问题. ...
- 靶场练习-Sqli-labs通关记录(1-4关)
0x00 实验环境 本地:Win 10 靶场:sqli-labs(共65关,每日一关) 0x02 通关记录 简介:一天一关! (1)第一关: 简单的 ...