前言
debian 最新稳定版,默认软件源有点轻微的过时了,所以当我们必须要使用软件的新功能的话就只有编译或者添加源。而且编译浪费时间,还容易造成系统的不稳定。而且添加软件源就牵扯到一个信任问题了。所以我选择了 backports 源。
backports 源曾经是第三方源后来因为做的比较好被 debian 官方收编了。dackaports 源的软件全部来自于 debian 的下一个版本,所以质量和稳定性都是有保证性的。
本次演示在 debian9 下进行
nginx 从 1.9.0 开始支持 tcp 转发,1.9.13 支持 udp 转发。利用 nginx 数据转发模块我们可以方便的进行链路优化。
本次演示在 linux 下进行,包括 debian 和 centos。debian 使用的是 debian9,centos 使用的是 centos7。
如果你使用了云服务商提供的外部防火墙的话,你还需要参考云服务商的文档进行配置。或者你使用了云服务商提供的修改过的系统比如 aliyun ,请参考 yun 服务商的文档配置防火墙。
fedora 官方源打包的 nginx 不包含 tcp/upd 数据转发模块,这是我之前踩过的坑,这里只是顺便说一下,本文不演示 fedora 的 nginx tcp/upd 数据转发。
julia 作为一款专为科学计算设计的语言,有着动态语言的简单和静态语言的速度,以上纯属吹逼,大家不用在意。我打算了解 julia 其中一部原因是因为和 python3 有着相似的语法,而且听说数学计算能力不错。详情请参见 https://zh.m.wikipedia.org/zh-cn/Julia_(编程语言)
本篇教程的 代码主要基于 grpc 官方的代码进行修改,大部分相同于官方又有一点微小的不同,所以不能完全的相互替代,请大家注意!需要查看官方文档的请前往 https://grpc.io/docs/ 进行查看。在接下来的演示中我会使用 golang 和 python3 的代码进行编写。
目前会用到一些 nodejs 相关的软件,然而 debian 稳定源提供的 nodejs 版本太老了。就算提供最新版我可能也不会使用源方式进行安装,这样会在全局范围内生效。所以我选择是新建一个普通用户进行安装,需要使用的时候切换到这个用户就可以了。
写这个的原因是打算,为以后的混合编程做准备。打算了解一下类 unix 平台下的通信方式。在综合了各种通信方式的优劣后最终选定了这一种通信方式,而且这种通信方式很容易的转化为 tcp 通信,实现更远距离的通信。至于为什么不直接选择 tcp 是因为 tcp 需要占用一个端口,而且目前也不打算实现更远距离的通信
关于 unix domain socket 的更多详情请查看:https://zh.m.wikipedia.org/wiki/Unix域套接字
本次展示的代码主要使用 go 进行编写。为了直观的展示跨进程能力,也使用到了 python3 编写的代码