作为数据工程师,我的工作流里需要大量的算力来运行各种数据分析算法。但是从高中开始一直使用游戏电脑的我很早就开始厌倦背着游戏笔记本到处跑了。一方面游戏笔记本价格逐渐走高,每次升级都要大放血。另一方面游戏笔记本的重量和续航是众所周知的短板。我开始思考有没有什么办法能够满足算力+轻薄+续航呢?
我最开始尝试了Surface+办公本+台式机,文件通过NAS或硬盘联通。这也是绝大多数人采用的方案。复杂的工作在台式机上完成,平时使用Surface通勤。有移动计算的需求时,带上我的办公本。
这样方式的好处是初步解决了轻薄和续航的矛盾。但是文件共享和设备管理又变成了一个头疼的事。很多时候用不到办公本,办公本就放在柜子里。拿出来发现三四个月没更新过系统,电量也早就流失了,到用的时候还需要个小时提前准备。另外文件共享也是十分头疼的事情,有时忘记把文件放到NAS/移动硬盘上,设备又不在身边。经常发生例如昨天在台式机上做好的项目,今天和同事谈话的时候聊到,想给同事看看却发现文件忘记放到NAS上了。
【资料图】
还有一种解决方案是通过teams viewer来远程操作另一台电脑,但是这样鼠标移动都有延迟,体验极差
我通过了IPv6自建服务器+VSCode远程开发的方式将我的整个VSCode的工作流都挪到了云服务上托管执行。代码编辑和执行都通过VSCode远程操纵云服务器进行。本地和云服务又是异步执行的,避免了team viewer等方案的延迟。如果你和我一样,所有的工作都可以通过VSCode做的话,那么我这里提到的方案就是目前最好的个人工作环境解决方案。
最近在做一个远程开发项目的时候发现VSCode远程开发的功能可以让云服务器代理代码的执行。所有的文件和数据都存在远程服务器上,在连接的时候服务器发送一个文件的副本给本地。本地可以编辑这个文件,在点击执行的时候,实际上是云端在运行。云端运行结束后发送一份运行结果给本地。本地则只充当一个显示器的功能,所有的耗电、发热的部分全部都由云服务器承担。
这个模式因为云服务器和本地是异步的,只有在点击执行的那一刻才进行文件和运行指令的同步。对比team viwer因为所有的操作都是实时的,每按下一个键都需要等待操作发送到另一端,执行完之后再发送视频回来。我们的方案真正的实现了仿佛在本地编辑代码一般的云计算体验。
说到这里,很多有云平台开发经验的人就会说,云服务器是相当昂贵的,尤其是高CPU GPU配置的云服务器。比如目前微软云上一台2核8GB内存的服务器每个月就接近500人民币。如果每个月就要500人民币的话,要不了一年,就可以买一台新的台式机了。所以我最后选择自己建自己的云服务终端。
自己建云服务器的话最难搞定的就是IP。如果没有固定公网IP的话,就意味着我们的现在非常丰满的想象只能在家里实现。一旦出了家门就因为访问不了家里的服务器而失效。我一开始天真的认为搞个DDNS就可以解决公网IP的问题。但是,我的情况绝对代表了读这篇文章的所有人中最困难的水平,我家的网络使用了GCNAT。这意味着在我上面还需要有两层动态IP分配才能接触到真正意义上的固定IPv4地址。即使使用了DDNS也只能穿透一层动态IP分配,依然访问不到局域网里面的内容。
我在研究了数种解决方案之后觉得最合适的就是通过IPv6连接。搭建个人云服务器拢共几步操作
准备一个合适的硬件(根据个人的性能需求,要考虑功耗)如果要跑docker的话推荐内存加大一些。
安装Ubuntu系统(因为我们要搭一台面向公网开放的服务器,所以最好用便于管理的系统)
配置好SSH密钥登陆并禁用密码登录,禁用root用户登录,通过U盘等方式将私钥拷贝到本地电脑上。记得修改SSH端口,不要用默认的22。
配置ufw防火墙,删掉除了IPv6协议的SSH端口以外的所有其他端口。记得先开防火墙端口再改SSH端口,要不然就会把自己锁在外面
在本机的VSCode上安装Remote-SSH插件,配置好SSH的密钥连接。VSCode在第一次连接时会自动配置remote的运行环境。
VSCode左下角会显示已经连接云服务器,接下来把所有的项目文件都通过U盘或者SSH发送到云服务器上。
上一篇 : 外媒:科隆展终于有女性了 但为什么都有男性陪同?
下一篇 : 最后一页