一、服务的提供者与服务的消费者

二、服务发现原理

如果用户中心地址发生变化怎么办?

服务的消费者总能找到服务的提供者的这种原理,即服务发现原理。

三、什么是Nacos?

Nacos文档地址请查看,引入Nacos,架构的演进

四、搭建Nacos Server

1、下载Nacos 下载地址

在spring-cloud-alibaba-dependencies下按住Ctrl+鼠标左键,查看Nacos组件相关的版本。

<nacos.client.version>1.0.0</nacos.client.version>
<nacos.config.version>0.8.0</nacos.config.version>

nacos-server-1.0.1是兼容nacos-server-1.0.0的,所以我这里选用nacos-server-1.0.1版本。

2、搭建Nacos Server

Nacos 快速开始

五、将应用注册到Nacos

1、将user-content注册到Nacos

pom.xml添加
<!--spring-cloud-starter-{spring cloud子项目名称}-[{模块名称}]-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
application.yml添加
spring:
cloud:
nacos:
discovery:
#指定nacos server的地址
server-addr: localhost:8848
application:
# 服务名称尽量用-,不用要_,更不要用特殊字符
name: user-center
启动服务

在此之前,你应该先启动nacos-server

登录查看注册的服务

2、将content-center注册到Nacos

按照user-center将content-center注册到Nacos

在此刷新页面,我们可以看到

3、在content-center下编写测试代码

在TestController下添加如下代码

@Autowired
private DiscoveryClient discoveryClient;
/**
* 测试:服务发现,证明内容中心可以查找到用户中心
* @return 用户中心所有地址的详细信息
*/
@GetMapping("/test2")
public List<ServiceInstance> getInstances(){
// 查询指定服务所有实例的信息
return this.discoveryClient.getInstances("user-center");
}

在浏览器下进行测试

开启用户中心多个实例进行测试

思考?如果将用户中心断开,再次刷新浏览器观察变化

六、为内容中心引入服务发现

修改ShareService

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ShareService {
private final ShareMapper shareMapper;
private final RestTemplate restTemplate;
private final DiscoveryClient discoveryClient; public ShareDTO findById(Integer id){
// 获取分享的详情
Share share = this.shareMapper.selectByPrimaryKey(id);
// 发布人id
Integer userId = share.getUserId();
// 获取用户中心所有实例信息
List<ServiceInstance> instances = discoveryClient.getInstances("user-center");
String targetURL = instances.stream()
// 数据变换
.map(instance-> instance.getUri().toString() + "/users/{id}")
.findFirst()
.orElseThrow(()-> new IllegalArgumentException("当前没有实例")); log.info("请求的目标地址:{}",targetURL);
// 怎么调用用户微服务的users/{userId}
UserDTO userDTO = this.restTemplate.getForObject(
targetURL,
UserDTO.class,
userId
);
// 消息的装配
ShareDTO shareDTO = new ShareDTO();
BeanUtils.copyProperties(share,shareDTO);
shareDTO.setWxNickname(userDTO.getWxNickname());
return shareDTO;
}
}
测试

七、Nacos服务发现的领域模型

  • Namespace:实现隔离,默认public
  • Group:不同服务可以分到一个组,默认DEFAULT_GROUP
  • Service:微服务
  • Cluster:对指定微服务的一个虚拟划分,默认DEFAULT
  • Instance:微服务实例

八、Nacos元数据

官方文档说明

元数据的作用
  • 提供描述信息
  • 让微服务调用更加灵活
如何为微服务设置元数据?
  • 控制台方式指定
  • 配置文件指定

