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

少年乘勇气,百战过乌孙。这篇文章主要讲述微服务架构 | 4. 服务调用相关的知识,希望能为你提供帮助。
【微服务架构 | 4. 服务调用】@[TOC](4. 服务调用)
前言参考资料:
《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
  • 点击访问:微服务架构 | 4.1 基于 Ribbon 的负载均衡详解
3. Feign 与 OpenFeign
  • 点击访问:[微服务架构 | 4.2 基于 Feign 与 OpenFeign 的服务接口调用]()
最后::: hljs-center
新人制作,如有错误,欢迎指出,感激不尽!
:::
::: hljs-center
欢迎关注公众号,会分享一些更日常的东西!
:::
::: hljs-center
如需转载,请标注出处!
:::
::: hljs-center
微服务架构 | 4. 服务调用

文章图片

:::

    推荐阅读