Eure 服务发现|学习笔记

简介: 快速学习 Eure 服务发现

开发者学堂课程【微服务框架 Spring Cloud 快速入门:Eure 服务发现】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/614/detail/9350


Eure 服务发现

 

目录

一. 前言

二. microservicecloud-provider-dept-8001服务发现Discovery


一、前言

服务发现:

点击此处。Eureka 自我点击 (相当于自我信息的掌握),现在服务发现的意思是表明类似于本服务的说明对外暴露于微服务,并让消费者知晓。 image.png

二、microservicecloud-provider-dept-8001服务发现Discovery

1. 对于注册进 eureka 里面的微服务,可以通过服务发现来获得该服务的信息

登陆一个网站,查出当前进驻宏福科技园的企业有哪一些,需要对外暴露查询接口或者淘宝上下一个单,查询快递的路径以及快递员有一种快递信息发现的接口和信息

2. 修改 microservicecloud-provider-dept-8001工程的 DeptController

添加新的接口:服务发现接口

接口: DiscoveryClient client;

接下来返回 depart 8001

此处名称为 client,言下之意此处做一个类似于 dept,Discovery,Requestbody 的服务或方法让大家知道展示的模样和所表达的信息

@RequestMapping(value = "/dept/discovery" ,

method = RequestMethod.GET)

public Object discovery()

{

List list = client.getSenxices();

system.out.println("***********”+ list);

List srvList = client.getInstances.("MICROSERVICECLOUD-DEPT"for (ServiceInstane element : srvList) {

System.out.println(element.getserviceId() + "\t"

+ element.getHost() + "

+ element.getUri());

}

return this.client;

}

根据要求:可能存在包导入出错,discovery 之后,直接进入如下lmport'DiscoveryClient'(org.springframeworkcloud.client.discovery)

得到最终结果白令全消除。

RequestMapping(value = "/dept/discovery" , method m RequestMethod.GET)

public object discovery()

}

List list = client.getServices();

System.out.print1n("***********”+list);

List srvList = client.

getInstances("IcROSERVICECLOUD-DEPT");

for (ServiceInstance element : srvList){

system.out.println(element.getServiceId() + "\t”+ element.getHtost() + "\t"+ element.getPort() + "\t"

element-getUri());

}

return this.client;

要服务发现,让别人来进行解读服务自身对自我描述情况:

@Autowired

private DiscoveryClient client;(定义的变量)

client.getServices之前 Eureka 中有一个微服务,此处为盘点 Eureka 中拥有的微服务有多少个,有哪些。

假设有一个微服务叫做部门,后续工作中添加越来越多的部门,商品,交易,订单,则 list 有四个微服务。

在微服务列表清单中,将 list 打印出来。第52行这个list有很多,要将这个 collect 转到 list 里,然后找出一个部门的微服务并打出这个部门微服务它的id主机名字,端口以及访问地址的相关信息。这种情况下,是对微服务信息的一种 infor 信息的描述和提供暴露出给大家调用

3. DeptProvider8001_App 主启动类EnableDiscoveryClient

@SpringBootApplication

@EnableEurekaClient l/本服务启动后会自动注册进eureka服务中EnableDiscoveryClient //服务发现

public class Deptprovider8001_App

public static void main(String[] args)

{

SpringApplication.run(DeptProvider8001_App.class, args );

}

}

主启动类做服务发现

@EnableDiscoveryClient //服务发现

4. 自测

(1)先要启动 EurekaServer

(2)再启动 DeptProvider8001_App 主启动类,需要稍等一会儿

8001需要花时间进入对应的EurekaServer

启动7001.8001

主体动类带来注解提供了服务发现,对外可以暴露。现在 Rest 的访问风格带有 dpt/ discovery

@RequestMapping(value = "/dept/discovery" , method = RequestMethod.GET)

(3)http://localhost:8001/dept/discovery

相当于自测,8001为自己,查看微服务者查看自己的 discovery 接口是否能通?这样才能知道是否对外暴露。

结果:

{"services":[],"localServiceInstance": {"host":"192.168.11.1"," port":8001," secure":false,"metadata":

{}, "uri":"http://192.168.11.1:8001", " serviceld":"microservicecloud-dept"}}

此处只有一个微服务,结合代码

System.out-println("***********"+ list);

得到:

**********[microservicecloud-deptl]

MICROSERVICECLOUD-DEPT192.168.11.1 8001 http://192.168.11.1:8001

如果后有部门商品交易,订单,库存,积分,那么在其中会越来越多

在微服务清单中找出 MICROSERVICECLOUD-DEPT,查找ServiceId,主机,名字等。

每刷新一次,则出现

MICROSERVICECLOUD-DEPT

192.168.11.1(IP)

8001(端口)

http://192.168.11.1:8001(地址)

5. 修改 microservicecloud-consumer-dept-80 工程的 DeptController Consumer

/测试 @EnableDiscoveryClient, 消费端可以调用服务发现@RequestMapping(value=" / consumer/dept/discovery")

public 0bject discovery()

{returnrestTemplate.getForobject(REST_URL_PREFIX+"/dept/discovery" , object.class);

}

微服务工程不是重点服务发现,只是对 Discoveryclient 对象的使用。

回到80号 controller

//测试 @EnableDiscoveryClient, 消费端可以调用服务发现

@RequestMapping(value = "/consumer/dept/discovery")public 0bject discovery()

{

return restTemplate.getForObject(REST_URL_PREFIX + "/dept/discovery",Object.class);

}

最终 consumer 说的为基准,最终为消费者提供服务。

/consumer/dept/discovery/dept/discovery/dept/discovery路径

相当于80用 consumer 消费者的路径访问了8001微服务提供者

现在启动80

80消费者,7001Eureka 服务注册中心,8001微服务的提供者

从客户端访问:

("services":["microservicecloud-dept"],"localServiceInstance : ('host":"192.168.11.1","port":8001," secure :false metadata" ;, "uri":"http://192.168.11.1:8001" ," serviceId" :"microservicecloud-dept"}}

