子宫肌壁回声不均匀是什么意思| 嘈杂的意思是什么| 支气管炎吃什么药好| 脚踝肿是什么病| 巴马汤泡脚有什么功效| 早上九点到十点是什么时辰| 八一年属什么生肖| 女性肠痉挛有什么症状| 田五行属什么| 中耳炎吃什么药最有效| 怀孕感冒可以吃什么药| 鱼字五行属什么| 做三明治需要什么材料| 鹿角粉有什么功效和作用| 朱元璋为什么杀蓝玉| 普瑞巴林胶囊治什么病| 什么是bg| 蔚姓氏读什么| 七月是什么生肖| 什么是梅尼埃病| 5个月宝宝吃什么辅食| 1月10号什么星座| 吃什么能养肝护肝| 法令纹上有痣代表什么| 7月30日是什么星座| 不亚于是什么意思| 老年骨质疏松疼痛有什么好疗法| 腿抽筋是什么原因引起的| ad和d3有什么区别| 胃热吃什么中成药| 血型o型rh阳性是什么意思| 丹凤眼是什么样的| 梦到自己孩子死了是什么征兆| 什么是桑黄| 扁桃体长什么样子| 漫山遍野是什么意思| 打狂犬疫苗不能吃什么| 口苦是什么原因造成的| 蜗牛吃什么| 甲状腺结节低回声什么意思| 漂洗和洗涤有什么区别| 黑舌头的狗是什么狗| 命门是什么意思| 麝香保心丸治什么病| crc是什么职业| 属兔与什么属相相克| 随餐服用是什么时候吃| 梦见炒菜是什么意思| 为什么会得鼻炎| 爱情公寓6什么时候上映| 掉头发是什么原因女性| 开救护车需要什么驾照| 脚底长鸡眼是什么原因| 什么西瓜最好吃| 头部出汗多是什么原因| 榴莲吃起来口感像什么| 内痔疮吃什么药好得快| 痔疮用什么药治最好效果最快| 双脚麻木是什么病的前兆| 特别容易饿是什么原因| 烂大街是什么意思| 孙权与孙策是什么关系| 玩微博的都是什么人| 剥离是什么意思| 品牌logo是什么意思| 梧桐树的叶子像什么| 天宫是什么意思| 研讨会是什么意思| 唇周发黑是什么原因| 什么是抗氧化| egcg是什么| 余情未了什么意思| trance什么意思| 滑膜炎什么症状| 免疫球蛋白低说明什么| 左肾肾盂分离什么意思| 梦见洗车是什么意思| 松花蛋不能和什么一起吃| 6月份是什么星座的| l5s1椎间盘突出是什么意思| 柠檬吃多了有什么坏处| 飞机杯有什么用| 张姓为什么出不了皇帝| 吃什么升血小板最快最好| 为什么会黄体功能不足| 冬虫夏草有什么功效与作用| 历法是什么意思| 巨细胞病毒阳性什么意思| 氟骨症是什么病| 前列腺炎是什么原因引起的| 肛瘘是什么病| 薛之谦的真名叫什么| 小便有血尿是什么原因| 指甲油什么牌子好| 右侧卵巢囊性结构是什么意思| 胃胀痛什么原因| 梦到被雷劈是什么意思| 腰间盘突出挂什么科| 甲状腺偏高有什么影响| bulova是什么牌子的手表| 六味地黄丸什么牌子好| 吹箫什么意思| 牙根变黑是什么原因| ad医学上是什么意思| 电压不稳定是什么原因| 处女座和什么座最配| 12月1日是什么意思| 喉咙挂什么科室| 撤退性出血是什么| 结婚20年是什么婚| 芥花油是什么油| 睡觉头出汗是什么原因| 富翁是什么意思| 回光返照是什么意思| tct是什么| 湿气用什么药最好最快| 纯阳之人有什么特征| 肚子疼吃什么药好| 吃避孕药有什么危害| 劲酒加红牛有什么功能| 金融bp是什么意思| 青少年耳鸣是什么原因引起的| scr医学上是什么意思| 携字去掉提手旁读什么| 爱马仕是什么意思| 肝囊肿是什么原因造成的| 梦见坐飞机是什么预兆| 海贼王什么时候出的| 小腿骨头疼是什么原因| ieg是什么意思| 迪桑特属于什么档次| hpv病毒是什么病| 硬着头皮是什么意思| 梁五行属什么| 多巴胺是什么东西| 身正不怕影子斜是什么意思| 苦肠是什么部位| 生性凉薄是什么意思| 孕期感冒可以吃什么药| 天蝎座是什么象星座| 无犯罪证明需要什么材料| 溃疡性结肠炎有什么症状| 兰花代表什么象征意义| 泡脚对身体有什么好处| 护佑是什么意思| 什么什么不惧| 常打嗝是什么原因| 醋泡花生米有什么功效| 用盐水洗脸有什么效果| ct胸部平扫检查出什么| 热伤风吃什么感冒药| 鼻咽癌是什么| 酗酒是什么意思| 尿道尿血是什么原因| 慢性结肠炎吃什么药好| 一个王一个八念什么| 什么是试管婴儿| 酸萝卜别吃什么意思| 南辕北辙的意思是什么| 四月是什么月| 吃什么补头发| 晚上7点到9点是什么时辰| 你什么意思| 上朝是什么意思| 老生气会得什么病| 高潮是什么感觉| 负离子是什么东西| 红色尿液是什么原因| 痰多吃什么化痰| 牛黄解毒片不能和什么药一起吃| 炫的意思是什么| 宫颈粘膜慢性炎是什么意思| 灰指甲长什么样子图片| g50是什么高速| 我需要什么| 毛孔粗大用什么药膏| 吃什么可以健脾养胃| 想吃辣椒身体里缺什么| 浮肿是什么原因| 西瓜霜是什么做的| 为什么眼皮会一直跳| 眼袋大用什么方法消除| 吃奇亚籽有什么好处| 什么值得买官网| 红糖和黑糖有什么区别| 颈椎疼挂什么科| 肝转氨酶高有什么危害| 黑咖啡为什么能减肥| 早餐吃什么最减肥瘦身| 团长一般是什么军衔| 嗓子疼吃什么药好得快| 超声心动图是什么| 盐水泡脚有什么好处| 胃酸过多吃点什么食物比较好| 什么是道德绑架| TB是什么缩写| 打饱嗝是什么病的前兆| 减肥晚上吃什么合适| 什么是乳糖不耐受| 情景剧是什么意思| 喝老陈皮水有什么好处| 产后什么时候来月经正常| 不动产是什么意思| 跑马了是什么意思| 夫妻肺片是什么| 热忱是什么意思| 为什么乳头内陷| 偏光镜是什么意思| 老玻璃是什么意思| 为什么小便会带血| 颈椎增生吃什么药| 腰间盘突出有什么症状| 斑鱼是什么鱼| 影字五行属什么| 做梦梦见大火是什么意思| nuskin是什么牌子| 男性硬不起来什么原因| 大仙为什么知道你的事| 腰肌劳损需要注意什么| 李耳为什么叫老子| 身高别体重是什么意思| 什么是月子病| 梦见和尚是什么预兆| 经期喝什么补气血| 胰腺在人体起什么作用| 不经历风雨怎能见彩虹是什么意思| 点痣去医院挂什么科| 常熟有什么好玩的地方| 红豆与赤小豆有什么区别| 客车是什么车| 有没有什么| 阿托品是什么药| 什么叫电解质| 交警中队长是什么级别| 偏左偏右是什么意思| 晒背什么时候最佳时间| wing什么意思| 遥远的什么| 总爱睡觉是什么原因| 手术后吃什么鱼伤口愈合快| 偶尔失眠是什么原因| 肝有问题会出现什么症状| 乌龟喜欢吃什么| 3月20号是什么星座| 长期喝山楂水有什么好处和坏处| 肚子特别疼是什么原因| 脚背浮肿是什么原因引起的| 参乌健脑胶囊适合什么人吃| 陆家嘴为什么叫陆家嘴| 以什么当什么| 纳是什么| 脾胃虚弱吃什么食物补| 帕金森是什么原因引起的| 做b超前需要注意什么| 感光是什么意思| 为什么会掉头发| 振幅是什么意思| 溜车是什么意思| 经期可以喝什么茶| 广州有什么山| 碳是什么| 胃酸过多是什么原因造成的| 大理寺卿是什么职位| 3朵玫瑰代表什么意思| 百度

