| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 「GoCN酷Go推荐」Go原生RPC与ARPC的简单使用 -> 正文阅读 |
|
[网络协议]「GoCN酷Go推荐」Go原生RPC与ARPC的简单使用 |
什么是 RPC? RPC叫做远程过程调用,意思是两台不同服务器上的服务,可以互相像调用函数一样调用。 我用HTTP API不一样能达到同样的效果吗? 其实对于新人来说,两台服务器之间的数据交互,用HTTP提供的API真的可以解决,但效率不高,延迟也高,且连接不会复用,因为大家都知道HTTP是无状态传输协议,每次传输都不知道对方是谁,因此,体现在以下方面:
快速使用原生RPC 首先通讯双方都应拥有同样结构体,所以服务端与客户端都创建创建 go_rpc -----> RpcParams.go:
服务端编写main.go文件 :
开始在另外一台服务器上写客户端的main.go:
RPC演示:为什么需要APRC: 很好,通过上面的例子,已经可以写出RPC的信息交互了,但如果遇到需要服务端主动给客户端发消息,客户端异步调用服务端的函数,这些就不是原生RPC能够做到的了 我们做一个ARPC的简单示例: 使用ARPC前应当先:
其实ARPC看上去更像是服务端定义了一个ROUTER,客户端去根据路由寻址找到了这个函数 首先还是看服务端的实现,服务端main.go如下:
然后写客户端的代码:
最后也能和RPC一样,得到东西: 客户端发出hello,服务端str获得了hello并打印,且像客户端发送了当前服务器的运行系统名runtime.GOOS,客户端:Call Response : windows/linux 这样的结果 总结 其实ARPC还有很多其他功能,比如还可以提供给WS的调用方法等,官方压测后性能与RPC几乎持平,甚至比RPC更高。 我们在使用一项新技术之前,一定要弄明白这项新技术为什么会被发明出来,解决了什么痛点,提升了怎样的性能,努力思考实际应用场景在哪里,比如ARPC可以用到即时通讯,可以复用连接池,不用资源一直申请与释放,监控数据的实时展示等。 参考链接 https://github.com/lesismal/arpc 《酷Go推荐》招募: 各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到 新的库,并且知道怎么用。 大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名 扫码也可以加入 GoCN 的大家族哟~ |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:33:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |