ts 服务器,tsserver 相关基础信息介绍

TS服务器和tsserver,很多人第一眼看到会当成同一项事物。实际上二者所属领域完全不一样,一个偏向硬件或是操作系统层面,另一个属于软件开发工具链内的组件。

先说简称TS服务器,放到国内技术交流场景,至少存在四种互不相关的常见指代。

塔式服务器(Tower Server)是最普遍的一种。这类服务器依靠机箱外形定义,外观类似立式PC,只是主板扩展插槽更多、机箱体积更大,内部预留硬盘与电源冗余扩展空间。塔式服务器主板拓展能力不错,采购成本偏低,适合入门级、工作组场景,中小企业购置一台放置办公室就可以投入使用。短板也很突出,整机体积大,占用空间,如果托管进IDC机房,受放置形态限制,通常会占用4U及以上机架位,托管费用随之上涨。

ts 服务器,tsserver 相关基础信息介绍

第二种指代是腾讯的TencentOS Server,常简写为TS或是tlinux。这是腾讯面向云场景自研的Linux操作系统,在腾讯内部已经运行十年,部署规模达到百万级,内部Linux系统占比99%。产品定位是为云服务器实例上的应用提供高性能、稳定可靠的运行环境,在内核优化、零停机热补丁、宕机自动分析等方向投入大量研发工作。2020年底CentOS宣布停止维护之后,TencentOS Server作为备选方案受到更多用户关注,用户态软件包可以和RHEL保持兼容。

第三种就是TeamSpeak服务器。TeamSpeak属于VoIP语音通信软件,2001年首次发布,主要使用者是联机游戏玩家,组队打副本或是对战时用来实时语音沟通。软件分为服务端与客户端,服务器独立部署在主机上,支持Windows、macOS、Linux、FreeBSD系统,单进程最多能够运行两个虚拟服务器。对比YY、Kook这类需要注册官方账号的平台,TeamSpeak最大特点是能够自行搭建服务器,数据不会经过第三方平台,不用注册官方中心账户。

第四种是终端服务器(Terminal Server),属于Windows Server早期版本自带的服务器角色,最早出现在Windows Server 2008。终端服务器用来托管Windows程序或是完整Windows桌面,用户依靠远程桌面连接或是TS RemoteApp访问,程序运算全部在服务器端执行,网络仅传输键鼠操作和画面信息。后续Windows Server版本对该角色完成更名重构,现在统一称作远程桌面服务,TS这个缩写现在已经很少单独拿出来使用。

介绍完TS服务器,再看tsserver。全称TypeScript standalone server,和前面硬件、语音通信相关内容没有任何关联。它是TypeScript编译器附带的Node可执行程序,封装TypeScript编译器与语言服务,依靠JSON协议向外提供接口。

tsserver的工作逻辑并不复杂,监听标准输入,将响应输出到标准输出,请求和返回数据全部采用JSON格式。编辑器或者IDE拉起tsserver进程之后,通过这套JSON协议下发各类指令,比如打开文件、获取代码补全、查询符号类型信息。tsserver处理完毕,再把结果输出到标准输出,编辑器读取内容,展示补全列表或是类型提示给使用者。

这套架构的核心价值,是把TypeScript语义分析能力从编辑器剥离独立出来。VS Code里的TypeScript支持功能,底层直接调用tsserver,Sublime Text、Neovim的相关插件,同样借助tsserver实现代码智能提示。编辑器负责界面交互,tsserver承担全部TypeScript语言分析工作,双方依靠一套明确协议通信,互不干扰。

tsserver可执行文件存放在TypeScript包lib目录下,安装typescript之后,路径node_modulestypescriptlibtsserver.js就能找到。日常开发中用户基本不会直接操作tsserver,它是编辑器后台持续运行的进程。但编辑器响应卡顿、代码补全失效、类型检查报错异常这类问题,排查方向大多和tsserver有关。借助TSS_LOG环境变量可以配置tsserver日志,设置为verbose级别,会把完整请求与响应记录写入文件,方便定位故障。

回到最开始的问题,TS服务器和tsserver唯一共同点就是名称都包含TS。TS服务器是一组含义分散的缩写,机箱硬件、操作系统、语音软件、Windows系统角色,四类完全不同事物共用这个简称。而tsserver是单一明确的技术组件,专指TypeScript语言服务器。阅读文档碰到TS缩写,优先看所处场景,硬件采购文档、云服务器控制台、游戏语音频道、Windows系统管理,或是编辑器配置文件,场景基本就能判断对应的含义。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。