mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
ch4-03-fix typos
This commit is contained in:
parent
a46395cfdd
commit
90cf3d81f8
@ -4,7 +4,7 @@
|
||||
|
||||
## 反向RPC
|
||||
|
||||
通常的RPC是基于C/S结构,RPC的的服务端对应网络的服务器,RPC的客户端也对应网络客户端。但是对于一些特殊场景,比如在公司内网提供一个RPC服务,但是在外网无法链接到内网的服务器。这种时候我们可以参考类似反向代理的技术,首先从内网主动链接到外网的TCP服务器,然后基于TCP链接向外网提供RPC服务。
|
||||
通常的RPC是基于C/S结构,RPC的服务端对应网络的服务器,RPC的客户端也对应网络客户端。但是对于一些特殊场景,比如在公司内网提供一个RPC服务,但是在外网无法链接到内网的服务器。这种时候我们可以参考类似反向代理的技术,首先从内网主动链接到外网的TCP服务器,然后基于TCP链接向外网提供RPC服务。
|
||||
|
||||
以下是启动反向RPC服务的代码:
|
||||
|
||||
@ -53,7 +53,7 @@ func main() {
|
||||
}
|
||||
```
|
||||
|
||||
当接每个链接建立后,基于网络链接构造RPC客户端对象并发送到clientChan管道。
|
||||
当每个链接建立后,基于网络链接构造RPC客户端对象并发送到clientChan管道。
|
||||
|
||||
客户端执行RPC调用的操作在doClientWork函数完成:
|
||||
|
||||
@ -72,7 +72,7 @@ func doClientWork(clientChan <-chan *rpc.Client) {
|
||||
}
|
||||
```
|
||||
|
||||
首先从管道去除一个RPC客户端对象,并且通过defer语句指定在函数退出钱关闭客户端。然后是执行正常的RPC调用。
|
||||
首先从管道去取一个RPC客户端对象,并且通过defer语句指定在函数退出前关闭客户端。然后是执行正常的RPC调用。
|
||||
|
||||
|
||||
## 上下文信息
|
||||
@ -148,4 +148,4 @@ func (p *HelloService) Hello(request string, reply *string) error {
|
||||
}
|
||||
```
|
||||
|
||||
这样可以要求在客户端链接RPC服务时,首先要执行登陆操作,登陆成果后才能正常执行其他的服务。
|
||||
这样可以要求在客户端链接RPC服务时,首先要执行登陆操作,登陆成功后才能正常执行其他的服务。
|
||||
|
Loading…
x
Reference in New Issue
Block a user