微信的后端大部分是用 c++写的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
KellyAlsa
V2EX    程序员

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

  •  
  •   KellyAlsa 222 天前 9117 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。
    48 条回复    2025-03-06 10:41:52 +08:00
    vagusss
        1
    vagusss  
       222 天前
    腾讯不就是大部分 c++么, 当然现在 go 也不少
    cheng6563
        2
    cheng6563  
       222 天前
    微信(也可能是企业微信)一个文件上传的 HTTP 接口,还重新定义了 multipart/form-data 呢,一看就是全手写解析的。
    iorilu
        3
    iorilu  
       222 天前
    大厂追求极致性能的, 不在乎成本, 复杂度

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

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

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

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

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

    不用 cpp 还有什么能够担起重任的?
    fatigue
        44
    fatigue  
       222 天前   1
    即时通讯服务器,游戏服务器这类长链接应用,要求的就是即时,响应快,不可能让你发个消息转几秒才刷出来,c/c++依然是最稳妥的选择之一,出了问题也有后路,一切可控
    runliuv
        45
    runliuv  
       222 天前
    @sagaxu 怪不得微信电子小票接口的表单提交,要写特殊格式。 多一个空格都不行。
    SmallBlueZhao
        46
    SmallBlueZhao  
       222 天前
    @iorilu 大厂并不存在为了极致性能而不在乎成本,只是你的性能问题影响他赚钱了,所以他不得不优化了,只有赚的钱 > 优化的成本,才会考虑这些,不然你以为微信客户端被骂了这么多年,为啥张小龙不优化呢?都是资本家,名义上的用户体验只是为了吸引你来,你来了他才有流量去卖广告挣钱
    GSNote
        47
    GSNote  
       221 天前
    想起 qq 最近无法在群聊记录中搜数字了,表现为无响应,且直接阻塞了中文搜索,也即打开 qq 直接搜中文是有效的。手机,k70 至尊+澎湃 2+安卓 15 ,qq 版本>=9.1.35 。问了别人一加手机,没问题。qq 和小米没配合好啊。
    kenysai
        48
    kenysai  
       221 天前
    @Kumo31 看着是挺正儿八经的干法,总比一天天喊着重构换绩效来的务实
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2998 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:35 PVG 21:35 LAX 06:35 JFK 09:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86