返回顶部
首页 > 资讯 > 后端开发 > Python >SpringCloud根据服务名获取服务的ip端口问题
  • 366
分享到

SpringCloud根据服务名获取服务的ip端口问题

2024-04-02 19:04:59 366人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录方式一:通过loadBalancerClient来获取方式二:通过discoveryClient来获取本篇示例我就以Nacos注册中心为例了,下面是我注册的两个服务。其中naco

本篇示例我就以Nacos注册中心为例了,下面是我注册的两个服务。其中nacos-payment-provider服务是集群,有两个实例。

方式一:通过loadBalancerClient来获取

如果使用的Nacos为注册中心的时候会发现一个问题,当引入的依赖版本比较高的时候,RestTemplate+@LoadBalanced 通过服务名称调用的时候会报错,使用其他注册中心默认都会引用ribbon依赖,因此我们只需要在注入RestTemplate的时候加上@LoadBalanced就可以实现根据名称负载均衡调用。

而nacos高版本依赖包没有引用ribbon依赖。ribbon早就已经彻底停更了,spring又自己出了一个loadbalancer负载均衡框架,来配合RestTemplate使用。但是他并没有自动引用loadbalancer依赖所以我们需要自己引用才可以使用。

@Configuration
public class ApplicationContextBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

使用如下获取ip端口的前提:引用了loadbalancer来作为负载均衡

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

loadBalancerClient.choose()这个方法就是负载均衡的核心方法。假如服务名称为nacos-payment-provider有两个实例,一个9001一个9002,通过如下方法调用会发现每次都是在轮询。

@Autowired
private LoadBalancerClient loadBalancerClient;

@GetMapping("/getServiceInstance")
public ServiceInstance getServiceInstance() {
    ServiceInstance serviceInstance = loadBalancerClient.choose("nacos-payment-provider");
    System.out.println(serviceInstance.getHost()); // ip
    System.out.println(serviceInstance.getPort()); // 端口
    System.out.println(serviceInstance.getInstanceId()); // 实例id
    System.out.println(serviceInstance.getServiceId()); // 服务id
    System.out.println(serviceInstance.getMetadata()); // 与服务实例关联的元数据
    System.out.println(serviceInstance.getScheme());    // 返回服务实例的方案
    System.out.println(serviceInstance.getUri().toString()); // 返回服务的uri地址
    return serviceInstance;
}

loadbalancer源码

方式二:通过discoveryClient来获取

这种方式其他注册中心也可以使用!

@Resource
private DiscoveryClient discoveryClient;

@GetMapping("/getServiceInstanceList")
public List<ServiceInstance> getServiceInstanceList() {
	// 根据服务名称查找所有的实例
    return discoveryClient.getInstances("nacos-payment-provider");
}

DiscoveryClient这个其实是个接口存放于cloud-commons包当中。

既然是接口为什么他能获取到呢?我们可以看他的实现类,是有如下实现类的,也就是在nacos的服务发现依赖当中会存在他的实现类,并注入到容器当中了。其他注册中心也是同样如此。可以说这个接口是共用的,其他的注册中心都可以来实现。

方式三:通过NacosServiceManager来获取

这个是nacos独有的!

@Autowired
private NacosServiceManager nacosServiceManager;

@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;
    
@GetMapping("/nacos")
public List<Instance> getGatewayAddress() {
    String res = null;
    try {
        NamingService namingService = nacosServiceManager.getNamingService(nacosDiscoveryProperties.getNacosProperties());
        List<Instance> allInstances = namingService.getAllInstances("nacos-payment-provider");
        return allInstances;
    } catch (NacosException e) {
        e.printStackTrace();
        return null;
    }
}

到此这篇关于spring cloud根据服务名获取服务的ip端口的文章就介绍到这了,更多相关Spring Cloud ip端口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringCloud根据服务名获取服务的ip端口问题

