Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,493,291字

该文章投稿至Nemo社区   Java  板块 复制链接


Open Feign 在Spring cloud微服务架构中的简单使用

发布于 2018/04/13 14:14 2,118浏览 0回复 1,092

微服务的各组件间的通讯其实方式有很多。

我们可以按照同步和异步来做一个简单的区分:

同步:RPC,REST等。

异步:消息队列。要考虑消息可靠传输、高性能,以及编程模型的变化等。

Feign是spring cloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用,一般是用来做微服务间的rest方式通讯的组件。

当然,在一般rest的微服务架构中,Feign是可以脱离spring cloud单独使用的。毕竟它只是作为一个服务消费端的一个调用框架,其中主要的工作只是简化了微服务中的网络请求一方面的工作。

当然,feign在spring cloud中也是可以被取代的,类似于HttpClient,OkHttp,Spring中的RestTemplate等等。不过feign在配置化,轻量化,方面优势相比前面几种优势明显,加上它结合spring cloud体系,可以达到很好的微服务内部负载均衡,所以这里推荐使用feign。


这里举个简单的栗子:

假设我们有两个服务:

    一个是微服务中的服务提供方,它提供了用户鉴权的操作;一个是微服务中的服务消费方,它对外(web)暴露web接口,内部调用服务提供方的接口来达到用户鉴权的目的。

这里可以看到,在消费方的业务层,我们需要发起网络请求来获取服务提供方的数据。

假设服务提供方的定义为:

@PostMapping(value = "/auth") 
public Boolean auth(@RequestParam("mobilePhone") String mobilePhone,@RequestParam("password") String password){
    ...
}

服务地址为/auth,接收mobilePhone和password参数,响应结果为当前鉴权结果:true或者false。

如果使用feign的话,这里的服务调用可以简化为:

@FeignClient
public interface AuthFeignClient{

@RequestMapping(value = "/auth", method = RequestMethod.GET)
boolean auth(@RequestParam("mobilePhone") String mobilePhone, @RequestParam("password") String password);
}


这里简单描述下feign,最近比较忙,后续有时间会再写一些feign相关的记录。


点赞(0)
点了个评