默认
打赏 发表评论 1
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
携程技术分享:亿级流量的办公IM及开放平台技术实践
阅读(14554) | 评论(1 收藏1 淘帖1 1
微信扫一扫关注!

本文由携程技术Jim分享,原题“日访问过亿,办公IM及开放式平台在携程的实践”,即时通讯网进行了排版和内容优化。


1、引言


携程内部的办公IM项目最早在2016年立项,经历了初期简单办公场景下的纯IM服务,到支持简单办公组件的IM应用,又演变为一体化办公集成平台,进而演变为目前集成IM功能的开放式企业效率平台。

本文总结了携程办公IM这些年的发展历程及未来的演进方向,并着重从高可用、高性能和可扩展的角度,探讨开放式平台的技术实现及发展方向。

携程技术分享:亿级流量的办公IM及开放平台技术实践_cover-opti.png

2、关于作者


Jim:携程高级研发经理,关注Java & Go技术栈后端研发。目前致力于TripPal开放平台的高可用、开放化进程及核心衍生服务。

3、什么是IM


携程技术分享:亿级流量的办公IM及开放平台技术实践_1.jpg

IM(Instant Message)即时消息,是一种通过网络提供实时消息传输的在线沟通技术。

在移动互联网时代,IM的使用变得越来越广泛,通过各种技术手段使得用户之间的交流成本变的极低,沟通效率和用户体验有极大的提升。而且IM的出现极大地改变了目前互联网应用的形态,多数互联网应用只要做到了一定规模,一定会有自身IM的需求,而不是单纯地仅仅依托第三方(例如微信、云信等)。

PS:关于什么是IM,您也可详读专题文章《零基础IM开发入门(一):什么是IM系统?》。

4、 携程办公IM的发展历程


携程技术分享:亿级流量的办公IM及开放平台技术实践_2.png

早期携程使用微软的IM软件lync和自研的纯IM软件CtripTeam来支持企业内的沟通需求,这些软件在维护性、拓展性和可用性上都或多或少存在一些缺陷。同时随着互联网的发展,也逐渐不适合日益增长的办公需求和用户体验。

2017年左右,使用基于ejabberd+erlang的自研IM服务的Cchat项目应运而生,该项目的主要目标是在采用自研IM的基础上,实现IM与办公的结合。在完善IM服务的基础上,支持了一些常规的办公场景,如电话、假单、考勤、OA等,通常采用嵌入外部页面、跳转外部地址等方式提供服务。这个改造项目奠定了携程办公IM继续发展的基础。

随着项目的深入,最初的系统交互模式及服务管理模式逐渐不适用越来越复杂的办公场景及服务治理需求。于是在2019年上马了TripPal的改造项目,在结合公司国际化战略的基础上,倾力打造小程序平台,服务号等基础服务。在梳理、优化原有服务的同时,打造了诸多衍生服务。

2020年中开始,在继续推进企业内办公一站式平台的基础上,我们需要支持更多的外部场景,实际需求促使我们向开放式平台转型,这在服务整体架构、安全性、扩展性等方面都提出了新的要求及挑战。

5、携程TripPal开放平台总体架构


携程技术分享:亿级流量的办公IM及开放平台技术实践_3.png

5.1Gateway网关层


这一层是所有请求调用流量的入口,主要功能如下:

  • 1)服务路由;
  • 2)集中式限流、风控、日志监控等功能;
  • 3)调用IDS (Identity Service) 验证请求的合法性。

3)步中验证通过后,可以将用户ID、Token等基本信息,通过 HttpHeader 的方式向后端服务透传,后端服务可以直接使用UserID,也可以再次对Token进行认证

5.2IDS (Identity Service) 服务


IDS同时支持多种不同类型的访问令牌的鉴权,同时还负责令牌的颁发,以及RBAC+模块级别的接口控权。

另外,针对开放小程序,TripPal提供两种认证方式:

1)常规的Oauth第三方模式接入:
携程技术分享:亿级流量的办公IM及开放平台技术实践_4.png

2)另一种是基于Oauth+开放平台签名的第三方认证,对于接入方相对简单:
携程技术分享:亿级流量的办公IM及开放平台技术实践_5.png

5.3微服务层


这一层是整个系统的业务层,具体包含三种类型的微服务:

  • 1)TripPal开放平台内部系统微服务:只有在特定用户认证和权限验证通过之后,外部才能访问;
  • 2)开放平台对外提供的OpenAPI:采用Oauth+RBAC的方式控制权限;
  • 3)自研小程序后端服务:根据安全需要,所有使用Oauth+模块权限的第一方小程序服务端。

目前TripPal自身的核心微服务应用达到28个,提供全集团的多端(C端、B端)基础服务能力,服务全公司超过500个业务应用,在线C端用户均值超过2万,日访问量超过亿。

