去年咱们开发了一个内网穿透软件notr并发布,软件自己有一个调度器的角色,负责选择距离当前客户端最近的节点进行链接,详细设计以下图所示:git
内部的registry/scheduler就是这里所说的调度器。一开始没有考虑到会有海外用户,因此服务器都部署在中国大陆。后续有用户反馈软件很慢,本身沟通才发现对方不在大陆,在台湾,在马来西亚都有,因此就设计了这个调度器,让台湾,马来西亚等地用户就近接入,当时开通了两个节点,分别是香港节点和美国节点,根据客户端来源ip选最近节点,很是完美的解决了海外用户的问题。github
可是,凡事都有一个可是,链接到这些海外服务器执行命令是一件很是痛苦的事,尤为是美国节点,在高峰期执行一次命令好久都没有响应,上传下载文件更是龟速。因而就考虑写个工具来优化这一过程,提高与海外服务器之间的链接质量。web
不少产品最初都是解决本身的一个小问题,而后慢慢扩大,不断的解决更大的问题,从而造成一个解决方案,为了解决上述问题,首先是从github上找到一个名为kcptun的项目,最初一行代码都不须要开发,只须要在我本地运行kcptun客户端,再美国服务器运行kcptun服务端,当时就解决了咱们的问题。服务器
后续发现,咱们能够作大一点,让别人也能用,因此咱们就开发了一个客户端和一个服务端,客户端专门给用户使用,服务端只负责根据客户端提供的基本信息来进行tcp代理。网络
后续发现,咱们还能够作再大一点,中国市场这么大,确定也有海外用户但愿拓宽线路,打入中国市场,那么他们也有这类问题须要解决,那就让海外用户也能使用。并发
后续发现,kcptun的线路是配死的,咱们能不能改造如下,造成一个简单的相似路由的功能,以及让调度器调度,这样客户端就不用配置kcptun客户端ip了,而后对kcptun进行了一轮改造。ssh
后续发现,可能不单单局限在ssh方面,咱们能够尝试在网站方面靠拢,用户配置了网站加速以后,国内的用户会走到咱们的动态加速网络,如今正在作这个事,相信不久的未来就会面世。tcp
最终咱们ssh加速的总体结构以下图所示:工具
现已将软件发布,目前注册用户便可无偿使用,固然带宽确定是多用户共享的。测试
下图是咱们测试的经过scp从美国aws下载文件到本地的效果,没有加速,速度肉眼可见的慢,经过加速以后,传输速度是原来的十倍不止。
正如前面所述,notrssh现已开放测试,注册了notr的用户便可无偿使用notrssh以及notr内网穿透(五天试用),未来会开通付费功能,提供更稳定的带宽以及服务。而且会尝试在web应用加速,物联网设备管理等领域提供更好的产品。