Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
52 lines (30 sloc) 1.46 KB
layout title key tags category date modify_date
article
201 微服务-服务调用
A20190409026
编程 JAVA基础
blog
2019-04-09 22:19:26 +0800
2019-04-09 22:19:26 +0800

客户端调用服务端接口,需要解决以下几个问题。

服务端与客户端如何建立连接

由于服务端与客户端分布在不同的机器上,所以需要建立网络连接。

一般会采用基于TCP协议的HTTP或者socket进行通信。

常用的连接方式则有REST和RPC两种。

如何管理连接

网络状态并不是一直稳定的,所以要求服务端和客户端对网络连接进行管理。

例如断开后如何重试,链路的存活检测等等。

服务端如何处理请求

服务端在接受到请求之后,可以采用BIO、NIO、AIO等方式处理请求。

BIO适合连接数比较小的场景。

NIO适合连接数较多,但是连接较轻的场景,例如发送聊天信息。

AIO适合连接数较多,但是连接较重的场景,例如文件上传。

数据传输采用什么协议

最常用的有HTTP、Hessian、Web Servie等协议,一些微服务框架也封装了自己的协议,例如Dubbo提供Dubbo协议。

序列化和反序列化

网络传输的耗时一方面取决于网络带宽,另一方面取决于数据传输量,对数据进行序列化可以有效的减小数据量。

常用的序列化方式有。

  • 文本类,例如XML/JSON。
  • 二进制类,例如PB/Thrift。
You can’t perform that action at this time.