干货 | 日访问过亿,办公IM及开放式平台在携程的实践

信息论实战指南:给忙碌从业者的认知压缩与降噪工具 信息论不仅是通信工程的数学基础,更是现代知识工作者应对信息过载的核心思维操作系统。它通过‘熵’量化信息价值,用‘信道容量’解释认知带宽限制,借‘冗余设计’实现跨角色精准传达。在产品经理写周报、程序员写注释、市场人写文案等真实场景中,信息论提供可立即落地的判断标尺——比如用‘惊讶度’替代抽象公式来识别高价值信息,按接收者身份动态配置30%或60%冗余以保障解码成功率。这种从原理到动作的转化,让信息论摆脱数学神殿,成为每个赶时间的人随身携带的‘信息秤’与‘认知滤网’。 阅读详情

作者简介

 

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

简介

携程内部的办公IM项目最早在2016年立项,经历了初期简单办公场景下的纯IM服务,到支持简单办公组件的IM应用,又演变为一体化办公集成平台,进而演变为目前集成IM功能的开放式企业效率平台。本文总结了这些年的发展历程及未来的演进方向,并着重从高可用、高性能和可扩展的角度,探讨开放式平台的技术实现及发展方向。

 

一、什么是IM

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

 

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

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

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

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

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

 

三、携程TripPal开放平台实践

3.1 总体架构

3.1.1 Gateway网关层

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

  • 服务路由;

  • 集中式限流、风控、日志监控等功能;

  • 调用IDS (Identity Service) 验证请求的合法性,验证通过后,可以将用户ID、Token等基本信息,通过 HttpHeader 的方式向后端服务透传,后端服务可以直接使用UserID,也可以再次对Token进行认证;

3.1.2 IDS (Identity Service) 服务

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

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

1)常规的Oauth第三方模式接入。

2)另一种是基于Oauth+开放平台签名的第三方认证,对于接入方相对简单。

 

3.1.3 微服务层

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

  • TripPal开放平台内部系统微服务,只有在特定用户认证和权限验证通过之后,外部才能访问;

  • 开放平台对外提供的OpenAPI;采用Oauth+RBAC的方式控制权限;

  • 自研小程序后端服务,根据安全需要,所有使用Oauth+模块权限的第一方小程序服务端;

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

 

3.2 IM服务

目前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技术栈,服务可靠性、弹性伸缩、安全性和性能获得了提升;同时对上层偏业务的服务进行了改造,极大地提升了接口响应,服务稳定性也得到了提升,为整个产品的研发提供了重要支撑。目前这套自研的IM3.0服务在生产环境稳定运行,整体资源消耗比2.0时期有较大下降。

 

3.3 TripPal办公衍生服务

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

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

1)智能审批中台

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

2)角色服务

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

整个角色服务在产品定义上分为如下表4个主要概念:

系统概念

介绍

管理模式

角色范围(Scope)

圈定基础角色的作用范围,如:平台研发中心

基于父子关系的层级管理

基础角色(Base Role)

由管理员管理并定义的基础角色,如:管理员、负责人、PMO等

平台或企业管理员手动管理

固定角色(Role)

由[角色范围+基础角色]构成的对象,如:平台研发中心管理员

由角色创建者进行管理

抽象Role

无角色范围,仅基于基础角色创建的角色,指定某些Scope上应该自动创建该角色的基础角色

由角色创建者进行管理

3)在线文档

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

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

 

四、TripPal高可用的实践

目前TripPal部署在3个机房,分为公有云1个机房及私有云2个机房。总体架构在应用多机房部署、数据层跨机房DRC的基础上,采用就近访问的原则进行服务访问,其中一旦发生任意2个机房全挂的情况,都能保证系统内的核心应用仍能提供服务。其中公有云机房的一期部署方案已经完成,二期部署方案和测试计划预计于7月完成,届时可以和大家分享一下混合云方案的一些细节和历程。

 

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

开放平台主要面向两类群体,开发者和用户。所以主要有两个方向,一是便捷开发,主要围绕降低开发者门槛、较低研发成本,打通不同开发者、应用之间的壁垒,实现生态共享。另一方面,针对实际用户,在提高用户体验、数据安全的同时,实现用户服务能力整合和主动发现。

5.1 开发者

在这方面,目前主流开放平台已经对开发者提供了强大的支持,主要形式分为:

1)前端信任

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

2)低代码(Low-Code)

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

3)ServerLess

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

5.2 用户层面

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

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

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

5.3 开放平台标准化、互通

目前国内外各大互联网公司、机构和组织都搭建了多种开放平台,用于提供各种各样的信息服务,在可以预见的未来,各个平台之间会有一个整合、标准化、互通的可能性。那么构建标准开放协议,使得开放平台向底层沉淀的过程则至关重要。

六、总结

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

  • 服务集成,根据不同的业务场景集成并提供相应场景下的基础服务能力

  • 开放应用,提供第三方接入能力

  • 高性能,高可用

【参考文献】