6、 TripPal的IM服务


携程技术分享:亿级流量的办公IM及开放平台技术实践_6.png

目前TripPal使用完全自研的基于Java实现的类ejabberd架构,底层采用的XMPP协议进行通讯。

Tips:

XMPP全称是ExtensibleMessageing and Presence Protocol,可扩展消息与存在协议。是目前网络上开源,最灵活,应用最广泛的一种即时消息通信协议。

1999年Jeremie Miller,首先提出了Jabber,一种为实现即时消息和存在的开放技术,后续基于这个协议,开发了一个开源的服务实现jabberd。后续,IETF国际标准组织介入,成立Extensible Messageing and Presence Protocol(XMPP)工作组,并开始标准化工作。

2000年,jabberd服务器1.0版本发布,那时Jabber协议的基本特点(基于XML的流,消息,存在,联系人列表等)都被固定下来。

2004年,IETF出版了RFC 3902和RFC3921,定义了XMPP的核心功能,成为推荐标准。

后续在2011年,IETF出版了RFC6120和RFC 6121,更新了XMPP的核心定义,替代了之前的RFC 3920和3921。

目前XMPP协议被XMPP Standards Foundation负责管理运作,集中于在IETF定义的基础XMPP规范之上,如何开发开放的协议扩展。


IM服务端做了大量的系统性的优化,从底层的数据库调优、底层通讯服务升级,到上层消息、群、群成员等核心功能的大幅改造。

底层通讯服务由之前的erlang完整迁移至java技术栈,服务可靠性、弹性伸缩、安全性和性能获得了提升。同时对上层偏业务的服务进行了改造,极大地提升了接口响应,服务稳定性也得到了提升,为整个产品的研发提供了重要支撑。

目前这套自研的IM 3.0服务在生产环境稳定运行,整体资源消耗比2.0时期有较大下降。

7、 TripPal办公衍生服务


7.1概述


在实际的企业办公场景下,尤其是大型企业复杂组织架构和管理模式的场景下,TripPal逐渐摸索出了自己的一套行之有效且契合携程场景的办公智能应用,如搜索中台,消息卡片,智能审批中台,角色服务,工作流引擎等。

本文简单介绍其中3个服务。

7.2智能审批中台


携程技术分享:亿级流量的办公IM及开放平台技术实践_7.png

智能审批中台在集成携程自有的审批系统的同时也集成了自研的智能审批配置服务,该服务支持用户自定义整个审批单及审批流的全部细节。

携程技术分享:亿级流量的办公IM及开放平台技术实践_8.png

携程技术分享:亿级流量的办公IM及开放平台技术实践_9.png

7.3角色服务


携程技术分享:亿级流量的办公IM及开放平台技术实践_10.png

角色服务在灵活定义角色范围及基础角色的基础上,支持用户灵活调整,动态管理,且自动接入审批中台,同时打通应用对接渠道。

