微服务:OpenFeign

微服务

单体的架构的可用性较差,功能之间会互相影响,存在以下问题
团队协作成本高

不同模块间的代码边界模糊

系统发布效率低

每次发布需要变更整个系统

系统可用性差

功能之间容易相互影响

为了解决以上问题,我们引入微服务架构来解决功能间的影响

微服务架构:

需要满足以下几个特点

单一职责
团队自治
服务自治

数据库独立,服务隔离

微服务拆分:

尽量粒度更小
高内聚:

每个服务职责尽量单一

低耦合:

每个服务功能相对独立

拆分服务时一般有两种方式

纵向拆分:按照项目的功能模块进行拆分

横向拆分:抽取功能模块之前的公共业务部分,作为通用服务

微服务架构技术组件集合

服务注册发现

Nacos 注册和发现

统一配置管理

Nacos 配置管理

服务远程调用

OpenFeign,Dubbo

统一网关路由

SpringCloudGateway,

服务链路监控

Zipkin,Sleuth

流控,降级,保护

Hystix,Sentinel

OpenFeign

在spring框架中实现服务的远程调用

依赖导入

  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

启动OpenFeign

在启动类上添加

@EnableFeignClients(basepacks = "需要扫描的client")

注解,启动OpenFeign功能

编写OpenFeign客户端

定义一个FeignClient接口

@FeignClient("item-service")
//指定服务名称
public interface ItemClient {
	
    //指定调用的接口,与对应服务接口路径一致
    @GetMapping("/items")
    List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
    
}

Feign连接池

底层发起Http请求,底层支持的http客户端实现包括

HttpURLConnection:默认,不支持连接池

Apache HttpClient:支持连接池

OKHttp:支持连接池

okhttp依赖
<!--OK http 的依赖 -->
<dependency>
  <groupId>io.github.openfeign</groupId>
  <artifactId>feign-okhttp</artifactId>
</dependency>

相关推荐

  1. 服务OpenFeign

    2024-07-23 01:06:01       27 阅读
  2. 服务:OpenFeign

    2024-07-23 01:06:01       21 阅读
  3. 02-OpenFeign-服务接入

    2024-07-23 01:06:01       52 阅读
  4. 第五章 : Spring cloud 服务调用-OpenFeign

    2024-07-23 01:06:01       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 01:06:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 01:06:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 01:06:01       45 阅读
  4. Python语言-面向对象

    2024-07-23 01:06:01       55 阅读

热门阅读

  1. uniapp锚点点击-页面跳转

    2024-07-23 01:06:01       9 阅读
  2. 解决git 不同branch 下node_moudes不同步的问题

    2024-07-23 01:06:01       12 阅读
  3. LLaMA: 开源的大规模语言模型

    2024-07-23 01:06:01       14 阅读
  4. Docker 深度解析:从入门到精通

    2024-07-23 01:06:01       12 阅读
  5. Gradle任务动作:自定义构建流程的魔法棒

    2024-07-23 01:06:01       15 阅读
  6. HOW - 保证 WebSocket 持续正常连接

    2024-07-23 01:06:01       14 阅读
  7. Sqlmap中文使用手册 - Techniques模块参数使用

    2024-07-23 01:06:01       17 阅读
  8. CF1152C Neko does Maths

    2024-07-23 01:06:01       16 阅读
  9. [技术总结] C++ 使用经验

    2024-07-23 01:06:01       16 阅读
  10. STL set

    2024-07-23 01:06:01       12 阅读