[1] Facebook messager技术文档:Scalingthe Messages Application Back End‘’

[2] Facebook messager技术文档:BuildingMobile-First Infrastructure for Messenger

[3] 浅谈IM系统的架构设计

[4] 一套原创分布式即时通讯(IM)系统理论架构方案

[5] 微信技术总监谈架构:微信之道——大道至简(演讲全文)

【推荐阅读】

 “携程技术”公众号

  分享,交流,成长

【管理科学】第六十三篇 企业管理者招聘与人才博弈战略02 编号类型领域问题问题的数学分析(含逐步推理与数值范围)方法/手段/步骤/流程/话术/策略/行为/时序的所有内容和步骤(含数学表达式与数值分析)时序数学表达式及周期行动的数学表达式(含数值范围)关联知识和法律法规651组织博弈成本控制如何在保证质量的前提下有效控制成本?逐步推理: 1. 成本控制模型:成本每降低10%,利润可提升15%~25%。但过度降本可能影响质量和员工士气。 2. 控制效果:有效的成本控制可使利润率提升5%~10%。 3. 法律风险:需遵守劳动法和产品质量法。步骤与数学表 阅读详情

相关推荐

腾讯云IM开放-WebSDK-微信小程序SDK

即时聊天工具IM需要用到的SDK 内含微信小程序demo和web通用demo

干货 | 日均报错量降低95%,携程小程序生态之自动化错误预警方案

作者简介携程前端框架团队,为携程集团各业务线在PC、H5、小程序等各阶段提供优秀的Web解决方案。产品涉及各类前端/Node端应用框架、研发工作台、前端中台化、静态资源发布系统等。当前主要专注方向包括:新一代研发模式探索,Rust构建工具链路升级、Serverless应用框架开发、在线文档系统开发、低代码平台搭建、适老化与无障碍探索等。摘要携程小程序自动化错误预警方案是一套完整且通用的小程序前端错...

携程技术 2763

携程技术合集 2018.pdf

携程技术合集 2018.pdf

如何设计一个IM单聊架构

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

芋艿V 595

携程技术合集 2019.pdf

携程技术合集 2019.pdf

微信聊天记录解密,必须是root的手机

手机上安装x-plore软件,将/data/data目录的相关EnMicroMsg.db auth_info_key_prefs.xml拷贝到/storge/emulated/0目录后才可以拷贝到电脑。路径:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml。但是是加密过的 需要解密 解密密码生成规则是手机IMEI+微信UIN md5(32位小写)后的前7位。安卓手机要root测试版本微信要7或者8版本都可以。选择message表。

venus60的专栏 1005

Java探针技术详解

Java探针技术详解

S1124654的博客 5081

深入解析数据通信中的码元速率与比特率:从基础到实战应用

本文深入解析了数据通信中的核心概念码元速率与比特率,通过生动的比喻和公式(比特率=波特率×log₂(M))揭示其本质关系。文章结合BPSK、QPSK、16QAM等调制技术,剖析了从4G/5G到LoRa等实战场景中如何权衡速率、距离与可靠性,并提供了软考真题解析与系统设计建议,帮助读者从理论到应用全面掌握数据速率优化。

weixin_29324877的博客 213

UED专栏 | 带你认识携程插画系统1.0

本文作者为携程平台UED团队,同时感谢机票、度假、酒店UED团队协同搭建插画系统。对于每一个设计师来说,插画总是让人喜爱又烦恼。喜爱是因为插画具有特殊的表现力、丰富的图形语言、鲜明的个性...

携程技术 2013

树莓派国内镜像源一键配置指南

本文提供树莓派国内镜像源一键配置指南,解决默认国外源访问缓慢问题。通过自动检测系统版本并支持清华、阿里云、中科大等主流镜像站选择,大幅提升软件更新与安装速度。包含详细的手动配置方法和常见问题排查,帮助用户快速完成树莓派换源优化。

tequila的博客 1376

vscode远程开发-调试模式下attach远程进程提示管理员权限失败的问题

vscode 远程开发 附加进程

comhaqs的专栏 2878

