• 请不要在回答技术问题时复制粘贴 AI 生成的内容
KellyAlsa
V2EX  ›  程序员

微信的后端大部分是用 c++写的

  •  
  •   KellyAlsa · Mar 5, 2025 · 10747 views
    This topic created in 608 days ago, the information mentioned may be changed or developed.
    48 replies  •  2025-03-06 10:41:52 +08:00
    vagusss
    vagusss
    Mar 5, 2025
    1
    腾讯不就是大部分 c++么, 当然现在 go 也不少
    cheng6563
    cheng6563
    Mar 5, 2025
    2
    微信(也可能是企业微信)一个文件上传的 HTTP 接口,还重新定义了 multipart/form-data 呢,一看就是全手写解析的。
    iorilu
    iorilu
    Mar 5, 2025
    3
    大厂追求极致性能的, 不在乎成本, 复杂度

    那怕提高 0.001 秒也行
    OBJECTION
    OBJECTION
    Mar 5, 2025
    4
    C++咋了? 没那么 out 吧。。。
    LeoWA
    LeoWA
    Mar 5, 2025
    5
    我记得早些年的盛大也是,金山系的也是。
    Java 在国内能有今天这江湖地位,还是阿里带来的,之前都是外包居多。
    最早的时候,学长学姐去十八摸之类的外企,都是 C/C++。
    lujiaxing
    lujiaxing
    Mar 5, 2025❤️9
    6
    一直都是.
    腾讯不管是 QQ 还是微信, 底层都是 C++, 不光后端, PC 端也是.
    而且就算是改版后的 QQ 客户端, 其底层其实也都是 C++ 做的. Electron 只是最外面的那一层 Presentation. 早期的 QQNT 跟微信 Electron 版甚至有办法打开 DevTools, 然后就可以看到 Network 里没有任何的 XHR 请求. 所有的通信, 加密等等都是底层的 C++ 实现的. 要不为啥 QQ 能做到 "不管群聊刷的多快人多多, 内存始终在 200M 左右" 呢..
    同样使用 Electron 开发的 QQ alternative -- Icalingua, 如果群聊刷的快点儿, 图发的多点, 哪怕你不看群, 它都会默默的把内存全都吃完. 吃到最后界面打开都卡的一批. 这就是差距
    xFrye
    xFrye
    Mar 5, 2025
    7
    热知识了吧,老传统了腾讯后台很多 c++的
    Crimson47
    Crimson47
    Mar 5, 2025
    8
    @iorilu 有没有可能, 完全就是历史遗留的原因.. 比如说当时要做微信, 干脆支持从 qq 拉个分支过来改改
    LeoWA
    LeoWA
    Mar 5, 2025
    9
    @Edcwsyh #8

    微信的第一个版本,是从 foxmail 切过来的。张小龙自己就是 C++高手
    mightybruce
    mightybruce
    Mar 5, 2025
    10
    这有什么奇怪,通用的业务逻辑 各种语言都能写后端, 像腾讯、百度的自研 rpc 微服务框架在没有 k8s 之前都是 c++,
    https://github.com/Tencent/trpc
    https://github.com/Tencent/phxrpc
    https://github.com/apache/brpc

    谷歌的后端 和微服务也是以 c++ 为主。
    emSaVya
    emSaVya
    Mar 5, 2025
    11
    modern cpp 写起来轻松又愉快。
    volatileSpark
    volatileSpark
    Mar 5, 2025❤️2
    12
    不是很正常么,公司上新项目,除非有明确的要求使用其他语言栈。基本都是从上线的产品里切出一个分支删除其他的作为脚手架开始。
    reoah2
    reoah2
    Mar 5, 2025❤️1
    13
    腾讯面试过就知道了,对 C++考察的很细
    Kumo31
    Kumo31
    Mar 5, 2025
    14
    早期腾讯很多服务都是 C++和 PHP ,后面非性能敏感的都都是 Go 了。之前待过的组,历史遗留服务用 C++,PHP ,Node ,Go 写的都有,大杂烩
    SmallBlueZhao
    SmallBlueZhao
    Mar 5, 2025❤️13
    15
    @iorilu 一看就是没在大厂干过的,还对大厂有幻想,哈哈哈
    linhongjun
    linhongjun
    Mar 5, 2025
    16
    微信 4 不是改了么?
    zenghx
    zenghx
    Mar 5, 2025
    17
    @linhongjun qt 也是 cpp 啊
    ChatGOP
    ChatGOP
    Mar 5, 2025
    18
    即时通讯软件几乎 100%是 C++, 而且 QQ ,微信的祖师爷是 OICQ ,也是 C++写的
    guanhui07
    guanhui07
    Mar 5, 2025
    19
    腾讯 确实很多 cpp 现在也很多 golang 了
    julyclyde
    julyclyde
    Mar 5, 2025
    20
    @Edcwsyh 完全没可能
    微信腾讯和 qq 腾讯根本不是同一个腾讯
    zengguibo
    zengguibo
    Mar 5, 2025
    21
    网页的接口也是 c++写的,那个才要命,core dump 是一个痛苦的事情
    yiton
    yiton
    Mar 5, 2025❤️7
    22
    @Mrun 是 c++高手不假,可惜每亩
    iorilu
    iorilu
    Mar 5, 2025
    23
    @SmallBlueZhao 当然看啥项目啊, 微信这种, 肯定要追求极致性能, 世界上能有几个系统能支持十亿人在线的
    DeWjjj
    DeWjjj
    PRO
    Mar 5, 2025❤️1
    24
    你看看 drogon c++后端框架,速度飞天了。
    clino
    clino
    Mar 5, 2025
    25
    性能好,但是容易崩溃,不过没关系,定期重启就行
    xiuming
    xiuming
    Mar 5, 2025
    26
    2011 年上市的应用怎么可能敢用 go ,2011 估计国内知道的人都没几个。
    xiuming
    xiuming
    Mar 5, 2025
    27
    @xiuming 2011 年上市 2010 就要开始开发了 2009 年的 11 月 Go 语言才正式对外正式发布
    sagaxu
    sagaxu
    Mar 5, 2025
    28
    腾讯系向来喜欢手写,早几年广点通的 JSON 还是手拼的,最后一项后面多个逗号
    canvascat
    canvascat
    Mar 5, 2025
    29
    @lujiaxing 网页版的 telegram 都是用的浏览器提供的网络通信,一样不卡。这就是差距

    > 同样使用 Electron 开发的 QQ alternative -- Icalingua, 如果群聊刷的快点儿, 图发的多点, 哪怕你不看群, 它都会默默的把内存全都吃完. 吃到最后界面打开都卡的一批. 这就是差距
    chtcrack
    chtcrack
    Mar 5, 2025
    30
    正常,微信用户量多大啊,c++偏底层性能肯定更好啊,还能节省很多服务器的硬件配置.
    815979670
    815979670
    Mar 5, 2025
    31
    这不是热知识吗,腾讯系是 c++ 阿里系是 java 字节系是 go
    LitterGopher
    LitterGopher
    Mar 5, 2025
    32
    Linux 內核還絕大部分都是 C 語言呢.
    archxm
    archxm
    Mar 5, 2025
    33
    @OBJECTION 应该用 rust 才正确。🙏
    否则等着挨喷
    flllllly
    flllllly
    Mar 5, 2025
    34
    不是很久以前就流行一个说法“腾讯的 c++,阿里的 java ,字节 python”
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Mar 5, 2025
    35
    源于腾讯的技术沉淀,早年 qq 也是 c++写的啊
    sir283
    sir283
    Mar 5, 2025 via Android
    36
    腾讯这种体量的企业,用 c++做后端,有问题吗?不会以为腾讯就只有微信跟 QQ 这俩吧?人家好歹也是做游戏代理商起家的,旗下一堆代理游戏的服务端,全都是由腾讯自己维护的,只是开发权不在自己手上而已。看看同样都是游戏代理商的网易,又是用什么做后端,这俩都不是一个水平的。
    xz410236056
    xz410236056
    Mar 5, 2025
    37
    @iorilu #3 你对大厂有光环效应,实际情况是第一代人用了 cpp ,后面求稳不让改
    nevermoreluo
    nevermoreluo
    Mar 5, 2025
    38
    看了一圈,帖子的连接看完就没有人吐槽 c++的 web framework 不如其他语言的好用吗。。。

    讲个笑话,见过古董项目野路子,直接用公司祖传 tcp 库,拿到数据后一把正则其他的什么 http 协议统统都扔掉,response 就按文档里面给的报文例子写死然后替换两个变量.....就问你能不能用吧
    cooltechbs
    cooltechbs
    Mar 5, 2025
    39
    腾讯也来 RIIR 吧!(
    prosgtsr
    prosgtsr
    Mar 5, 2025
    40
    腾讯不就是 c++吗
    son012
    son012
    Mar 5, 2025
    41
    @nevermoreluo 那是人的问题,不是技术的问题,想要好的性能确实 c++更好一点
    deplives
    deplives
    Mar 5, 2025
    42
    @iorilu #23 你觉得支持十亿人在线的系统难点是来自于客户端?
    flyqie
    flyqie
    Mar 5, 2025 via Android
    43
    很奇怪吗,腾讯的许多业务不用 cpp 还能用什么?

    不用 cpp 还有什么能够担起重任的?
    fatigue
    fatigue
    Mar 5, 2025❤️1
    44
    即时通讯服务器,游戏服务器这类长链接应用,要求的就是即时,响应快,不可能让你发个消息转几秒才刷出来,c/c++依然是最稳妥的选择之一,出了问题也有后路,一切可控
    runliuv
    runliuv
    Mar 5, 2025
    45
    @sagaxu 怪不得微信电子小票接口的表单提交,要写特殊格式。 多一个空格都不行。
    SmallBlueZhao
    SmallBlueZhao
    Mar 5, 2025
    46
    @iorilu 大厂并不存在为了极致性能而不在乎成本,只是你的性能问题影响他赚钱了,所以他不得不优化了,只有赚的钱 > 优化的成本,才会考虑这些,不然你以为微信客户端被骂了这么多年,为啥张小龙不优化呢?都是资本家,名义上的用户体验只是为了吸引你来,你来了他才有流量去卖广告挣钱
    GSNote
    GSNote
    Mar 5, 2025
    47
    想起 qq 最近无法在群聊记录中搜数字了,表现为无响应,且直接阻塞了中文搜索,也即打开 qq 直接搜中文是有效的。手机,k70 至尊+澎湃 2+安卓 15 ,qq 版本>=9.1.35 。问了别人一加手机,没问题。qq 和小米没配合好啊。
    kenysai
    kenysai
    Mar 6, 2025
    48
    @Kumo31 看着是挺正儿八经的干法,总比一天天喊着重构换绩效来的务实
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4876 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 102ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
    ♥ Do have faith in what you're doing.