springcloud费话之Eureka服务访问(restTemplate)
目录:
springcloud费话之Eureka服务访问(restTemplate)
springcloud费话之Eureka接口调用(feign)
springcloud费话之断路器(hystrix in feign)
完成了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)的更多相关文章
- springcloud费话之Eureka接口调用(feign)
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- springcloud费话之Eureka集群
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- springcloud费话之Eureka基础
目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...
- SpringCloud 进阶之Eureka(服务注册和发现)
1. Eureka 服务注册与发现 Eureka 是一个基于REST的服务,用于服务的的注册与发现; Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册 ...
- [SpringCloud教程]3. Eureka服务注册中心集成
新微服务项目多半采用Nacos作为服务注册与发现中心,但是旧项目可能使用Eureka.zookeeper.Consul.Nacos作为服务注册中心. 新项目建议使用Nacos作为服务注册中心 Spri ...
- SpringCloud学习(3)——Eureka服务注册中心及服务发现
Eureka概述: Eureka是Netflix的一个子模块, 也是核心模块之一.Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务框 ...
- springcloud(三):Eureka服务端
一. 因为使用一个注册中心服务器端,n个客户端:n个生产者客户端.n消费者客户端....,所有的客户端最好的方式就是通过对象传递参数,因此需要创建一个公共组件项目,为n个客户端传值提供方便 二.创建公 ...
- SpringCloud学习系列-Eureka服务注册与发现(2)
构建 microservicecloud-eureka-7001 eureka服务注册中心Module 1.新建microservicecloud-eureka-7001 2.pom <proj ...
- SpringCloud学习系列-Eureka服务注册与发现(3)
修改microservicecloud-provider-dept-8001 1.修改pom 增加内容 <!-- 将微服务provider侧注册进eureka --> <depend ...
随机推荐
- JAVA学习笔记--ClassLoader
仅先摘要书中内容以记之,后续也许需要更深入的去探索.先推荐篇博文http://blog.csdn.net/xyang81/article/details/7292380 6.9 初始化和类装载 在许多 ...
- 【leetcode】861. Score After Flipping Matrix
题目如下: 解题思路:本题需要知道一个数字规律,即pow(2,n) > sum(pow(2,0)+pow(2,1)+...+pow(2,n-1)).所以,为了获得最大值,要保证所有行的最高位是1 ...
- 【大量干货】史上最完整的Tengine HTTPS原理解析、实践与调试
本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验.内容主要有四个方面:HTTPS趋势.HTTPS基础.HTTPS实践.HTTPS调试. 一.HTTPS趋势 这一 ...
- tensorflow2.0 squeeze出错
用tf.keras写了自定义层,但在调用自定义层的时候总是报错,找了好久才发现问题所在,所以记下此问题. 问题代码 u=tf.squeeze(tf.expand_dims(tf.expand_dims ...
- layer.js插件
官方网址: http://layer.layui.com/
- 2019 年百度之星—初赛一 B题 Game
题目链接 题意:最开始可以选择任意位置,在一个坐标轴上,依次走到一个区间里面,可以选择走一步两步,求最小步数. 思路:贪心,刚开始合并区间,确定初始位置以及方向.往右走肯定到左端点,往左走先到右端点, ...
- 图论 Algorithms
1) Dijkstra 基本思路:更新每个点到原点的最短路径:寻找最短路径点进行下一次循环:循环次数达到 n - 1 次说明每个点到原点的最短路已成,停止程序. 1 function Dijkstra ...
- jinjia2 模板学习
参考链接https://blog.csdn.net/langkew/article/details/51734423
- BaseActivity 基类
public abstract class BaseActivity extends AppCompatActivity implements IBaseView { private ProxyAct ...
- (转)深入详解Java线程池——Executor框架
转:https://yq.aliyun.com/articles/633782?utm_content=m_1000015330 在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定 ...