一、微服务理解

个人理解:微服务的出现和流行并不是因为技术的原因,更多的是因为便于管理,将不同项目分作很多个服务,服务和服务之间再调用;

**原因:**在之前的项目都是大单体项目,项目用人多,修改模块自然也多,模块的部署时间等等要求也不同,所以拆分成不同的服务,每个团队各负责各的项目,就容易管理了。

就我所在团队使用的微服务,作为典型的一个SpringBoot微服务框架,从服务注册中心、服务配置中心、网关服务、以及服务集群中的服务,当然这里边的服务治理还包括,网关健康检查、负载均衡、容器云技术、熔断等的学习是有必要的。

二、微服务之间的最佳调用方式

服务和服务之间的沟通,相互调用就是一个重要的一环。
调用方式有俩中:RPC方式、事务驱动方式(消息发送方式包含事件通知、事件溯源)

**事件通知方式:**一个例子比如网购,我选购商品加入购物车,
动作1:商品进行结账(Checkout),生成一个结算动作的命令(Order Placed)发送
动作2:支付(Payment)动作收到消息后,接收用户信息(就是钱),服务完成后返回“支付收到”(Payment received)。
动作3:仓库的存货清单(Inventory)收到支付信息后,取货,并返回信息取货完成信息(Goods fetched)
动作4:接下来要运走货物,(shipment)得到取货成功信息后,发货,并返回信息给用户“商品已发货”(Goods shipped)。

RPC方式:搜罗其他博客找到的

三、总结

微服务之间的调用有两种方式,RPC和事件驱动,其中事件驱动分为事件通知和事件溯源。

事件驱动是更好的方式,因为它是松耦合的。

但如果业务逻辑是紧耦合的,RPC方式也是可行的(它的好处是代码更简单),而且你还可以通过选取合适的协议(Protobuf gRPC)来降低这种紧耦合带来的危害。

四、@FeignClient注解应用(RPC方式)

在开发微服务应用时,我们会在主程序入口添加 @EnableFeignClients 注解开启对 Feign Client 扫描加载处理。根据 Feign Client 的开发规范,定义接口并加 @FeignClients 注解。
当程序启动时,会进行包扫描,扫描所有 @FeignClients 的注解的类,并将这些信息注入 Spring IOC 容器中。当定义的 Feign 接口中的方法被调用时,通过JDK的代理的方式,来生成具体的 RequestTemplate。当生成代理时,Feign 会为每个接口方法创建一个 RequetTemplate 对象,该对象封装了 HTTP 请求需要的全部信息,如请求参数名、请求方法等信息都是在这个过程中确定的。
然后由 RequestTemplate 生成 Request,然后把 Request 交给 Client 去处理,这里指的 Client 可以是 JDK 原生的 URLConnection、Apache 的 Http Client 也可以是 Okhttp。最后 Client 被封装到 LoadBalanceclient 类,这个类结合 Ribbon 负载均衡发起服务之间的调用。

