[学习微服务-第8天] ServiceComb内置负载均衡组件handler-loadbalance

对着背影说爱祢 提交于 2019-11-27 11:21:46

在上两篇 [微服务]ServiceComb + SpringCloud Ribbon:使用篇 和 [微服务]ServiceComb + SpringCloud Ribbon:源码解读篇 中介绍了负载均衡的概念和ServiceComb结合SpringCloud Ribbon的使用, 本篇将介绍ServiceComb内置的负载均衡组件handler-loadbalance

 

本文参考于官方手册:

https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html

简介

ServiceComb提供了非常强大的负载均衡能力。它的核心包括两部分,第一部分是DiscoveryTree,通过将微服务实例根据接口兼容性、数据中心、实例状态等分组,DiscoveryFilter是其主要组成部分;第二部分是基于Ribbon的负载均衡方案,支持随机、顺序、基于响应时间的权值等多种负载均衡路由策略IRule,以及可以支持Invocation状态的ServerListFilterExt。

代码示例

以下代码请参考官方示例:

https://github.com/apache/servicecomb-java-chassis/tree/master/samples/springmvc-sample

注意该示例中并未添加重试策略,读者可自行添加验证。

 

1. 启动负载均衡

在配置文件microservice.yaml中加入以下配置

 

注意Consumer是首字母大写

在项目的pom文件中加入以下依赖提供负载均衡支持

 

2. 配置负载均衡策略

开发者还可以针对不同的微服务配置不一样的策略,只需要给配置项增加服务名,例如:

其中myservice为微服务名

 

3. 设置重试策略

负载均衡模块还支持配置失败重试的策略。默认未启用重试。开启只需加如下配置↓↓↓

•retryOnNext : 表示失败以后,根据负载均衡策略,重新选择一个实例重试(可能选择到同一个实例)。

•retryOnSame : 表示仍然使用上次失败的实例进行重试。

 

4. 代码调用

支持Restful和Rpc调用

对于Restful调用的url形式如下:

cse://微服务名/资源路径?参数

自定义

ServiceComb的负载均衡模块提供了强大的扩展能力,包括DiscoveryFilter、ServerListFilterExt、ExtensionsFactory(扩展IRule,RetryHandler等)。loadbalance模块本身包含了每一个扩展的实现,这里不详细描述如何扩展。

开发者可参考官方手册:

https://docs.servicecomb.io/java-chassis/zh_CN/references-handlers/loadbalance.html

 

文末小结

本文向社区读者从使用角度阐述了ServiceComb的内置负载均衡模块。

我们也非常欢迎爱好者们向社区提问和贡献代码。

下章我们将介绍服务中心SeviceCenter的使用。

如果在阅读代码时有任何疑问想交流,欢迎扫码加入进微信群。

期待志同道合的朋友们加入

ServiceComb的大门为你们敞开~

用心做开源,不忘初衷

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!