城市 企业 产品 知识
工业 农业 房产 汽车 家居 服饰 日用 IT 文教 旅游 生活 服务 工商 商务 广告 工程
  • Spring Cloud构建微服务架构—服务消费Feign

    广州为学教育科技有限公司 2019-01-08 16:50     1128次浏览
  • Spring Cloud FeignSpring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

    下面,我们通过一个例子来展现Feign如何方便的声明对eureka-client服务的定义和调用。

    下面的例子,我们将利用之前构建的eureka-server作为服务注册中心、eureka-client作为服务提供者作为基础。而基于Spring Cloud Ribbon实现的消费者,我们可以根据eureka-consumer实现的内容进行简单改在就能完成,具体步骤如下:

    根据eureka-consumer复制一个服务消费者工程,命名为:eureka-consumer-feign。在pom.xml中增加下面的依赖:

    ...

    org.springframework.cloud

    spring-cloud-starter-feign

    修改应用主类。通过@EnableFeignClients注解开启扫描Spring Cloud Feign客户端的功能:

    @EnableFeignClients

    @EnableDiscoveryClient

    @SpringBootApplication

    public class Application {

    10295T0b-0.jpg

    public static void main(String[] args) {

    new SpringApplicationBuilder(Application.class).web(true).run(args);

    }

    }

    创建一个Feign的客户端接口定义。使用@FeignClient注解来指定这个接口所要调用的服务名称,接口中定义的各个函数使用Spring MVC的注解就可以来绑定服务提供方的REST接口,比如下面就是绑定eureka-client服务的/dc接口的例子:

    @FeignClient("eureka-client")

    public interface DcClient {

    @GetMapping("/dc")

    String consumer();

    }

    修改Controller。通过定义的feign客户端来调用服务提供方的接口:

    @RestController

    public class DcController {

    @Autowired

    DcClient dcClient;

    @GetMapping("/consumer")

    public String dc() {

    return dcClient.consumer();

    }

    }

    通过Spring Cloud Feign来实现服务调用的方式更加简单了,通过@FeignClient定义的接口来统一的生命我们需要依赖的微服务接口。而在具体使用的时候就跟调用本地方法一点的进行调用即可。由于Feign是基于Ribbon实现的,所以它自带了客户端负载均衡功能,也可以通过Ribbon的IRule进行策略扩展。另外,Feign还整合的Hystrix来实现服务的容错保护,在Dalston版本中,Feign的Hystrix默认是关闭的。待后文介绍Hystrix带领大家入门之后,我们再结合介绍Feign中的Hystrix以及配置方式。

    在完成了上面你的代码编写之后,读者可以将eureka-server、eureka-client、eureka-consumer-feign都启动起来,来观察eureka-consumer-feign服务是如何消费eureka-client服务的/dc接口的,并且也可以通过启动多个eureka-client服务来观察其负载均衡的效果。

    发布:谢老师
  • 公司简介

    那些年我走过的弯路,疯狂JAVA把我拉回正道

    人生究竟有没有弯路呢?是否走过的每段路都是必经之路?甚至是超越这平凡世界的途径?谈谈我的想法。

    高中毕业那年,在朋友的怂恿下,在填写志愿的时候报了销售相关的专业,说销售容易赚大钱,每个月都能轻松过万。但到了大学毕业后,发现销售并不是我所想的那么简单,销售真的不那么好做,全凭一张嘴,大学里面学的东西几乎用不上,就这样,为人实在的我懵懵懂懂熬过了一年半,每个月就拿那两三千块钱的底薪,运气好就拿点提成,但到手的从来没有超过6000元,在广州这座大城市,想要买房子的话想要靠这点薪水根本不可能。

    幸运的是,在一个偶然的机会遇到了我的小学同学,跟我同一年毕业,现在他已经是一家大公司的高级软件工程师了,年薪达到30万以上,还有公积金,准备在广州买房了。后来我问他是怎么办到的,他说他高中毕业那年就开始报名JAVA开发的培训,因为他认为互联网这个行业非常有发展前景,互联网的技术人才更是市场非常缺失的,如果往这个方向发展肯定能赢取不小的成就;另外,我大学也是报了相关的专业,大学四年里断断续续也做了一些项目,积累了一些经验,所以大学毕业后就被一家大型的互联网公司聘请了。我感到非常惊讶,但对自己一事无成,又不会什么能拿出手的技术,怎么拿那么高的薪水。正当我在抱怨自己的时候,他便说他可以把我介绍到我以前参加培训的那家机构报名参加培训,零基础也没关系,他们会用5个月的时间把你培养成一名合格的软件工程师,在培训期间也会接触到一些项目,到时候出去参加工作的时候就不会担心没有经验了。后来我想了一下,有一技在身,肯定不会饿死自己,便接受了小学同学的建议。果然不出我朋友所言,5个月后,那家培训机构根据我的能力把我推荐到一家公司上班,做软件开发,试用期间居然也能达到七千以上,转正后九千加项目提成,这样一来月入过万岂不是很轻松的事情?为了感谢小学同学的帮助,特意请他去吃大餐。

    如果没有同学的介绍,如果没有那家培训机构老师的悉心教导,我也不会有今天的成就,你们是不是很羡慕呢?如果你们也是不想做销售,又想拿高薪的话,不妨上网也去那家机构了解一下,疯狂java:www.fkjava.org

    联系:谢老师

    手机:13632401219

网店推荐

更多软件网店