im也去中心化?Startalk(星语)的去中心化设计之路

本文转载自Startalk开发者,期待的搓搓小手,让咱们来揭秘去中心化的im如何设计吧!!前端

Startalk目前全套代码已全面开放至Github网站,地址:github.com/qunarcorp/q…git

Startalk 官网地址:im.qunar.com/new/#/home
github

****************************************************************************************安全

本文的重点是Startalk的去中心化设计,然而和当前很火的区块链并无什么关联。它的重点便是Startalk的架构演进史,也是IM系统发展的一个小缩影。服务器

咱们会从如下这4个部份内容中了解Startalk去中心化主要解决的问题和方法:微信

  • Startalk是什么架构

  • Startalk过去的设计app

  • Startalk的去中心化dom

  • 有效案例工具


1、Startalk是什么

Startalk是从2015年开始为Qunar服务的自动化办公软件,到如今已经有4年多的时间了。最初的初创团队只有4我的。

制做Startalk的初心是为了解决当时咱们在用RTX时候遇到的不少性能和使用上的问题。并且在当时,RTX尚未移动版本。

4年说短也不短了。在这个过程当中,咱们人手一直没能超过两位数,然而通过这几年的发展,咱们已经开始在知足于办公自动化场景的基础上,实现了商务客服场景,以及自行设计的客服转接系统,固然,这部份内容因为不是主要内容,会出如今之后的系列介绍中。

团队从2017年后半年开始,工做重心逐步的转向了开源、去中心化和智能机器人领域。

读到这儿,可能不少读者会说, 即时通讯咱们有微信了哈,已经很好用了,为啥还要用其余的,甚至要开发本身的im系统呢?

其实,微信是重社交的,咱们的办公和商务场景并非那么侧重于社交。

咱们从如下两个方面来阐述这个问题:

一、办公

  • 要给同事发送核心客户名单,交易数据,身份证号,担忧免费聊天工具不安全

你们知道,前阵子facebook刚出过安全事故,为何会出现安全问题呢,固然并非说fb在安全领域作的不够好,实际上他们的安全体系很健壮,比通常公司都要强大,

然而因为他们(facebook)是一个中心化的设计,所谓中心化的设计就是客户使用业务提供商提供的客户端登陆到提供商的后台服务器,而后用户的任何一个操做的数据都保存在他们公司的服务器上了

既然数据集中在一个点保存,那么被攻克、被泄漏就并非什么特别奇怪和偶然的事情。

  • 出差没有带电脑,却有一大堆流程亟待审批

每一个常常出差的人都清楚,若是OA只能在电脑上批,那将极大的影响办公效率。集成到公网上?本身家的办公系统放在公网貌似不是那么的靠谱。

尤为是再赶上某些多客户端登陆,聊天记录不能彻底同步的IM,将是一种灾难。

  • 公司内的提高生产效率的一些自定义应用没法整合

如今咱们已经进入了移动互联网时代,你们可能会发现,每新到一个公司就要装一批app,这已是如今的通病了。反观微信,它的集成能力很强,可是不多有公司会把企业办公挪到微信上直接使用。

为何呢?仍是安全性、隐私的问题。

二、 社交

  • 微信是重社交的软件,须要加好友才能够继续聊天。

由于微信是在广域网上的,若是能随便找到一个用户就能够聊天,那么安全性,骚扰,都是问题。

因为这些问题,当我须要马上找到某个我不认识的人的时候,就会很麻烦。好比我如今须要联系某个部门的新来的团队负责人,若是是微信的话,咱们须要加个好友才能够;

若是用Startalk,只须要走到相应的组织结构的位置上,就能够跟他进行沟通了,我不须要事先认识他,也不须要先跟他加个好友才能够继续。

与其同时的,不少人把工做和生活分得很开,微信就是平时生活上用的,若是里头有不少不是很熟悉的同事看本身的朋友圈,也是个挺奇怪的事情。

2、 Startalk过去的设计

不少人都以为实现个IM很容易,其实有必定道理。作个能聊天的软件很是简单,不少前端用一下午时间就能coding出个彻底可用的聊天室来,作出这个并不复杂。

然而一个成熟的im系统是须要各类能力协同配合的,笔者十年前就在作全国排名前三的IM,当时我就认为im的复杂性不亚于游戏。如今看虽然十年时间过去了,结论仍旧适用。那么因为涉及的技术领域比较广,标准化也就没那么容易,也就有了这篇文章和这个团队。

 先来看看老版本的Startalk的架构图:


  • ejabberd经过用户hash的方式来进行扩展
  • 其余部分的功能横向扩展