整个角色服务在产品定义上分为如下表4个主要概念:
携程技术分享:亿级流量的办公IM及开放平台技术实践_11.png

7.4在线文档


携程技术分享:亿级流量的办公IM及开放平台技术实践_12.png

在线文档服务主要提供文档的在线协作能力,支持用户同时/实时的查看、编辑、保存和分享的能力。同时结合IM实现通知和反馈等功能。

技术实现上,在线文档是采用CRDT算法实现的无冲突merge(LastWrite Wins)、多端最终一致的分布式方案,同时兼具高可用、可容错的特性,在服务器发生故障时,允许Shift至另一台机器上继续执行,即使服务端完全宕机,客户端依然能够离线工作。

8、 TripPal高可用的实践


携程技术分享:亿级流量的办公IM及开放平台技术实践_13.png

目前TripPal部署在3个机房,分为公有云1个机房及私有云2个机房。

总体架构在应用多机房部署、数据层跨机房DRC的基础上,采用就近访问的原则进行服务访问,其中一旦发生任意2个机房全挂的情况,都能保证系统内的核心应用仍能提供服务。

其中公有云机房的一期部署方案已经完成,二期部署方案和测试计划预计于7月完成,届时可以和大家分享一下混合云方案的一些细节和历程。

9、 开放平台的未来架构及演进方向


9.1概述


开放平台主要面向两类群体,开发者和用户。

所以主要有两个方向:

1)一是便捷开发,主要围绕降低开发者门槛、较低研发成本,打通不同开发者、应用之间的壁垒,实现生态共享。

2)另一方面,针对实际用户,在提高用户体验、数据安全的同时,实现用户服务能力整合和主动发现。

9.2开发者


在这方面,目前主流开放平台已经对开发者提供了强大的支持。

主要形式分为以下3种。

1)前端信任:

前端信任的目的是通过减少或杜绝开发者后端跟开放平台OpenAPI交互的方式,来降低开发者接入门槛,减少工作量。主要的做法是通过权限控制、签名、加密等手段使得小程序能够在前端拿到可信数据。

携程技术分享:亿级流量的办公IM及开放平台技术实践_14.jpg

2)低代码(Low-Code):

由于大量的互联网业务属于简单交互或模型化交互,以此为出发点,基于构建合理模型、简单业务函数等形式,可以允许开发者通过拖拽组件、简单伪业务代码等形式提供编程入口,可以大幅度降低开发者的研发门槛和成本,打破用户和开发者界线,提高开放平台整体生态的活力。

携程技术分享:亿级流量的办公IM及开放平台技术实践_15.jpg

3)ServerLess:

基于云原生的ServerLess结合低代码,开放开发者的云端编程入口,同时提供云端基础组件,允许开发者无需部署实际的后端应用服务,极大降低的开发者的运营维护门槛。

9.3用户层面


目前业界主流开放平台在对用户本身的服务能力整合和挖掘上,投入的都比较少,也没有比较成熟的实践,我们认为在这方面可以围绕两个点展开。

一方面:第三方应用治理模式向商城化的转型。常规开放平台的应用治理和推广,基本是应用方独立管理和推广,但是随着应用数量的大幅度增加,以及应用方单方面推广难度较大等原因,亟需开放平台从生态整体角度进行支持和治理。这样可以在安全性、可维护性、便捷性等维度上对应用进行正向反馈,实现开放平台应用生态的可持续性和能力共享。同时,在特定场景下,结合用户分析、大数据及AI,提高用户主动或被动的应用发现能力。

携程技术分享:亿级流量的办公IM及开放平台技术实践_16.jpg

另一方面:构建符合应用间开放协议的软件联盟,打破应用壁垒,围绕服务集成、开放应用的核心原则,使得不同的互联网业务或行为在一定程度上实现数据/能力共享。一般情况下,一个复杂互联网业务通常由多个异构子业务/子应用构成,这样,通过应用拆分、开放共享等形式,在一定程度上使复杂的互联网业务更加精细化、轻量化、可扩展。

9.4开放平台标准化、互通


