硕果云api引入解析

1:项目启动顺序

  1. config-service :9181
  2. auth-service :9182 (有数据库)
  3. user-service :9183 (有数据库)
  4. exam-service :9184 (有数据库)
  5. gateway-service :9180 (有数据库)
  6. monitor-service :9186
  7. msc-service :9185

2:pom引入api

  1. config-service
  2. auth-service
 	  <!-- user-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>user-service-api</artifactId>
        </dependency>

        <!-- auth-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>auth-service-api</artifactId>
        </dependency>

        <!-- exam-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>exam-service-api</artifactId>
        </dependency>
  1. user-service
	 <!-- user-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>user-service-api</artifactId>
        </dependency>

        <!-- exam-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>exam-service-api</artifactId>
        </dependency>

        <!-- msc-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>msc-service-api</artifactId>
        </dependency>
  1. exam-service
	    <!-- exam-service-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>exam-service-api</artifactId>
        </dependency>
  1. gateway-service
  2. monitor-service
  3. msc-service
	    <!-- msc-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>msc-service-api</artifactId>
        </dependency>

3:微服务通过Feign实现微服务相互调用

  1. 什么是feign?
    feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的http客户端。
    微服务架构服务实例众多,服务与服务之间如何调用,Spring Cloud提供了解决方案:伪装者 Feign。
    Feign 是 Spring Cloud 的一个组件,也是一个WebService客户端,用于服务之间的调动。
  2. 怎么使用?
    增加接口和 @FeignClient 注解

4:调用实例(就拿user-service-parent服务来说明)

特别说明:本项目(硕果云)使用consul+feign实现微服务调用

  1. 在user-service-api的pom文件中引入feign的依赖
    在这里插入图片描述

  2. 创建UserServiceClient接口并添加@FeignClient注解

UserServiceClient接口会暴露出去,供其他服务调用

  • @FeignClient注解
  • 声明需要调用的微服务名称
  • value :服务提供者的名称

在这里插入图片描述
在这里插入图片描述

  1. 增加 Hystrix 断路熔断机制

    • @FeignClient(value = ServiceConstant.USER_SERVICE, configuration = CustomFeignConfig.class, fallbackFactory = UserServiceClientFallbackFactory.class)
    • 增加 Feign接口实现类,实现方法作为断路器的回调方法
    • feign接口的 @FeignClient注解增加 fallbackFactory参数,指向接口的用户断路器工厂(最终指向接口的实现类)。
    • 本项目就是使用工厂模式来实现Fallback,同样工厂实现类也要交由spring管理,同时结合UserServiceClientFallbackImpl使用
    • 这里有关于fallback 和fallbackFactory 参数的讲解,本项目使用fallbackFactory
  2. 启动类增加@EnableFeignClients注解

  • 首先通过@EnableFeignCleints注解开启FeignCleint
  • 根据Feign的规则实现接口,并加@FeignCleint注解
  • 程序启动后,会进行包扫描,扫描所有的@ FeignCleint的注解的类,并将这些信息
    注入到ioc容器中。
  • 当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplate
  • RequesTemplate在生成Request
  • Request交给Client去处理,其中Client可以是HttpUrlConnection、HttpClient也可
    以是Okhttp
  • 最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。
// 扫描api包里的FeignClient
@EnableFeignClients(basePackages = {CommonConstant.BASE_PACKAGE})
  1. 一切准备就绪了,那就可以在其他服务进行调用了
    • 调用方式
    • 你需要在你要调用api的pom文件引入
		<!-- user-api -->
        <dependency>
            <groupId>com.github.tangyi</groupId>
            <artifactId>user-service-api</artifactId>
        </dependency>
  • 其次就像controller引入service一样通过@Autowired注解进行调用了
	 @Autowired
    private UserServiceClient userServiceClient;

在这里插入图片描述

  • 或者通过另外的形式
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值