0%

Feign简介

Feign是Netflix开发的一个声明式的HTTP客户端(远程服务调用组件),只需要接口+注解即可完成对于微服务的调用,不需要使用RestTemplate+Ribbon来对微服务进行访问,简化了编程,其是基于动态代理机制,目标是减少HTTP调用的复杂性

依赖

1
2
3
4
5
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
阅读全文 »

Ribbon的负载均衡算法

提供的负载均衡算法

Ribbon中有七种负载均衡算法可供选择

  • RoundRobinRule,轮询

  • RandomRule,随机

  • AvailabilityFilteringRule,会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务(可以通过niws.loadbalancer..connectionFailureCountThreshold来配置连接失败的次数),还有并发的连接数量超过阈值的服务(可以通过.ribbon.ActiveConnectionsLimit来配置最高并发数),然后对剩余的服务列表按照轮询策略进行访问

  • WeightedResponseTimeRule,根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule

  • RetryRule,先按照轮询策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用服务

  • BestAvailableRule,会先过滤掉由于多次访问故障而处于跳闸状态的服务,然后选择一个并发量最小的进行访问

  • ZoneAvoidanceRule,复合判断server所在区域的性能和server的可用性选择

阅读全文 »

Ribbon简介

Ribbon是一种客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起,提供了一系列完善的配置如连接超时、重试等,Ribbon会自动的帮助基于某种规则(如简单轮询、随机连接等)去连接那些机器,也可以自定义的负载均衡算法

依赖

1
2
3
4
5
<!-- ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

1
2
3
4
5
<!-- 新版ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
阅读全文 »

分析器

Lucene的分析器是由分词器、过滤器以及字符映射器组成的

分词器

分词器tokenizer用来将文本切分为词条,词条是携带各种额外信息的词项,这些信息包括:词项在原始文本中的位置,词项的长度。分词器工作的结果被称为词条流,之后会将这些词条一个一个的推送给过滤器处理

过滤器

过滤器filter用于处理词条流中的词条,过滤器可以一个接一个的被调用,Lucene中有很多过滤器,如小写过滤器、同义词过滤器等

字符映射器

字符映射器character mapper用于调用分词器之前的文本预处理操作

Lucene的评分公式

为了计算文档的得分,需要考虑以下因子

  • 文档权重 索引期间赋予某个文档的权重值
  • 字段权重 查询期间赋予某个字段的权重值
  • 协调因子 基于文档中词项个数的协调因子,一个文档命中了查询中的词项越多,得分越高
  • 逆文档频率 一个基于词项的因子,用来告诉评分公式该词项有多罕见。逆文档频率越高,词项就越罕见,评分公式为包含罕见词项的文档加权
  • 长度范数 每字段的基于词项个数的归一化因子,一个字段包含的词项数越多,该因子权重越低
  • 词频 一个基于词项的因子,用来表示一个词项在某个文档中出现了多少次,词频越高,文档得分越高
  • 查询范数 一个基于查询的归一化因子,等于查询中词项的权重平方和
阅读全文 »