目录:

springcloud费话之Eureka基础

springcloud费话之Eureka集群

springcloud费话之Eureka服务访问(restTemplate)

springcloud费话之Eureka接口调用(feign)

springcloud费话之断路器(hystrix in feign)

springcloud费话之配置中心基础(SVN)

springcloud费话之配置中心客户端(SVN)

完成了Eureka的服务器集群的搭建后,需要相互调用访问,该访问主要分为两种内容的请求

①对集群中的所有客户端的注册信息请求

②对集群中的所有客户端的接口的调用

本文使用restTemplate方式来实现相互调用

一、获取server中的注册的client的信息

 1.代码

找一个client,写一个java类,内容如下:

package com.lyh.lyh_eureka_server.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.EurekaClient; @RestController
@EnableEurekaClient
public class TestController { @Autowired
private EurekaClient eurekaClient; @RequestMapping("/getServerInfo")
public Object getServerInfo() {
// 通过eurekaClient访问服务器获取某个命名的集群。
// getNextServerFromEureka的第一个参数是服务器名称,可重复
// 因为获得的是下一个,所以是负载均衡的
InstanceInfo nextServerFromEureka = eurekaClient.getNextServerFromEureka("eureka-client-9020", false);
System.out.println("name:" + nextServerFromEureka.getAppName() + " port:" + nextServerFromEureka.getPort());
return nextServerFromEureka;
}
}

2.访问

访问该服务的地址+‘/getServerInfo’,浏览器访问得到的结果如下,更多api自己去查

3.测试负载均衡效果

将三个client修改为同名,在运行,查看结果,只启动一个server服务方便测试

此时server注册结果如下

此时刷新getServerInfo服务,发现端口号的变化,三个客户端的端口顺序获取,实现负载均衡。

若client分布于不同的server,则该client只能获取当前注册的server中的client列表

二、使用eureka服务发现实现服务器之间的http访问(restTemplate)

1.服务代码

代码如下:

package com.lyh.lyh_eureka_server.controller;

import java.net.URI;
import java.net.URISyntaxException; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.EurekaClient; @RestController
@EnableEurekaClient
public class TestController { @Autowired
private EurekaClient eurekaClient; @RequestMapping("/getServerInfo")
public Object getServerInfo() {
// 通过eurekaClient访问服务器获取某个命名的集群。
// getNextServerFromEureka的第一个参数是服务器名称,可重复
// 因为获得的是下一个,所以是负载均衡的
InstanceInfo nextServerFromEureka = eurekaClient.getNextServerFromEureka("eureka-client", false);
System.out.println("name:" + nextServerFromEureka.getAppName() + " port:" + nextServerFromEureka.getPort());
return nextServerFromEureka;
} // 触发的接口
@RequestMapping("/getInfoFromClient")
public Object getInfoFromClient() throws URISyntaxException {
InstanceInfo nextServerFromEureka = eurekaClient.getNextServerFromEureka("eureka-client", false);
System.out.println("name:" + nextServerFromEureka.getAppName() + " port:" + nextServerFromEureka.getPort());
RestTemplate restTemplate = new RestTemplate();
String u = "http://" + nextServerFromEureka.getIPAddr() + ":" + nextServerFromEureka.getPort() + "/getInfo";
URI uri = new URI(u);
String obj = restTemplate.getForObject(uri, String.class);
System.out.println(obj.toString());
return obj;
} // 接口访问的服务
@RequestMapping("/getInfo")
public Object getInfo() {
return "I am info from client 9022";
} }

2.部署测试

持续访问一个端口,查看访问结果,如下:

3.服务访问的前置负载均衡

若网络来的请求,是经过了nginx的负载均衡,那么就能做到静态页面,或对后端请求的均衡,加上上述策略,即可达到前端和服务端的双端负载均衡

springcloud费话之Eureka服务访问(restTemplate)的更多相关文章

  1. springcloud费话之Eureka接口调用(feign)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  2. springcloud费话之Eureka集群

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  3. springcloud费话之Eureka基础

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  4. SpringCloud 进阶之Eureka(服务注册和发现)

    1. Eureka 服务注册与发现 Eureka 是一个基于REST的服务,用于服务的的注册与发现; Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册 ...

  5. [SpringCloud教程]3. Eureka服务注册中心集成

    新微服务项目多半采用Nacos作为服务注册与发现中心,但是旧项目可能使用Eureka.zookeeper.Consul.Nacos作为服务注册中心. 新项目建议使用Nacos作为服务注册中心 Spri ...

  6. SpringCloud学习(3)——Eureka服务注册中心及服务发现

    Eureka概述: Eureka是Netflix的一个子模块, 也是核心模块之一.Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务框 ...

  7. springcloud(三):Eureka服务端

    一. 因为使用一个注册中心服务器端,n个客户端:n个生产者客户端.n消费者客户端....,所有的客户端最好的方式就是通过对象传递参数,因此需要创建一个公共组件项目,为n个客户端传值提供方便 二.创建公 ...

  8. SpringCloud学习系列-Eureka服务注册与发现(2)

    构建 microservicecloud-eureka-7001 eureka服务注册中心Module 1.新建microservicecloud-eureka-7001 2.pom <proj ...

  9. SpringCloud学习系列-Eureka服务注册与发现(3)

    修改microservicecloud-provider-dept-8001 1.修改pom 增加内容 <!-- 将微服务provider侧注册进eureka --> <depend ...

随机推荐

  1. VPS 安装MySQL

    目前Centos下默认支持的数据库是MariaDB,MariaDB是mysql的增强版本,由于mysql被Oracle收购之后,mysql之父担心之后mysql会变成闭源的软件,就又开发了这个版本,支 ...

  2. Flutter-Boxdecoration邊框線, 圓角

    decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border( top: BorderSide( ...

  3. [洛谷P2459] SDOI2011 消耗战

    问题描述 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知 ...

  4. python编程中的一个经典错误之list引用

    请看下面代码 class User: def __init__(self, name, hobby=[]): self.name = name self.hobby = hobby def add_h ...

  5. python学习笔记(十)常用模块

    import os print(os.getcwd())#取当前工作目录,绝对路径 print(os.chdir("../"))#更改当前目录,.代表当前目录,..代表上一级目录 ...

  6. subprocess.Popen运行报错WindowsError: [Error 740]

    subprocess.Popen在win10下运行报740错时 使用os.popen替换,运行OK,exe程序成功启动 import subprocess import uiautomation as ...

  7. ECSHOP2.7源码分析

    目录结构

  8. 535D Tavas and Malekas

    题目大意 给你一个串和m个下标 问你一个长度为n的串每一个下标开始的后缀的前缀都包含给定的串的方案数 分析 对于给定的串求出z数组 对于两个串不重叠的情况就是中间都不包含的数随便填即可 对于重叠的情况 ...

  9. :nth-child 与 ;nth-of-child

    //:nth-child:是选择父元素下的第几个元素,不分标签类别,计数从1开始 //:nth-of-type:是选择父元素下的同类型元素的第几个元素.区分标签类别,计数从1开始

  10. JDK 5.0 新增解决线程安全 Callable接口和线程池

    在jdk5.0后又新增了两种解决线程安全的问题 一: 实现Callable接口, 实现接口步骤: 1: 创建一个实现Callable接口的实现类 2: 实现Callable接口中的call()方法, ...