vlambda博客
学习文章列表

分布式架构之微服务通信




一、微服务的通信方式有哪些?

  • 1.RPC;

  • 2.HTTP;

  • 3.Message。

二、实现这些通信方式的框架有哪些?

1.RPC

  • 1.Dubbo;

  • 2.Grpc;

  • 3.Apache Thrift;

  • 4.Hessian;

  • 5.RMI。

2.HTTP

  • 1.SpringCloud Open Feign;

  • 2.SpringMVC;

  • 3.Okhttp;

  • 4.SpringBoot。

3.Message

  • 1.JMS;

  • 2.ActiveMQ;

  • 3.RabbitMQ;

  • 4.Kafka。

三、分布式微服务通信过程中遇到了哪些问题?

这里我列举比较典型的2个问题:

  • - 微服务通信超时;

  • - 微服务通信报错。

1.微服务通信超时

A服务调B服务,B服务调C服务,而此时C服务这时突然不给B服务响应了,最终造成服务之间通信超时报错,最终将错误由B服务抛给了A服务。

2.微服务通信报错

报错的原因有很多,不一定是代码的问题,也可能与与服务器的磁盘、CPU、内存、网络以及用户访问量、调用其它微服务没有给予正常的数据反馈等有关系。

四、如何解决这样的问题呢?

最近生产环境有一个W微服务应用就出现了微服务通信超时的问题。
W微服务部署在应用服务器x中,而应用服务器x中是处于内网的情况下,相当于与外部网络隔绝,而W微服务中的某一接口每天每小时都需要接入第三方某网的数据推送,其中某网的数据推送的一个接口推送是外网图片URL数据,而这些外网图片URL数据是需要W微服务将其下载至应用服务器x中临时图片存储文件夹上,然后进行图片裁剪,最终存入到应用服务器x中的某个文件夹下。

而内网中的W微服务是无法下载远程图片的(出现了通信超时问题),而此功能相对比较重要,W微服务与另外的E微服务关系紧密,相当于W微服务接入第三方某网的数据推送,将推送的数据组装处理后,转发E微服务对应的接口实现数据最终的计算入库的流程。

当然了,这仅仅只是一个临时的办法。要想根本解决问题,就要重新梳理一些各个微服务,那些微服务是可以放在内网的,那些微服务是必须要放在外网的。

问题解决流程:
报错信息-明确问题-追踪代码-问题解决方案-执行方案-事后针对问题进行复盘。