Open geektutu opened 3 years ago
大佬又更新七天系列辣
@Xhofe 国庆抽时间填了个坑,感谢你的支持呢~
tql
@hushui502 笔芯~
支持!
@haoheipi 感谢支持~
膜拜大佬 边学go语法边跟着学!
@seki47 配合使用,快速掌握,哈哈~ 👏
写的很好,受益匪浅 感谢大佬分享
@liron-li 感谢赞赏和支持~ 笔芯 😸
大佬的文章,深入浅出,简洁易懂,受益匪浅。感谢感谢
大佬的文章,深入浅出,简洁易懂,受益匪浅。感谢感谢
@xlban163 感谢你的支持和认可,ღ( ´・ᴗ・` )比心
仰之弥高,钻之弥坚
博主辛苦,这几个系列很有帮助,打赏支持一下。
对于day1-rpc目录的这一句话,大佬们可以给我解释下吗? https://github.com/geektutu/7days-golang/blob/9898515ba39d223be48e41c832633b8a79f0d82a/gee-rpc/day1-codec/main/main.go#L35
_ = json.NewEncoder(conn).Encode(geerpc.DefaultOption) //我理解这句话执行完成应该已经往conn里面写入了内容,那么如果我此时应该可以从conn中读取到刚刚写入的内容。
// 为了验证刚刚的猜想,我增加了下面这几句,我理解应该可以从conn读出内容才对。
buf := make([]byte,1024)
n,err := conn.Read(buf) // 但是为什么执行到conn.Read,程序就直接退出了,甚至连panic都没有?
@yudidi 对于day1-rpc目录的这一句话,大佬们可以给我解释下吗? https://github.com/geektutu/7days-golang/blob/9898515ba39d223be48e41c832633b8a79f0d82a/gee-rpc/day1-codec/main/main.go#L35
_ = json.NewEncoder(conn).Encode(geerpc.DefaultOption) //我理解这句话执行完成应该已经往conn里面写入了内容,那么如果我此时应该可以从conn中读取到刚刚写入的内容。 // 为了验证刚刚的猜想,我增加了下面这几句,我理解应该可以从conn读出内容才对。 buf := make([]byte,1024) n,err := conn.Read(buf) // 但是为什么执行到conn.Read,程序就直接退出了,甚至连panic都没有?
_ = json.NewEncoder(conn).Encode(geerpc.DefaultOption) 这一句是客户端告诉服务器需要使用的消息解码器的类型 , 服务端选择了消息解码器之后会阻塞等待客户端发送具体的消息内容。而你接下来的这句 n,err := conn.Read(buf) 应该会使客户端阻塞在这个位置不在向下执行,服务器也不会回应你任何消息。不理解的话 多看几遍兔大佬的代码
谢谢极客兔兔,让我有机会一窥其中奥秘
厉害了
真的太厉害了,谢谢兔兔
好文 好文
大佬的文章,深入浅出,简洁易懂,受益匪浅。感谢感谢
“我们可以想象下两台机器上,两个应用程序之间需要通信,那么首先,需要确定采用的传输协议是什么?如果这个两个应用程序位于不同的机器,那么一般会选择 TCP 协议或者 HTTP 协议;”这句话不太严谨,HTTP是应用层协议,一般也会采用TCP(传输层协议)+IP(网络层协议)。我猜大佬想说的是,“一般会选择TCP或者UDP协议”。欢迎批评指正!
@DurantVivado “我们可以想象下两台机器上,两个应用程序之间需要通信,那么首先,需要确定采用的传输协议是什么?如果这个两个应用程序位于不同的机器,那么一般会选择 TCP 协议或者 HTTP 协议;”这句话不太严谨,HTTP是应用层协议,一般也会采用TCP(传输层协议)+IP(网络层协议)。我猜大佬想说的是,“一般会选择TCP或者UDP协议”。欢迎批评指正! tcp协议比http低一层。应该一种是说直接用tcp,自定义应用层协议格式(游戏服务端会这么干);或者直接用http作为应用层协议
24年看到的教程,支持~
https://geektutu.com/post/geerpc.html
7天用 Go语言/golang 从零实现 RPC 框架 GeeRPC 教程(7 days implement golang remote procedure call framework from scratch tutorial),动手写 RPC 框架,参照 golang标准库 net/rpc 的实现,实现了服务端(server)、支持异步和并发的客户端(client)、消息编码与解码(message encoding and decoding)、服务注册(service register)、支持 TCP/Unix/HTTP 等多种传输协议。并在此基础上新增了协议交换(protocol exchange)、注册中心(registry)、服务发现(service discovery)、负载均衡(load balance)、超时处理(timeout processing)等特性。