目前国内外各大互联网公司、机构和组织都搭建了多种开放平台,用于提供各种各样的信息服务,在可以预见的未来,各个平台之间会有一个整合、标准化、互通的可能性。

那么构建标准开放协议,使得开放平台向底层沉淀的过程则至关重要。

10、 本文小结


通过实现基本IM开放平台架构,以及各种衍生服务,我们总结出了IM开放平台的一些核心能力。

主要是:

  • 1)服务集成:根据不同的业务场景集成并提供相应场景下的基础服务能力;
  • 2)开放应用:提供第三方接入能力;
  • 3)高性能、高可用。

11、参考资料


[1] 零基础IM开发入门(一):什么是IM系统?
[2] 从零到卓越:京东客服即时通讯系统的技术架构演进历程
[3] 瓜子IM智能客服系统的数据架构设计(整理自现场演讲,有配套PPT)
[4] 从游击队到正规军(一):马蜂窝旅游网的IM系统架构演进之路
[5] 一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践
[6] 浅谈IM系统的架构设计
[7] 简述移动端IM开发的那些坑:架构设计、通信协议和客户端
[8] 一套海量在线用户的移动端IM架构设计实践分享(含详细图文)
[9] 一套原创分布式即时通讯(IM)系统理论架构方案
[10] 一套亿级用户的IM架构技术干货(上篇):整体架构、服务拆分等
[11] 从新手到专家:如何设计一套亿级消息量的分布式IM系统
[12] 企业微信的IM架构设计揭秘:消息模型、万人群、已读回执、消息撤回等
[13] 阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路
[14] 基于实践:一套百万消息量小规模IM系统技术要点总结
[15] 跟着源码学IM(十):基于Netty,搭建高性能IM集群(含技术思路+源码)
[16] 一套十万级TPS的IM综合消息系统的架构实践与思考
[17] 直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
[18] 融云技术分享:全面揭秘亿级IM消息的可靠投递机制
[19] 得物从0到1自研客服IM系统的技术实践之路
[20] 一套分布式IM即时通讯系统的技术选型和架构设计
[21] 微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:IM跨平台技术学习(十三):从理论到实践,详细对比Electron和Tauri的优劣下一篇:百度公共IM系统的Andriod端IM SDK组件架构设计与技术实现

本帖已收录至以下技术专辑

推荐方案
评论 1
支持
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部
约炮是什么意思 尿毒症是什么 宝是什么意思 螨虫用什么药可以杀死它 郑板桥爱画什么
青岛有什么好吃的 咖啡有什么好处 肠子有问题有什么症状 做什么运动可以长高 梦见洗手是什么意思
缺维生素会有什么症状 感冒是挂什么科 吃什么好 月经血是黑色的是什么原因 芳心暗许什么意思
房客是什么意思 腺苷脱氨酶高什么意思 肌酐高吃什么食物 无限极是干什么的 胃火喝什么茶降火
堂客是什么意思hcv8jop7ns3r.cn 阿尔茨海默病吃什么药hcv8jop4ns4r.cn 波尔多红是什么颜色xianpinbao.com 男性hpv挂什么科hcv9jop3ns6r.cn 嗝气是什么原因hcv9jop6ns6r.cn
肝掌是什么原因引起的hcv9jop2ns0r.cn 贷款是什么意思bjcbxg.com kpa是什么单位hcv8jop1ns4r.cn 永无止境是什么意思hcv9jop1ns0r.cn 鬼画符是什么意思hcv9jop5ns8r.cn
instagram是什么意思hcv7jop4ns5r.cn 面部抽搐是什么原因hcv8jop5ns9r.cn 97年什么生肖xinmaowt.com 戌是什么意思hcv9jop3ns5r.cn 三十而立四十不惑什么意思hcv9jop1ns6r.cn
范思哲香水是什么档次hcv8jop3ns9r.cn 姨太太是什么意思hcv7jop9ns2r.cn 避孕药吃了有什么副作用hcv8jop8ns9r.cn 组织细胞是什么hcv8jop9ns9r.cn 回南天什么意思hcv8jop2ns6r.cn
百度