什么是即时通讯(IM)?

  什么是即时通讯?IM是英文Instant Messaging的缩写,中文翻译成“即时通讯”,根据美国著名的互联网术语在线词典NetLingo的解释,其定义如下:“Instant Messaging(读成I-M)缩写为IM或IMing,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,被很多人称为电子邮件发明以来最酷的在线通讯方式,典型的 IM是这样工作的:当好友列表(buddy l

TonyWang的专栏 4708

使用PlotNeuralNet绘制深度学习网络图的基本操作

使用PlotNeuralNet绘制深度学习网络图的基本操作

weixin_46877907的博客 2110

什么是企业级即时通讯IM?企业即时通讯IM吱吱有什么作用?

企业即时通讯IM是专为组织机构设计的数字化沟通工具,其核心是通过实时消息传递、富媒体交互以及多功能集成,解决企业内部和外部协作的效率和安全需求。它与传统即时通讯不同,企业即时通讯深度绑定企业的人事架构,如部门树、职级体系,它以“组织化”为底层逻辑,便于企业管理。从功能模块看,它不仅支持基础的即时聊天,还能完成企业云盘、协作共享、OA系统深度融合,为企业提供运营、管理一站式服务。

zhizhitechnology的博客 1479

一套C#接口通吃安川/发那科/库卡:工业机器人统一控制框架设计与产线踩坑实录

我们把机器人的通用能力抽象为接口,涵盖连接、运动、IO、寄存器、状态、报警六大类能力,所有品牌适配器都必须实现这个接口。/// 工业机器人统一控制接口// 基础连接// 运动控制// IO与寄存器// 状态与报警// 事件工业机器人统一控制框架的本质,不是把所有品牌的功能都做平,而是找到通用能力的最大公约数,通过分层抽象把品牌差异隔离在底层。上层业务只关注工艺和流程,不需要关心机器人是什么品牌、用什么SDK、通信协议是什么。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 403

【LLC快速上手系列】LLC轻载时,死区时间怎么调才对?别再傻傻乱搞了!

死区时间,就是指。如果你死区设得好,就能让开通前 ( V_DS to 0 ),完美实现!

weixin_43199439的博客 1856

Kimi智能助手实操指南:零代码高效办公学习创作

Kimi智能助手是面向普通用户的中文AI协作者,依托长文本理解、多轮上下文记忆、中文语义深度适配和零代码交互四大能力,将传统‘读写理改创’任务转化为自然语言驱动的智能协作。其核心价值不在于替代专业判断,而在于压缩信息处理链路、强化人类决策带宽——通过角色化指令、分段喂养、动词约束与反向验证等方法,让市场方案提炼、合同风险扫描、论文精读归因、短视频脚本生成等高频场景实现分钟级交付。尤其适合非技术人员在办公、学习与内容创作中快速构建可落地的AI增强工作流。

weixin_30859423的博客 465

基于Mask-RCNN网络的书架图书书脊分割和检测(含代码)

图书馆的书架上的图书书脊分割/检测对于图书书名等信息的识别具有重要意义,因此,该博客基于Mask-RCNN网络实现了图书书脊的分割和检测,有利于进一步利用ocr文字识别技术实现图书书名等信息的入库。如下图所示,为书架原始数据和分割/检测后的结果。(本文已训练模型,无需训练)

qq_44619530的博客 2025

2026内部培训小程序制作软件哪个好,这些要点要注意啦!

2026年初换用带五端同源与AI题库的SaaS重做,排课、课时、错题本自动归档,微信里直接考,HR工时砍掉六成。内部培训小程序不是“能播课就行”,而是要把学、练、考、档、评缝进微信生态里。AI判分覆盖开放式文本、音频、视频作答;Windows/Mac本地运行的创作工具,14种题型(拖拽、热区、音视频应答、公式题),分支逻辑按答对答错跳不同页,部分正确得分、答错扣分规则精细;培训场景里覆盖图文/音频/视频/专栏,试看引流、课程购买、优惠券、拼团、分销齐全,支持50语AI翻译与全球CDN,银行级传输加密。

2601_95887114的博客 69

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Unity3D协程介绍 以及 使用

作者ChevyRay ,2013年9月28日,snaker7译  原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,几乎在所有的项目中,我都会使用它来控制运动,序列,以及对象的行为。在这个教程中,我将会说明协程是如何工作的,并且会附上一些例子来介绍

huang9012的专栏 15万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

干货 | 携程异地多活-MySQL实时双向(多向)复制实践

作者简介Roy,携程软件技术专家,负责MySQL双向同步DRC和数据库访问中间件DAL的开发演进,对分布式系统高可用设计、数据一致性领域感兴趣。一、前言携程内部MySQL部署采用多机房...

携程技术 1764

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

探索携程DRC:高效、智能的分布式拒绝服务防护系统

探索携程DRC:高效、智能的分布式拒绝服务防护系统 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是携程公司开源的一款强大且灵活的分布式拒绝服务(DDoS)防护系统。该项目旨在帮助各类在线业务抵御大规模的DDoS攻击,保护网络基础设施的正常运行,为用户提供稳定的服务。 技术解析 DRC的核心特点是其分布式架构和智能化的流量检测与清洗能力。它由以下几个关键组件构成: ...

gitblog_00048的博客 411

携程的崛起与挑战:发展历程与未来展望

携程,作为中国领先的在线旅游服务平台,经历了多年的发展,不仅在业务规模上不断壮大,还在技术创新和市场竞争中取得了一系列成就。本文将详细介绍携程的发展历程,分析公司所面临的问题、重大公关危机、主要罚款项,深入了解其业务内容、目前的研究方向和采用的技术,探讨可能应用的实际场景和未来的发展,同时提供相关链接以便进一步了解携程。

BetrayFree的博客 3494
上一篇: 干货 | 减少50%空间,携程机票React Native Bundle 分析与优化
下一篇: 干货 | 携程火车票Flutter最佳实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值