微服务之间调用方式@FeignClient相关推荐

  1. feign调用多个服务_Spring Cloud多个微服务之间调用代码实例

    这篇文章主要介绍了Spring Cloud多个微服务之间调用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 现在又一个学生微服务 user ...

  2. Spring Cloud中如何保证各个微服务之间调用的安全性

    一.背景 微服务架构下,我们的系统根据业务被拆分成了多个职责单一的微服务. 每个服务都有自己的一套API提供给别的服务调用,那么如何保证安全性呢? 不是说你想调用就可以调用,一定要有认证机制,是我们内 ...

  3. spring cloud微服务之间调用Feign

    微服务之间调用Feign 1.在调用方添加feign依赖: <dependency><groupId>org.springframework.cloud</groupId ...

  4. 微博中微服务缓存_微服务之间调用超时的设置治理

    原标题:微服务之间调用超时的设置治理 作者 | 奇正 微服务是⼀种分布式架构,系统内各部分(服务)被部署为单独的应用程序,并通过某种远程访问协议进⾏通讯.分布式应⽤的挑战之⼀就是如何管理远程服务的可用 ...

  5. 微服务之间调用经过网关吗_微服务网关入门

    一.什么是服务网关服务网关 = 路由转发 + 过滤器 1.路由转发:接收一切外界请求,转发到后端的微服务上去: 2.过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验.限流以及监控等,这些都可 ...

  6. 018 微服务之间调用

    2019独角兽企业重金招聘Python工程师标准>>> 1 服务说明 准备两个maven项目,eureka-sales.eureka-user,通过访问eureka-sales服务调 ...

  7. 微服务之间的最佳调用方式

    上一篇:3600万中国人在抖音"上清华" 0.2T架构师学习资料干货分享 茉莉花,别名:茉莉,拉丁文名:Jasminum sambac (L.) Ait,木犀科.素馨属直立或攀援灌 ...

  8. Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用

    文章目录 Spring Cloud[Finchley]专栏 概述 HTTP方式之RestTemplate 方式一 (直接使用restTemplate访问URL,url写死) 方式二 (使用LoadBa ...

  9. SpringCloud服务之间调用,报异常Method has too many Body parameters: public abstract

    问题: SpringCloud 或 SpringCloud Alibaba 开发中微服务之间调用遇到问题:Method has too many Body parameters: public abs ...

  10. feign调用service_微服务之间的调用(Ribbon与Feign)

    概述 在前面的文章中,我们讲了使用Eureka作为服务注册中心,在服务启动后,各个微服务会将自己注册到Eureka server.那么服务之间是如何调用?又是如何进行负载均衡的呢?本文讲讲服务之间调用 ...

最新文章

  1. mysql is复制表结构_MySQL复制表结构和内容到另一张表中的SQL语句
  2. 生产交接班管理系统的安装设置并下载
  3. python语言程序设计基础第二版第七章答案-Python核心编程第二版 第七章课后答案...
  4. Leetcode 面试题 10.01. 合并排序的数组 (每日一题 20210616)
  5. php 降低图像大小,在PHP中调整图像大小
  6. Android探索之旅 | 面向对象和Java基础
  7. 前端学习(615):变量
  8. java 构造 super_Java中的构造方法this、super的用法详解
  9. 忽略git项目上的任何#39;bin#39;目录
  10. delphi 2010 mysql_DELPHI 10.2 TOKYO搭建LINUX MYSQL开发环境
  11. Office2016专业增强版与Visio2016专业版不能共存的解决办法
  12. java 实现宠物领养_基于jsp的宠物领养-JavaEE实现宠物领养 - java项目源码
  13. xxljob默认登录_XXL-JOB快速入门
  14. 计量经济学之格兰杰因果关系检验(Granger causality test)
  15. 谷歌drive收费_Google Drive的系统设计分析
  16. js实现简单的视频播放
  17. 怎样阅读论文(台湾彭明辉)ZT
  18. 图片破损打不开如何修复?一招轻松恢复损坏图片!
  19. 3D、4D、5D区别?
  20. 【iOS与EV3混合机器人编程系列之六】iOS_WiFi_EV3_Library 剖析之发送命令给EV3

热门文章

  1. 文件夹访问被拒绝 你需要权限来执行此操作,您需要权限来执行此操作
  2. uni-app实现文件管理器(Android)
  3. 机器如何猜你所想?阿里小蜜预测平台揭秘
  4. 脚本小子_python基础
  5. centos7上运行 ultravnc repeater
  6. 计算机课程没电脑怎么讲课,停课不停学,学生家里没有电视、智能手机和电脑,怎么上网课?...
  7. android inflate,android inflate详解
  8. 射影几何----极点极线割线共点四点调和定理
  9. Mac mini7.1 2014年末 安装单windows 10系统
  10. 【深度学习】关于pytorch中使用pretrained的模型,对模型进行调整