(一)应用背景介绍
我所在的Oray是提供各种互联网服务且具有海量用户的互联网企业,我们也一直在实践各种新技术新架构;缓存方面我们从memcached、ttserver、redis等都有较多应用,其中redis我们的dns体系中有着很深度的集成使用;MySQL InnoDB memcached plugin出来挺久的了,网上还没见到国内有把它用到生产环境的实例,我今天就给大家说下小白鼠体验。
创始产品花生壳是个简单的动态域名产品,用户可以用它发布自己的各类服务,从网站到各类专用数据连接;就算在中国互联网环境如此残酷同时IPv4资源在不断萎缩的今天,这个产品还在不断的发展壮大。虽然表面看起来是个简单的工具软件,但它为中国一代代的互联网人解决了很多基础的连接问题!
但很大一部分用户使用我们的花生壳也就是为了远程操作电脑,所以2010年,在我们埋头苦干了1年多后推出了向日葵远程控制产品,这个产品的基本功能就是让用户不需要关心IP端口等技术知识就可以远程管理控制他的所有电脑,这个产品主要依赖以下技术:
1、通过关系型数据库管理用户主机清单;
2、使用长连接维持被控在线状态;
3、P2P通信技术传输控制信号以及图像信号;
4、优化的算法尽可能的降低用户带宽占用以及提高图像质量;
5、其他周边技术,如HTML5免插件远程控制、远程开机等。
客户端、操作系统以及相关远控技术问题我们今天先不探讨,向日葵也不是一个简单的C/S结构软件,我们需要像聊天服务器那样与客户端进行实时交互,而客户端在线量一直在凶猛的增长中,我们的系统以及运维和开发团队也就不停的迭代并成长。
(二)向日葵远程控制技术的数据需求
上面提到,向日葵使用关系型数据库存贮某一个用户拥有哪些主机,以及这些主机的具体相关信息;在此同时,我们也需要临时存储一些关键的实时数据:
1、主机鉴权信息
2、主机在线状态
3、如何连接主机
从这些数据内容可以看出它们是实时产生且需要多方可以直接访问的,向日葵的被控端可能登陆在全国各地任意一台长连接服务器上,而试图过来访问这个被控的主控端则需要通过API服务实时读取被控的状态信息,以及读取这个被控通过哪