1.【Spring Cloud Alibaba】服务发现-Nacos的更多相关文章

  1. Spring Cloud Alibaba基础教程-Nacos(三)

    在Spring Cloud Alibaba基础教程-Nacos(二)当中学习了,如何使用 nacos图形化界面操作 ,使用Nacos部署集群,下面我们开始Nacos最后一篇的学习 ,如果对你有帮助,记 ...

  2. Spring Cloud Alibaba基础教程-Nacos(二)

    在Spring Cloud Alibaba基础教程-Nacos(一)当中学习了,如何从 nacos当中 通过Java的方式获取值,以及连接数据库,下面我们开始第二篇的学习 ,如果对你有帮助,方便下次寻 ...

  3. Spring Cloud Alibaba基础教程-Nacos(一)

    2019快结束,也有很久没写博客了,今天我们来谈谈Nacos,如果对您有帮助,麻烦左上角点个关注 ,谢谢 ! 嘻嘻 今天先写第一篇 文章目录 为什么要使用Nacos Eureka 闭源 Nacos的优 ...

  4. Spring Cloud Eureka 服务发现 4.2

      在微服务架构中,服务发现可以说是最为核心和基础的模块,该模块主要用于实现各个微服务实例的自动化注册与发现.在Spring Cloud的子项目中,Spring Cloud Netflix提供了Eur ...

  5. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...

  6. Spring Cloud Alibaba(11)---Sentinel+Nacos持久化

    Sentinel+Nacos持久化 有关Sentinel之前有写过两篇 Spring Cloud Alibaba(9)---Sentinel概述 Spring Cloud Alibaba(10)--- ...

  7. Spring Cloud Alibaba教程:Nacos

    Nacos是什么 Nacos 致力于帮助您发现.配置和管理微服务,它 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 注册中心 nacos-server 可以 ...

  8. 笔记:Spring Cloud Eureka 服务发现与消费

    服务发现与消费,其服务发现的任务是由Eureka的客户端完成,而服务的消费任务由Ribbon.JerseyClient等完成,Ribbon是一个基于HTTP和TCP的客户端负载均衡器:使用Jersey ...

  9. Spring Cloud Eureka 服务发现与消费

    服务发现与消费,其服务发现的任务是由Eureka的客户端完成,而服务的消费任务由Ribbon.JerseyClient等完成,Ribbon是一个基于HTTP和TCP的客户端负载均衡器:使用Jersey ...

  10. SpringCloud微服务实战一:Spring Cloud Eureka 服务发现与注册中心(高可用实列为两个注册中心)

    微服务架构: 微服务架构的核心思想是,一个应用是由多个小的.相互独立的.微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖.不同服务通过一些轻量级交互机制来通信,例如 RPC.HTTP 等, ...

随机推荐

  1. C#实现DataTable转.CSV文件

    将DataTable转换成CSV文件是一种常见的转换形式,主要通过遍历Table的每行,再对每行遍历每列,实现对数据的读取,然后用分隔符分隔Table的每个栏位数据,把读取的字符写入到CSV文件中.这 ...

  2. js正则定义支付宝账号、手机号、邮箱

    一.支付宝账号:可以只输入数字.字母.字母(数字)+数字(字母),其中只字母中可以含有@._或者.也可以三者都可以包含并且可以在任意位置,限制:小于等于30位(可根据需求自定义范围): let  zh ...

  3. CSP-S rp++

    心无旁骛 认真思考 努力骗分(哈哈) I Love CSP! 反正像我这种大菜鸟也考不了多少 尽力打 本次考试期望 day1 100 70-100 30-? day2 100 ? ? 总:300-? ...

  4. android:整理drawable(shapdrawable)(二)

    前言 bitmapdrawable 与nithpathdrawable 完结,接下来是shapedrawable. shapedrawable是使用频率最高的drawable 可见其重要性. shap ...

  5. msi通过powershell安装、卸载

    function install_msi($url) { $telemetry = @{ DisplayName = "Telemetry Service"; filename = ...

  6. 使用 CompletableFuture 异步组装数据

    使用 CompletableFuture 异步组装数据 一种快捷.优雅的异步组装数据方式 实际项目中经常遇到这种情况: 从多个表中查找到数据然后拼装成一个VO返回给前端. 这个过程有可能会非常耗时.因 ...

  7. Linux开发环境准备(一)

    工欲善其事,必先利其器 今天是腊月廿九,明天春节.我想着在今天对2019年所学到的东西做下总结. 从操作系统的安全性,系统代码是否开源,对开发人员的友好性,以及学习和工作的需求,我最终选择了Linux ...

  8. linux--->redis php扩展安装

    阿里云centos6.9下 redis php扩展安装 下载phpredis wget http://pecl.php.net/get/redis-3.1.0.tgz 或 wget https://g ...

  9. nmap详解之基础概述

    概述 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect( ...

  10. 令牌桶算法实现API限流

    令牌桶算法( Token Bucket )和 Leaky Bucket 效果一样但方向相反的算法,更加容易理解.随着时间流逝,系统会按恒定 1/QPS 时间间隔(如果 QPS=100 ,则间隔是 10 ...