1.说明

本文介绍SpringCloud发现服务代码的开发,
通过使用EurekaClient,DiscoveryClient来发现注册中心的服务等,
从而可以自定义客户端对注册中心的高级用法。

2.使用EurekaClient发现服务

通过Spring自动注入的EurekaClient,
不仅能发现服务实例,
还能查看客户端连接等各种配置。

2.1.代码

package com.yuwen.spring.config.client.controller;import java.util.List;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.EurekaClient;
import com.netflix.discovery.EurekaClientConfig;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Applications;@RestController
public class EurekaClientController {private static Logger logger = LoggerFactory.getLogger(DiscoveryClientController.class);@Autowiredprivate EurekaClient eurekaClient;@GetMapping("/eureka")public String getEurekaClient() {EurekaClientConfig config = eurekaClient.getEurekaClientConfig();if (!(config instanceof EurekaClientConfigBean)) {return eurekaClient.toString();}EurekaClientConfigBean eurekaConfig = (EurekaClientConfigBean) config;logger.info("serviceUrl=" + eurekaConfig.getServiceUrl());Applications applications = eurekaClient.getApplications();List<Application> registeredApplications = applications.getRegisteredApplications();for (Application application : registeredApplications) {logger.info("Application Name=" + application.getName());List<InstanceInfo> instances = application.getInstances();for (InstanceInfo instance : instances) {StringBuilder sb = new StringBuilder();sb.append(instance.getAppName()).append("\t").append(instance.getHostName()).append("\t").append(instance.getPort()).append("\t").append(instance.getVIPAddress());logger.info("InstanceInfo=" + sb);}}return eurekaClient.toString();}
}

2.2.测试

使用浏览器访问:
http://localhost:8005/eureka
页面返回:

org.springframework.cloud.netflix.eureka.CloudEurekaClient@6715470c

控制台打印:

serviceUrl={fetch-registry=true, defaultZone=http://localhost:7007/eureka, register-with-eureka=true}
Application Name=CONFIG-CLIENT
InstanceInfo=CONFIG-CLIENT  192.168.171.1   8005    config-client

3.使用DiscoveryClient发现服务

使用DiscoveryClient可以发现注册中心上的服务,
注册中心可以是Eureka,也可以是Zookeeper等,
因为不使用原始Netflix EurekaClient,
所以在某种包装器后面的DiscoveryClient更易于使用。
它也能提供通过服务名称查询对应的所有服务实例等功能。

3.1.代码

package com.yuwen.spring.config.client.controller;import java.util.List;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DiscoveryClientController {private static Logger logger = LoggerFactory.getLogger(DiscoveryClientController.class);@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/discovery")public Object getDiscoveryClient() {List<String> services = discoveryClient.getServices();for (String service : services) {logger.info("service=" + service);}String serviceId = "CONFIG-CLIENT";List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);for (ServiceInstance instance : instances) {StringBuilder sb = new StringBuilder();sb.append(instance.getServiceId()).append("\t").append(instance.getHost()).append("\t").append(instance.getPort()).append("\t").append(instance.getUri());logger.info("instance=" + sb);}return discoveryClient;}
}

3.1.测试

使用浏览器访问:
http://localhost:8005/discovery

页面返回:

config-client00config-client0

控制台打印:

service=config-client
instance=CONFIG-CLIENT  192.168.171.1   8005    http://192.168.171.1:8005

可以看到Eureka上面只有一个服务CONFIG-CLIENT,
这个服务只有一个实例http://192.168.171.1:8005,
其实就是提供http://localhost:8005/discovery这个服务的实例。


http://www.taodudu.cc/news/show-1250983.html

相关文章:

  • SpringBoot集成Actuator监控管理
  • SpringBoot集成Actuator端点配置
  • SpringBoot集成Actuator健康指示器health
  • gRPC创建Java RPC服务
  • ProtoBuf3语法指南(Protocol Buffers)_上
  • ProtoBuf3语法指南(Protocol Buffers)_下
  • gPRC基本介绍
  • Log4j2日志框架集成Slf4j日志门面
  • XML解析的四种方式
  • XML解析和创建的JAXB方式
  • 【转载】JSON介绍
  • Elasticsearch单机安装Version7.10.1
  • Drools创建Maven工程
  • Java二、八、十、十六进制介绍
  • Drools集成SpringBoot
  • Drools集成SpringBootStarter
  • Jsonschema2pojo从JSON生成Java类(Maven)
  • YangTools从YANG生成Java类(Maven)
  • GitBash添加tree命令
  • SpringBoot集成Maven工程
  • SpringBoot开发Restful接口
  • Notepad++便签模式
  • SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
  • PowerDesigner生成数据库刷库脚本
  • PowerDesigner生成数据库设计文档
  • Eclipse配置国内镜像源
  • PingInfoView批量PING工具
  • Git合并两个不同的仓库
  • Guava事件处理组件Eventbus使用入门
  • Junit4集成到Maven工程

SpringCloud发现服务代码(EurekaClient,DiscoveryClient)相关推荐

  1. Eclipse启动SpringCloud微服务集群的方法

    1.说明 下面这篇文章介绍了Eureka Server集群的启动方法, SpringCloud创建Eureka模块集群 是通过jar包启动时指定配置文件的方式实现的. 现在只有Eureka Serve ...

  2. springcloud微服务系列之服务注册与发现组件Eureka

    一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...

  3. SpringCloud——Eureka服务注册和发现

    一.SpringCloud和Dubbo SpringCloud整合了一套较为完整的微服务解决方案框架,而Dubbo只是解决了微服务的几个方面的问题. content Dubbo SpringCloud ...

  4. SpringCloud微服务:Eureka组件之服务注册与发现

    一.Eureka基本架构 1.Eureka角色结构图 角色职责如下: 1).Register:服务注册中心,它是一个Eureka Server ,提供服务注册和发现功能. 2).Provider:服务 ...

  5. SpringCloud - 2. 服务注册 和 发现

    SpringCloud 的服务注册和发现是由Eureka来完成. 1.eureka server 1.1 依赖 <dependency><groupId>org.springf ...

  6. SpringCloud微服务-服务注册发现-负载均衡-服务调用-服务降级-服务网关-配置中心-消息总线-消息驱动-链路追踪-alibaba-nacos-sentinel-seata理论原理分析

    SpringCloud理论技术 概述 ​ Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总 ...

  7. SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务

    SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务 - 一.大致介绍 1.众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和 ...

  8. SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用

    什么是SpringCloud 微服务架构 • "微服务"一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到 http://mar ...

  9. SpringCloud微服务治理技术入门

    1.集群.分布式.微服务 首先先理解三个感念 什么是集群?: 同一个业务,部署在多个服务器上,目的是实现高可用,保证节点可用! 什么是分布式?: 一个业务分拆成多个子业务,部署在不同的服务器上,每个子 ...

