网络知识 娱乐 解决海外服务器ssh执行命令卡顿等问题

解决海外服务器ssh执行命令卡顿等问题

问题来源

去年我们开发了一个内网穿透软件notr并发布,软件本身有一个调度器的角色,负责选择距离当前客户端最近的节点进行连接,详细设计如下图所示:

notr结构

内部的registry/scheduler就是这里所说的调度器。一开始没有考虑到会有海外用户,所以服务器都部署在中国大陆。后续有用户反馈软件很慢,自己沟通才发现对方不在大陆,在中国台湾,在马来西亚都有,所以就设计了这个调度器,让中国台湾,马来西亚等地用户就近接入,当时开通了两个节点,分别是中国香港节点和美国节点,根据客户端来源ip选最近节点,非常完美的解决了海外用户的问题。

但是,凡事都有一个但是,连接到这些海外服务器执行命令是一件非常痛苦的事,尤其是美国节点,在高峰期执行一次命令很久都没有响应,上传下载文件更是龟速。于是就考虑写个工具来优化这一过程,提升与海外服务器之间的连接质量。

如何解决

很多产品最初都是解决自己的一个小问题,然后慢慢扩大,不断的解决更大的问题,从而形成一个解决方案,为了解决上述问题,首先是从github上找到一个名为kcptun的项目,最初一行代码都不需要开发,只需要在我本地运行kcptun客户端,再美国服务器运行kcptun服务端,当时就解决了我们的问题。

image.png

后续发现,我们可以做大一点,让别人也能用,所以我们就开发了一个客户端和一个服务端,客户端专门给用户使用,服务端只负责根据客户端提供的基本信息来进行tcp代理。

后续发现,我们还可以做再大一点,中国市场这么大,肯定也有海外用户希望拓宽线路,打入中国市场,那么他们也有这类问题需要解决,那就让海外用户也能使用。

后续发现,kcptun的线路是配死的,我们能不能改造以下,形成一个简单的类似路由的功能,以及让调度器调度,这样客户端就不用配置kcptun客户端ip了,然后对kcptun进行了一轮改造。

后续发现,可能不仅仅局限在ssh方面,我们可以尝试在网站方面靠拢,用户配置了网站加速之后,国内的用户会走到我们的动态加速网络,现在正在做这个事,相信不久的将来就会面世。

最终我们ssh加速的整体结构如下图所示:

notrssh

现已将软件发布,目前注册用户即可免费使用,当然带宽肯定是多用户共享的。

最终效果

下图是我们测试的通过scp从美国aws下载文件到本地的效果,没有加速,速度肉眼可见的慢,通过加速之后,传输速度是原来的十倍不止。

notrssh加速效果

后续

正如前面所述,notrssh现已开放测试,注册了notr的用户即可免费使用notrssh以及notr内网穿透(五天试用),将来会开通付费功能,提供更稳定的带宽以及服务。并且会尝试在web应用加速,物联网设备管理等领域提供更好的产品。