准备文本文件
- rpc_intro.txt
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议, 允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样,无需关注内部的实现细节。
不同的应用程序之间的通信方式有很多,比如浏览器和服务器之间广泛使用的基于 HTTP 协议的 Restful API。与 RPC 相比,Restful API 有相对统一的标准,因而更通用,兼容性更好,支持不同的语言。HTTP 协议是基于文本的,一般具备更好的可读性。但是缺点也很明显:
Restful 接口需要额外的定义,无论是客户端还是服务端,都需要额外的代码来处理,而 RPC 调用则更接近于直接调用。
基于 HTTP 协议的 Restful 报文冗余,承载了过多的无效信息,而 RPC 通常使用自定义的协议格式,减少冗余报文。
RPC 可以采用更高效的序列化协议,将文本转为二进制传输,获得更高的性能。
因为 RPC 的灵活性,所以更容易扩展和集成诸如注册中心、负载均衡等功能。
- bufio.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
/*
bufio:高效io读写
buffer缓存
io: input/output
将io包下的Reader,Writer对象进行封装,带缓存的包装,提高读写效率
ReadBytes()
ReadString()
ReadLine()
*/
fileName := "D:\\桌面\\projects\\goprojects\\Golang仓库\\Golang\\01-go-basic\\bufio\\rpc_intro.txt"
file, err := os.Open(fileName)
if err != nil {
fmt.Printf("error:%v\n", err)
return
}
defer file.Close()
// 创建reader对象
b1 := bufio.NewReader(file)
p := make([]byte, 1024)
n1, err := b1.Read(p)
fmt.Println(n1)
fmt.Println(string(p[:n1]))
}
- 输出
1024
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议, 允许调用不同进程
空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使
用时,就像调用本地程序一样,无需关注内部的实现细节。
不同的应用程序之间的通信方式有很多,比如浏览器和服务器之间广泛使用的基于 HTTP 协
议的 Restful API。与 RPC 相比,Restful API 有相对统一的标准,因而更通用,兼容性
更好,支持不同的语言。HTTP 协议是基于文本的,一般具备更好的可读性。但是缺点也很
明显:
Restful 接口需要额外的定义,无论是客户端还是服务端,都需要额外的代码来处理,而 R
PC 调用则更接近于直接调用。
基于 HTTP 协议的 Restful 报文冗余,承载了过多的无效信息,而 RPC 通常使用自定义的
协议格式,减少冗余报文。
RPC 可以采用更高效的序列化协议,将文本转为二