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

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

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

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

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

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

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

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

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