[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon



在微服务架构中,客户端负载均衡是指负载均衡器作为客户端软件的一部分,客户端得到可用的服务实例列表然后按照特定的负载均衡策略,分发请求到不同的服务。


ServiceComb内置了客户端负载均衡组件,开发者可以非常简单的使用。具体可参考:

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


本文将介绍ServiceComb与SpringCloud的Ribbon负载均衡组件协同工作,以构建微服务应用。ServiceComb已适配对应的接口和配置,用户用极简单的方法配置后即可使微服务应用具备负载均衡的能力。



示例


以下通过一个服务提供者provider-service和消费者consumer-service作为demo演示。

provider-service会启动3个微服务实例,消费者端consumer-service使用Ribbon负载均衡调用proveder-service服务的接口。其中consumer-service在调用provider-service提供的接口时会打印出真实调用的URL ↓↓↓

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第1张图片

完整示例地址:

https://github.com/lisenwork/servicecomb-demo/tree/master/servicecomb-ribbon 


预置条件:  示例应先安装启动服务与注册中心ServiceCenter,详细步骤请参考官网↓↓↓

http://servicecomb.apache.org/cn/users/setup-environment/#%E8%BF%90%E8%A1%8Cservice-center


开发服务消费者comsumer-service

只需三步即可开发拥有负载均衡能力的微服务

步骤如下:↓↓↓

01

添加依赖

新建pom文件,引入如下依赖。

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第2张图片

完整pom文件内容请参考↓↓↓

https://github.com/lisenwork/servicecomb-demo/blob/master/servicecomb-ribbon/consumer-service/pom.xml     


02

配置 

在resources目录下新建ServiceComb配置文件microservice.yaml。配置微服务信息↓↓↓

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第3张图片


03

项目入口

新建启动类ConsumerApplication.java。如下图,启动类里同时实例化一个RestTemplate对象。该对象用于后面的服务间接口调用。

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第4张图片

新建ConsumerController.java。在该类的consumer方法里使用Ribbon的API动态获取服务实例,并打印出被选中的实例的真实IP地址和端口。最后调用服务实例的接口,获取结果并返回。

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第5张图片


04

启动

项目根目录下执行命令 mvn spring-boot:run


开发服务提供者provider-service


01

添加依赖

新建pom文件,引入如下依赖。

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第6张图片

完整pom文件内容请参考↓↓↓

https://github.com/lisenwork/servicecomb-demo/blob/master/servicecomb-ribbon/provider-service/pom.xml 


02

配置 

在src/main/resources目录下新建microservice.yaml

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第7张图片


03

项目入口

新建启动类ProviderApplication.java

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第8张图片

新建ProviderController.java。只向外提供/provider接口

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第9张图片


04

启动 

服务提供者要启动3个微服务实例。

打开microservice.yaml文件,分别修改微服务监听端口为8888,8889,8890,在项目根目录下执行3次命令 mvn spring-boot:run


演示

浏览器访问http://localhost:7777/consumer,重复刷新一定次数,观察控制台,会发现服务消费者会轮询调用服务提供者的三个实例。

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第10张图片


本文向社区读者从读者角度阐述了ServiceComb是如何支持SpringCloud Ribbon的。

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

下章我们将介绍ServiceComb+SpringCloud Ribbon源码篇

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

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第11张图片

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

ServiceComb的大门为你们敞开~

用心做开源,不忘初衷


提前预祝大伙儿新春快乐(*^▽^*)~



640?wx_fmt=png

[学习微服务-第5天]

ServiceComb+Zipkin源码解读

[学习微服务-第4天]

ServiceComb+Zipkin

[学习微服务-第3天] 

ServiceComb内置高性能网关服务

[每天学习微服务-源码解读] 

ServiceComb+SpringCloud Zuul

[每天学习微服务-网关]

ServiceComb+SpringCloud Zuul

了解更多信息请访问↓↓↓

官方网站http://servicecomb.apache.org/ 

Github代码仓库https://github.com/apache?q=ServiceComb

[学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon_第12张图片

赶紧点击阅读原文阅读相关源码

并给ServiceComb点个“Star”吧

640?wx_fmt=png

你可能感兴趣的:([学习微服务-第6天] 负载均衡之ServiceComb + SpringCloud Ribbon)