最新文章

  1. windbg调试实例(4)--句柄泄露
  2. 【译】Thoughts and Goals on Qtum's x86 VM
  3. AI入门:Transfer Learning(迁移学习)
  4. java(3)——数据类型中的数值型的整数类型
  5. 11岁过python1级_11岁表弟写的Python零基础入门笔记!
  6. ubuntu+touch+android,移动操作系统Ubuntu Touch支持安卓应用
  7. SwiftUI 3.0调用SDWebImageSwiftUI 第三方框架
  8. 作为一个程序员,进步完全取决于自己
  9. Spring Boot单元测试入门实战之关于JUnit
  10. 机器学习发展历史回顾
  11. 如何通过a链接实现图片下载
  12. vue 中基于drag drop拖放实现左菜单和右画布的功能
  13. 艺工交叉——观《达芬奇的人生密码》有感
  14. 《编程之美》买书问题及c语言代码实现
  15. iphone和iPad开发的区别
  16. 自然语言处理(NLP)- 一个英文拼写纠错系统
  17. 架构师速成4.4-我该学什么语言
  18. Tomcat8安装后tomcat8w.exe点击出现“指定的服务未安装”解决方案
  19. JAVA电影院售票网站计算机毕业设计Mybatis+系统+数据库+调试部署
  20. 【美团点评2020校招测试方向笔试题】算法题部分1.删除字符 2.队列组合排序 3.寻找最小子字符串 4.最大矩形 5.最短送餐路程计算

热门文章

  1. Bootstrap报错:Bootstrap's JavaScript requires jQuery
  2. Oracle 11g常用管理命令(用户、表空间、权限)
  3. Linux课题实践一
  4. margin-top失效的解决办法
  5. 机器学习中的数学(七)--凸优化的基础知识
  6. Python for循环语句总结
  7. Cycle-2(循环)
  8. 7-9 地下迷宫探索 (8 分)
  9. 百度 经验 apache php mysql_php+Apache环境搭建教程
  10. 4011-基于邻接表的深度优先遍历(C++,取巧做法)