美文网首页
微服务架构 | 4. 服务调用

微服务架构 | 4. 服务调用

作者: 多氯环己烷 | 来源:发表于2022-01-25 08:20 被阅读0次

前言

参考资料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

服务调用是在注册中心的基础之上,解决应该调用哪个服务实例的问题;


1. 服务调用基础知识

1.1 常见的负载均衡方案

  • 正向代理
    • 正向代理是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端;
    • 客户端必须要进行一些特别的设置才能使用正向代理;
    • 常用于:访问原来无法访问的资源;做缓存加速访问资源;对客户端访问授权,上网进行认证;记录用户访问记录(上网行为管理),对外隐藏用户信息等;
  • 反向代理
    • 反向代理实际运行方式是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器;
    • 常用于:保证内网的安全,可以使用反向代理提供WAF功能,阻止 Web 攻击; 大型网站,通常将反向代理作为公网访问地址,Web 服务器是内网;负载均衡,通过反向代理服务器来优化网站的负载;

1.2 Spring Cloud的 Netflix Ribbon 和 Feign 的区别

  • Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器。它可以在客户端配置 RibbonServerList(服务端列表),然后轮询请求以实现均衡负载。它在联合 Eureka 使用时 RibbonServerList 会被 DiscoveryEnabledNIWSServerList 重写,扩展成从 Eureka 注册中心获取服务端列表同时,它也会用 NIWSDiscoveryPing 来取代 IPing,它将职责委托给 Eureka 来确定服务端是否已经启动。 使用 HttpClient 或 RestTemplate 模拟 HTTP 请求,步骤相当繁琐;
  • Feign 是在 Ribbon 的基础上进行了一次改进,是一个使用起来更加方便的 HTTP 客户端。采用接口的方式, 只需要创建一个接口,面向接口,然后在上面添加注解即可 。将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建 HTTP 请求。然后就像是调用自身工程的方法调用,而感觉不到是调用远程方法,使得编写客户端变得非常容易。类似于 MyBatis 的 @Mapper 注解;

1.1 目前几种流行的服务调用组件对比

名称 厂商 特点(优点) 缺点
Ribbon Netflix 客户端负载均衡 开发较为复杂
Feign 与 OpenFeign Spring Cloud 对 Ribbon 进行封装

2. Ribbon

Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具;提供客户端的软件负载均衡算法和服务调用;

3. Feign 与 OpenFeign

Feign 是一个声明式的 Web 服务客户端,让编写 Web 服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可;


最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

相关文章

  • 微服务架构 | 4. 服务调用

    前言 参考资料:《Spring Microservices in Action》《Spring Cloud Ali...

  • 黄勇微服务

    1.为什么需要微服务架构 2.微服务架构是什么 3.微服务架构有哪些特点 4.如何搭建微服务架构 5.黄勇开源的微...

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

    在微服务架构中,需要调用很多服务才能完成一项功能。服务之间如何互相调用就变成微服务架构中的一个关键问题。服务调用有...

  • 微服务架构设计模式

    微服务架构需要考虑的问题 API Gateway 服务间调用 服务发现 服务容错 服务部署 数据调用 聚合器微服务...

  • 消息驱动的分布式事务实现

    微服务架构的事务问题 服务间调用操作的回滚 服务间调用失败的重试问题 微服务架构的事务问题解决 方法1:减少服务间...

  • Spring Cloud之Hystrix

    在微服务架构中,各个服务互相调用,底层的基础服务会被多个上层服务调用,这时如果底层服务出现故障,调用他的其他上层服...

  • 分布式问题分析

    1. 微服务架构下的服务发现功能 微服务架构下的服务发现功能 2. 微服务架构下的服务治理 3. 分布式锁 4. ...

  • Dubbo-基础概念介绍

    1.架构 1.1 服务角色介绍 Provider:暴露服务的服务提供方。 Consumer:调用远程服务的服务消费...

  • dubbo学习笔记

    架构 节点 角色说明Provider 暴露服务的服务提供方Consumer 调用远程服务的服务消费方...

  • 架构师训练营第10周作业 微服务

    根据微服务框架 Dubbo 的架构图,画出 Dubbo 进行一次微服务调用的时序图。 关于微服务架构(中台架构、领...

网友评论

      本文标题:微服务架构 | 4. 服务调用

      本文链接:https://www.haomeiwen.com/subject/agtwhrtx.html