服务间通信:Spring Cloud Netflix Ribbon和 Spring Cloud OpenFeign
一个大型的系统由多个微服务模块组成,我们一般可以通过内部接口调用的形式(服务A提供一个接口,服务B通过HTTP请求调用服务A的接口)实现各模块之间的通信。为了简化开发,SpringCloud集成了Spring Cloud Netflix Ribbon和Spring Cloud OpenFeign,两个组件都支持通过HTTP请求不同的服务。
举个例子,用户模块和评论模块,当查询评论列表时需要返回用户的基本信息(昵称、头像等),直接利用SQL语句关联查询是可以实现该需求的,但是耦合性较强,亦不利于扩展。用户信息应由用户模块提供,这时就需要用户模块提供接口,评论模块调用此接口,从而拿到用户数据。
本文将简要介绍Spring Cloud Netflix Ribbon,借此引出 Sping Cloud OpenFeign,并详细介绍其用法。
Spring Cloud Netflix Ribbon的使用
Spring Cloud Netflix Ribbon(即 Ribbon )是Spring Cloud Netflix的一个子项目,它提供了HTTP客户端和TCP客户端,用于支持各服务间的通信并且拥有负载均衡能力。
Ribbon 的一个核心概念是命名的客户端。每一个负载均衡器都是Ribbon组件的一部分,它们在需要的时候一起工作,并且和远程服务器通信。
在 Spring Cloud工程中引用Ribbon非常简单,只需要在p