SpringCloud微服务实战二:Spring Cloud Ribbon 负载均衡 + Spring Cloud Feign 声明式调用
1.Spring Cloud Ribbon的作用
Ribbon是Netflix开发的一个负载均衡组件,它在服务体系中起着重要作用,Pivotal将其整合成为Spring Cloud Ribbon,与其他SpringCloud组件结合可以发挥出强大作用,它的负载策略有多种,默认轮询,可配置超时重试,说到负载均衡,Ribbon与Lvs、Nginx不一样,nginx是服务端负载均衡,Ribbon是客户端负载均衡,具体表现为客户端从注册中心拿到服务的所有实例,然后以负载均衡方式去调用服务,默认以轮询的方式去调用服务实例。
2.Spring Cloud Feign的作用
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
Feign原理:我们首先会添加@EnableFeignClients注解开启对 FeignClient扫描加载处理,扫描后会注入到SpringIOC容器,当定义的feign接口方法被调用时,通过JDK代理的方式,生成具体的RequestTemplate,RequestTemplate生成Request,交给URLConnection处理,并结合LoadBalanceClient与Ribbon,以负载均衡的方式发起服务间的调用
3.开始搭建
<!-- 负载均衡 (版本视自己的项目版本定)-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!--服务消费者 Feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
4.SpringBoot中启动类中代码
/**
* @author 陈康
* @date 2019/09/30
*/ @EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
@Configurationpublic class LzxServerConsumerMasterApplication {
/**
* 开启负载均衡
*/
@LoadBalanced
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
5.新建一个interface作为声明式调用
/**
* @author 陈康
* @date 2019/10/10
*/
@FeignClient(value = "provider")
public interface HomeClientService { @GetMapping("/")
String consumer(); }
6.新建一个控制层调用provider中的方法
/**
* 消费者控制层
* @author 陈康
* @date 2019/10/08
*/
@RestController
public class ConsumerController { @Autowired
private HomeClientService homeClient; @GetMapping(value = "/test")
public String test(){
return homeClient.consumer();
} }
7.新建两个provider项目 (第一个)
#Eureka 相关配置
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9001/eureka/,http://localhost:9002/eureka/
#服务名称
spring:
application:
name: provider
# 服务端口号
server:
port: 8001
(第二个)
#Eureka 相关配置
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9001/eureka/,http://localhost:9002/eureka/
#服务名称
spring:
application:
name: provider
# 服务端口号
server:
port: 8002
pom.xml中的配置
<!--注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
两个SpringBoot启动类的代码(另一个输出为Hello World 8082)
/**
* @author 陈康
* @date 2019/09/30
*/
@RestController
@EnableEurekaClient
@SpringBootApplication
public class LzxServerProviderMasterApplication { public static void main(String[] args) {
SpringApplication.run(LzxServerProviderMasterApplication.class, args);
} @GetMapping("/")
public String home() {
return "Hello World 8081";
} }
SpringCloud微服务实战二:Spring Cloud Ribbon 负载均衡 + Spring Cloud Feign 声明式调用的更多相关文章
- 【SpringCloud微服务实战学习系列】客户端负载均衡Spring Cloud Ribbon
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的RES模板 ...
- SpringCloud微服务实现生产者消费者以及ribbon负载均衡
一.SpringCloud_eureka_server 1.导入依赖 <dependencies> <dependency> <groupId>junit</ ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战
笔记 3.高级篇幅之Ribbon负载均衡源码分析实战 简介: 讲解ribbon服务间调用负载均衡源码分析 1.完善下单接口 2.分析@LoadBalanced ...
- Spring Cloud06: Ribbon 负载均衡
一.使用背景 前面的学习中,我们已经使用RestTemplate来实现了服务消费者对服务提供者的调用,如果在某个具体的业务场景下,对某个服务的调用量突然大幅提升,这个时候就需要对该服务实现负载均衡以满 ...
- SpringCloud学习笔记(五):Ribbon负载均衡
简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端 负载均衡的工具 .(重点:客户端) 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提 ...
- Spring Cloud Ribbon负载均衡
目录 一.简介 二.客户端负载均衡 三.RestTemplate详解 GET请求 POST请求 PUT请求 DELETE请求 一.简介 Spring Cloud Ribbon是一个基于HTTP 和 ...
- Spring Cloud Ribbon负载均衡(快速搭建)
Spring Cloud Ribbon 是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过 Spring Cloud 的封装, 可以让我们轻松地将面向服务的 ...
- SpringCloud第二弹(高可用Eureka+Ribbon负载均衡)
先建立父工程 .. ..一路next 搭建注册中心(需要建立三个工程,端口不一样) .. .. .. 修改入口类 package com.cloud.eurekaserver1111; import ...
- SpringCloud微服务实战-Zuul-APIGateway(十)
本文转自:http://blog.csdn.net/qq_22841811/article/details/67637786#准备工作 1 API Gateway 2 Zuul介绍 2.1 zuul的 ...
随机推荐
- 【转载】linux进程及进程控制
Linux进程控制 程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例.利用分时技术,在Linux操作系统上同时可以运行多个进程.分时技术的基本原理是把CPU的运行时间划 ...
- 设定计算属性setter
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- PAT甲级——A1082 Read Number in Chinese
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese ...
- Python GUI文本编辑器
使用Python编写一个简单的文本编辑器,需要展示一个用户界面,功能包括打开.保存文本文件. 使用tkinter库来编写GUI. #简单GUI文本编辑器 from tkinter import * f ...
- <随便写>佛祖,哈哈!
print(" _ooOoo_ ") print(" o8888888o ") print(" 88 . 88 ") print(" ...
- occ+vtk显示igs模型
使用Opencascade读取igs文件内模型,使用vtk进行显示. 本案例环境:Opencascade6.6.0 + vtk-5.10 + VS2005(win32) 使用CMake管理工程. C ...
- storm一些可调节的参数
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreeme ...
- 2019-2-18-VisualStudio-给项目添加特殊的-Nuget-的链接
title author date CreateTime categories VisualStudio 给项目添加特殊的 Nuget 的链接 lindexi 2019-02-18 15:56:48 ...
- Python中的urlparse、urllib抓取和解析网页(一)
对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过Python 语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...
- idea打包可执行jar
(1)在项目上鼠标右键 --> Open Module Settings 或者点击工具栏上的 (2)Artifacts --> + --> JAR --> From modul ...