让别人查询:通过8001做一个对外服务的窗口和rest进行访问,从而获得了解。

相关文章
|
4月前
|
缓存 负载均衡 Java
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
文章标题为“OpenFeign的Ribbon负载均衡详解”,是继OpenFeign十大可扩展组件讨论之后,深入探讨了Ribbon如何为OpenFeign提供负载均衡能力的详解。
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
|
4月前
|
JSON Nacos 开发工具
微服务通过nacos实现动态路由
微服务通过nacos实现动态路由
96 7
|
7月前
|
Java 数据库连接 Nacos
Nacos作为一个服务发现和配置管理平台
Nacos作为一个服务发现和配置管理平台【1月更文挑战第18天】【1月更文挑战第88篇】
83 4
|
7月前
|
负载均衡 定位技术 Nacos
Nacos 高级玩法:深入探讨分布式配置和服务发现
Nacos 高级玩法:深入探讨分布式配置和服务发现
712 0
|
NoSQL API Nacos
Nacos是一个开源的微服务架构下的服务发现和配置管理工具,
Nacos是一个开源的微服务架构下的服务发现和配置管理工具,
159 2
|
Kubernetes 负载均衡 网络协议
K8s如何实现服务发现与配置管理
K8s在实现负载均衡与配置管理上的原理是咋样的呢?
|
网络协议 Nacos 数据中心
Nacos:服务发现与配置管理利器
在现代分布式系统中,服务的动态发现和配置管理变得越来越重要。Nacos(发音为 "na-kos",中文名:诺克斯)作为一个开源的服务发现和配置管理平台,在这个领域发挥着重要作用。本文将介绍Nacos的基本概念、特性以及在构建可靠分布式系统中的应用。
389 0
|
域名解析 缓存 容灾
面试官:谈一下你对Nacos动态服务发现的理解
现如今市面上注册中心的轮子很多,我实际使用过的就有三款:Eureka、Gsched、Nacos,由于当前参与 Nacos 集群的维护和开发工作,期间也参与了 Nacos 社区的一些开发和 Bug Fix 工作,过程中对 Nacos 原理有了一定的积累,今天给大家分享一下 Nacos 动态服务发现的原理。
|
负载均衡 网络协议 算法
什么是服务发现 | 学习笔记
快速学习什么是服务发现。
207 0
什么是服务发现 | 学习笔记
|
Kubernetes 监控 Cloud Native
服务发现与配置管理高可用最佳实践|学习笔记(三)
快速学习服务发现与配置管理高可用最佳实践
服务发现与配置管理高可用最佳实践|学习笔记(三)