客户端有3种类型链接,分别是TCP、UDP、HTTPS。客户端使用TCP链接保持双工通讯。UDP主要用来搞音视频。HTTPS执行一些状态无关类操做。

最重要的一条链接来自于ejabberd,你们应该比较熟悉了,号称单机负载100万条链接没啥问题哈。实际测试也确实是这样,实测不须要怎么调优就达到30~40万在线仍是很轻松的。

而后咱们各类折腾,各类调优,发现和世界上其余全部的系统同样,该出问题还出问题。

接下来,咱们认为咱们进入了一个怪圈,系统确实存在有这样或者那样的问题,然而咱们貌似是在为了优化而优化,为何呢?咱们来分享一下Startalk的业务数据:

Startalk日平均在线 6500人


单人

群内成员

消息数量

25万

10万

人数

6000

3000

平均

40

33

这里只有Startalk某个时间点上的数据,仅供参考。Qunar商业版本数据涉及到商业数据的问题,就不能透露了,这里咱们介绍下办公版本,其中消息量不包括机器人的推送消息

看到图以后咱们会发现两个特色:

  • 貌似天天有500我的不说话。。。
  • 从使用频率上来说呢,咱们跟微信基本是一个层次的,2017年微信的运营数据也是日人均40条消息

看完这个表格以后,你们也就明白了,因为应用特性,咱们的IM不须要过多的考虑上亿用户在线的场景,目前的能力彻底足够用了。

那怎么办呢?

3、Startalk的去中心化

在经历了各类折腾发现根本用不上了以后,咱们参考了不少相似的app,发现你们多数都在往中心化的模式设计

而后仔细的思考了一阵以后,咱们发现其实去中心化是一条很是可行的路线。

在这里,可能有些同窗认为去中心化的目的是针对性能和容量的优化,其实去中心化的重点是安全性、易用性和可部署性,其次是根据现有客户群体,兼顾了性能和容量。

那么咱们看看去中心化最关注的安全性是什么呢?

若是您使用免费IM搞企业办公,就像下面这个图。。。


您的Idea,商业机密,客户资源,团队核心成员的联系方式以及组成, 都尽收眼底的展示给了您的潜在竞争对手。

在这里,服务提供商多是无辜的,多是帮凶。正如上面所说,facebook本意并不但愿信息外泄。可是他们不可能作到永远不出安全问题。

那么你们在使用各类门类的免费im作企业办公的时候,这个问题是必需要考虑的。

看明白这个,你们也就明白了,为何如今有几个大型的移动互联网公司都在搞本身的IM,不少公司宁肯养一个成本很高的团队,也不会去用免费的版本。


看看新的架构图:


在新架构中,之前的模块被拆分,非状态服务合并到了Public中,状态服务进入了Domain中。Domain横向扩展,相互之间隔离。


而后部署方式也跟着去中心化了:


图很简单,之前是你们连中央服务器;如今你们须要在本身家里部署一套im服务。而后就能够连本身家的机器了。


这样一来呢,每一个节点都独立运营了,数据也都只保存在节点中。一切都很美好,又回到了当前Startalk架构的基础形态了。

客户端上呢,因为咱们的客户端支持同时链接多个节点,用户也不须要装多个客户端就能够知足需求。

然而,这样就引入了另一个话题:若是我企业比较大,我还想按部门、按照各辖区分公司为单位进行去中心化部署,

这样部门与部门之间数据确定是能够不进行共享的哈,当我须要跨分公司跟其余部门的人进行沟通,怎么办呢?


去中心化了之后的QTalk在节点间新增了一个Proxy作打通。打通的双方都须要作一些配置才可使得这个Proxy变得可用。

这样一来的结果,domain间数据独立。在proxy加持的状况下,domain能够与其余domain进行互通。完全的解决了安全的问题

同时因为每一个domain支持的人数并不会不少,还记得以前分享的表格吧,因此性能和容量上获得了保证


4、有效案例

目前去哪儿网站、APP中的各类售前、客服,都是用Startalk的核心实现的。使用了最新的去中心化的设计和部署方式。效果见下图:



  • 某高校的校园管理系统

这里为了保护用户隐私,隐去用户的名称。

这套系统有如下几个特色:

  • 学院间互相独立,独立部署

  • 校园APP所有移植到IM上

  • IM不只作app容器,也作统一登陆认证系统

  • 用户使用客户端SDK作客户端接入

以上是StarTalk的去中心化设计及部署理念。后续文章中还会继续分享客服、智能AI机器人等相关内容,感谢各位的观看,谢谢!

*****************************************************************************************

Startalk目前全套代码已全面开放至Github网站,地址:github.com/qunarcorp/q…

Startalk 官网地址:im.qunar.com/new/#/home