Ribbon

微服务应用开发入门③微服务组件eureka、ribbon、feign和hystrix初识

流过昼夜 提交于 2020-08-13 12:35:53
注册中心--Eureka 相信通过 微服务应用开发入门①web端架构演进 童鞋已经大概知道注册中心的概念和它是做什么的; Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。 那我们还必须搞明白一些概念(当然其他概念还有很多很多) Register: 服务注册 服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。 Renew: 服务续约 Eureka Client 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题。 默认情况下,如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约,Server 端会将实例从其注册表中删除,此时间可配置,一般情况不建议更改 负载均衡 负载均衡是我们处理高并发、缓解网络压力和进服务端扩容的重要手段之一。 一般情况下我们所说的负载均衡通常都是指服务端负载均衡。 服务端负载均衡又分为两种,一种是硬件负载均衡,还有一种是软件负载均衡。 客户端负载均衡

spring-cloud-netflix-ribbon学习笔记(一)通过@LoadBalanced查询Ribbon是如何与SpringCloud整合的

久未见 提交于 2020-08-13 07:14:17
首先用过Ribbon的都知道,要想在Spring-Cloud中使用Ribbon,需要在 RestTemplate Bean 上加入 @LoadBalanced 注解。那么我们可以先看看 @LoadBalanced (代码如下)。 package org.springframework.cloud.client.loadbalancer; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.beans.factory.annotation.Qualifier; /** * Annotation to mark a RestTemplate or WebClient bean to be configured to use a * LoadBalancerClient. * @author Spencer

ribbon基于统计学的客户端负载均衡软件

故事扮演 提交于 2020-08-12 11:48:52
众所周知 ribbon 是一款客户端负载均衡软件,今天我添加了一个修饰词, 基于统计学的, 因为 ServerListFilter 和 IRule. choose 都是基于 ServerStats 和ZoneSnapshot等统计信息做出决策的。 LoadBalancerStats 作为存储仓库 ,维护了两个Map volatile Map<String , ZoneStats> zoneStatsMap = new ConcurrentHashMap<String , ZoneStats>() ; 每个zone的统计信息 volatile Map<String , List<? extends Server>> upServerListZoneMap = new ConcurrentHashMap<String , List<? extends Server>>() ; 每个zone的up状态的server。 内存缓存。。。 将所有ServerStats存于其中。 LocalLoadingCache private final LoadingCache<Server , ServerStats> serverStatsCache = CacheBuilder. newBuilder () .expireAfterAccess( SERVERSTATS_EXPIRE_MINUTES

2020Java面试题及答案,命中率高达90%

▼魔方 西西 提交于 2020-08-12 07:33:34
这份资源我自己历经三年才整理归类出来,现在免费分享给大家; 面试题有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合。 面试题以及答案,已经整理成PDF电子书形式打包在网盘; 面试题领取微信扫一扫,加好友请备注“博客园面试题”; 目录 上海-携程-Java高级面试题.pdf 北京-百度-Java中级面试题.pdf 深圳-乐信-Java高级面试题.pdf 深圳-腾讯-Java高级面试题.pdf 上海-拼多多-Java高级面试题.pdf 深圳-OPPO-Java高级面试题.pdf 上海-拼多多-Java高级面试题.pdf 北京-京东-Java实习生面试题.pdf 北京-京东-Java实习生面试题.pdf 杭州-阿里云Java实习生面试题.pdf 南京-软通动力-Java初级面试题.pdf 深圳-银盛支付-Java中级面试题.pdf 深圳-中国平安-Java中级面试题.pdf 深圳-蚂蚁金服-Java高级面试题.pdf 深圳-丰巢科技-Java高级面试题.pdf 深圳-商汤科技-Java高级面试题.pdf 厦门-中软国际-Java初级面试题.pdf 杭州-蚂蚁金服-Java高级面试题.pdf 杭州-蚂蚁金服-资深工程师面试题.pdf 广州唯品会-Java大数据开发工程师面试题.pdf 上海-携程

SpringCloud系列之使用Feign进行服务调用

浪子不回头ぞ 提交于 2020-08-12 00:51:12
在 上一章 的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客 Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。 环境准备: JDK 1.8 SpringBoot2.2.1 SpringCloud(Hoxton.SR6) Maven 3.2+ 开发工具 IntelliJ IDEA smartGit 创建一个SpringBoot Initialize项目,详情可以参考我之前博客: SpringBoot系列之快速创建项目教程 port: 8083 spring: application: name: feign-service-consumer eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ healthcheck: enabled: false instance: status-page-url-path: http://localhost:8761

脱离Eureka使用Ribbon

岁酱吖の 提交于 2020-08-11 18:56:14
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting

SpringBoot + Spring Cloud Eureka 服务注册与发现

家住魔仙堡 提交于 2020-08-11 09:59:31
什么是Spring Cloud Eureka Eureka是Netflix公司开发的开源服务注册发现组件,服务发现可以说是微服务开发的核心功能了,微服务部署后一定要有服务注册和发现的能力,Eureka就是担任这个角色。如果你用过Dubbo的话,Dubbo里服务注册和发现就是通过Zookeeper框架完成的。 Eureka 目前是2.2.x版本,目前官方已经宣布不再维护和更新了,不过Eureka 做注册中心已经在生产环境中大规模使用了,可以说很稳定了。从我个人的角度看,目前大家使用的更多的是阿里的 Nacos 和 Consul 这两个组件实现了不止服务发现和注册,微服务开发不用再去依赖更多的组件和框架。这篇文章模拟一下Eureka Server集群和服务提供者集群和服务消费。 版本说明 SpringCloud + SpringBoot开发微服务并不是版本越新越好,Spring Cloud官方提供了一个版本对应关系。目前最新的就是Hoxton, 对应SpringBoot 2.2.x版本。 准备工作 新建父工程, 主要约定SpringCloud, SpringBoot版本号,我使用的是Hoxton.SR1, SpringBoot2.2。 新建5个子Module,这里两个Eureka Server,两个Service,一个consumer, 两个Eureka

ribbon之IRule

╄→гoц情女王★ 提交于 2020-08-11 03:13:33
程序是对现实世界的模拟和抽象。 在学习ribbon之前我们得承认一个事实: 服务分布在多台服务器上, 而服务器则又分布在不同机房(zone)里面。 对于每台服务器需要进行指标统计,对每个zone也需要进行指标统计。 对服务器的统计称为 ServerStat 。 对 zone 的统计称为 ZoneStat 。 我们从众多服务器中选择一台server时需要同时考虑 ServerStat 和 ZoneStat 。 定义接口 public interface IRule{ public Server choose (Object key) ; public void setLoadBalancer (ILoadBalancer lb) ; public ILoadBalancer getLoadBalancer () ; } 抽象基类,实现了两个方法。 public abstract class AbstractLoadBalancerRule implements IRule , IClientConfigAware { private ILoadBalancer lb ; @Override public void setLoadBalancer (ILoadBalancer lb){ this . lb = lb ; } @Override public ILoadBalancer

基于SpringBoot、SpringCloud、Docker微服务架构实战,资源分享

六月ゝ 毕业季﹏ 提交于 2020-08-10 23:32:31
前言 近年来,微服务架构( Microservices Architecture )已经成为一种主流的软件开发方法论,它把一种特定的软件应用设计方法描述为能够独立部署的服务套件。所谓微服务( Microservices ),就是一些具有足够小的力度、能够相互协作且自治的服务体系。每个微服务都比较简单 仅关注于完成一个功能并能很好地完成该功能,而这里的功能代表的是一种业务能力。构建微服务体系需要一套完整的方法论和工程实践,而微服务架构的提出代表的就是实现微服务体系的架构模式,即为我们提供了这些方法论和工程实践 从这个角度讲 微服务架构需要我们理解、学习并应用到日常开发过程中去。 成为一名架构师几乎是每个程序员的梦想。而微服务架构则是当今架构领域最受关注的话题。掌握微服务架构技术栈相关技能,是从一名普通程序员到资深架构师的必经之路。 今天楼主给大家带来的一篇关于微服务相关的电子书资源,介绍了关于微服务架构、Spring Boot、Spring Cloud、Docker方面的内容。 1.根据Spring Boot、Spring Cloud、Docker等技术性搭建微保障体系。 2.精简而详细的经典案例展现保持分布式架构的详细宏伟蓝图。 3.融合业务流程情景,根据全方位实例得出专用工具在搭建分布式架构中的工程项目实战演练。

SpringCloud- 第十三篇 Zuul高层架构(二)

我的梦境 提交于 2020-08-10 18:27:35
1:架构图 2:ZuulServlet Zuul的核心是一系列的filters,Zuul大部分功能都是通过过滤器来实现的 1:ZuulServlet是Zuul的核心类,用来调度不同阶段的filters,处理请求,并处理异常等,路径是/zuul,可以使用zuul.servlet-path属性更改此路径 2:功能类似于SpringMvc的DispatcherServlet,所有的Request都要经过它的处理 3:里面有三个核心方法:preRoute(),route(), postRoute() 4:ZuulServlet会把具体的执行交给ZuulRunner去做,ZuulServlet是单例,因此ZuulRunner也仅有一个实例 5:Zuul的过滤器之间没有直接的相互通信,它们之间通过一个RequestContext的静态类来进行数据传递的。RequestContext类中有ThreadLocal变量来记录每个Request所需要传递的数据,ZuulRunner会初始化RequestContext 6:ZuulRunner直接将执行逻辑交由FilterProcessor处理,FilterProcessor也是单例,其功能就是依据filterType执行filter的处理逻辑,大致过程如下: (1)根据Type获取所有输入该Type的filter (2