美文网首页
微服务架构 | 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. 服务调用

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