go语言框架研究(第五篇) | 青训营

49 阅读2分钟

go语言框架研究

RPC

RPC是远程调用函数技术.普通函数调用通过栈帧的思想,将实参以形参列表的格式放入栈中,通过栈指针调用函数,从栈中取出实参在函数中执行并将结果存储在栈中.远程调用函数思想是要实现远程调用,肯定是通过网络传输数据。A程序提供服务,B程序通过网络将请求参数传递给A,A本地执行后得到结果,再将结果返回给B程序。
rpc分为三个阶段,函数映射,数据转换为字节流,网络传输.它的不同阶段按照分层思想在客户端服务器端分为业务层,编解码层和网络接口层.编解码层组件TDL类似于一个中间件,同时接受客户端和服务器端发送的数据.RPC的编解码层可以接受二进制编码,文本编码和特殊语言编码.协议层(业务层)就是用来规定数据传输的格式,和http协议一样都可以明确数据报长度,编解码格式等信息.网络接口层用于与互联网内部连接,主要使用sockets编程.

image.png 我认为rpc框架编程封装了API,简化了编程过程,有利于分布式系统开发和数据传输.- Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎.同时rpc最好优点是解决了微服务过微的问题,RPC将功能相同的服务或访问频率高的服务加一个标签,然后调度到同一个物理机中,这样就减少了服务器负载均衡的操作.

http

Http协议又叫超文本传输协议,是一种应用层协议。规定了网络传输的请求格式、响应格式、资源定位和操作的方式等。http协议只有二进制编码,且是无状态的编码.
用 TCP 协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志——SYN(synchronize) 和 ACK(acknowledgement)。

http三次握手发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

如何选择http和rpc

微服务,更加强调的是独立、自治、灵活。而RPC方式的限制较多,因此微服务框架中,一般都会采用基于Http的Rest风格服务。