本文链接: https://lsjlt.com/news/167205.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringCloud根据服务名获取服务的ip端口问题
    目录方式一:通过loadBalancerClient来获取方式二:通过discoveryClient来获取本篇示例我就以Nacos注册中心为例了,下面是我注册的两个服务。其中naco...
    99+
    2024-04-02
  • springboot如何获取服务器ip和端口号
    在Spring Boot中,可以通过注入`ServerProperties`来获取服务器的IP和端口号。具体步骤如下:1. 在`ap...
    99+
    2023-08-09
    springboot 服务器
  • 【通过URL获取目标服务器IP和端口号】
    通过URL获取目标服务器IP和端口号:原理、应用和实战项目 引言 在网络应用开发和网络安全领域,有时需要根据给定的URL获取目标服务器的IP地址和端口号。通过URL获取目标服务器IP和端口号的过程涉及...
    99+
    2023-09-01
    服务器 tcp/ip 网络
  • 获取服务器ip地址和端口的方法是什么
    获取服务器IP地址和端口的方法取决于您使用的操作系统和网络工具。以下是一些常用的方法:1. 在Windows操作系统中,打开命令提示...
    99+
    2023-06-07
    获取服务器ip 服务器
  • python脚本获取服务器ip,主机名
    python3 写法#!/usr/bin/env python#-- coding:utf-8 -- import socketimport fcntl,structimport time def getHardware(outip,ini...
    99+
    2023-01-31
    脚本 主机名 服务器
  • 如何解决SpringCloud服务注册IP错误的问题
    这篇文章主要介绍“如何解决SpringCloud服务注册IP错误的问题”,在日常操作中,相信很多人在如何解决SpringCloud服务注册IP错误的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决S...
    99+
    2023-06-20
  • 服务器端口根据服务方式分为哪两类
    服务器端口根据服务方式分为:1、TCP协议端口,采用TCP协议,直接与接收方进行连接,发送信息后,能确认信息是否到达;2、UDP协议端口,采用UDP协议,是一种无连接方式,不是直接与接收方进行连接。具体内容如下:TCP协议端口这种端口是直接...
    99+
    2024-04-02
  • PHP获取客户端及服务器端IP的封装类
    以下是一个封装了获取客户端和服务器端IP的PHP类的示例:```phpclass IPHelper {public static f...
    99+
    2023-08-29
    PHP
  • 如何在logback日志配置里获取服务器ip和端口
    目录logback日志配置获取服务器ip和端口1、新建一个类继承ClassicConverter2、在配置文件logback.xml增加如下配置3、在需要用到ip的位置这样写: %i...
    99+
    2024-04-02
  • 如何从eureka获取服务的ip和端口号进行Http的调用
    目录eureka获取服务ip和端口号进行Http调用eureka页面中显示ip+端口eureka获取服务ip和端口号进行Http调用 我告诉你们为啥我要先从eureka首先获取 go...
    99+
    2024-04-02
  • 通过weblogic API解析如何获取weblogic中服务的IP和端口操作
    我们的服务是部署在weblogic上的,最近遇到一个需求,需要在代码中获取weblogic部署当前服务的IP地址和端口。 后来搜到一段代码,亲测有效: public static...
    99+
    2024-04-02
  • 服务器端口根据性质分为哪几类
    服务器端口根据性质分为:1、公认端口,又称常用端口,用于紧密绑定于一些特定的服务,端口号是从0到1023;2、注册端口,用于松散地绑定于一些服务,端口号是从1024到49151;3、动态和/或私有端口,较为特殊的程序非常喜欢用这些端口,端口...
    99+
    2024-04-02
  • 获取阿里云服务器对外访问ip
    简介 在云计算时代,阿里云服务器成为了很多企业和个人选择的首选。然而,当我们购买阿里云服务器后,如何获取服务器的对外访问IP是一个常见的问题。本文将介绍如何获取阿里云服务器的对外访问IP,并提供一些使用方法。获取阿里云服务器对外访问IP的方...
    99+
    2023-12-28
    阿里 服务器 ip
  • 服务器防火墙开放端口(解决服务器端口无法访问问题)
    目录 一、解决思路 1. 判断服务器使用的是firewall还是iptable 2. 判断firewall当前开启的服务和端口,查看当前firewall的所有信息 3. 添加http服务 4. 重新执行 5. 添加开放端口 6.查看端口是否...
    99+
    2023-09-16
    服务器 网络 运维
  • js获取当前服务器的ip
    如果提供的服务不是域名,而是ip形式,获取当前服务器的IP地址,可以使用JavaScript中的window.location对象。window.location对象包含当前页面的URL信息,包括主机名、协议、端口号等。可以从window....
    99+
    2023-09-01
    服务器 javascript tcp/ip
  • Python实现获取域名所用服务器的真实IP
    本来是要写个程序用的,没写完不写了,这一部分就贴出来吧 验证域名和IP class JianKong(): '''查询IDC信息,封ip和过白名单''' def __init__(self): ...
    99+
    2022-06-04
    真实 服务器 域名
  • Linux服务器配置ip白名单防止远程登录以及端口暴露的问题
    前言 博主用的服务器是阿里云购买的,其实阿里云已经提供安全策略共给我们使用了,但是如果是公司自己的服务器,或者是我们自己的虚拟机等。还是需要自己看看配置好防火墙和如何配置白名单的。 1、阿里云的服务器,本身并没有防火墙,...
    99+
    2022-06-04
    Linux 白名单 远程登录 端口
  • 阿里云服务器访问IP和端口的关系
    在互联网世界中,IP地址和端口是两个重要的概念。IP地址用于标识互联网上的设备,而端口则是用于区分不同的应用程序和服务。那么,阿里云服务器访问IP和端口之间有什么关系呢? 文章详细说明:在互联网中,每个设备(如计算机、服务器、路由器等)都有...
    99+
    2023-12-13
    阿里 端口 关系
  • 怎么获取服务器的IP地址
    这篇文章主要介绍了怎么获取服务器的IP地址的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么获取服务器的IP地址文章都会有所收获,下面我们一起来看看吧。第一步:获取服务器IP地址要获取服务器IP地址,可以使用命...
    99+
    2023-07-06
  • python获取服务器端的时间
    import httplib import time import os def get_webservertime(host): try: conn=httplib.HTTPConnection(host) ...
    99+
    2023-01-31
    服务器端 时间 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作