今天学习了腾迅的ppt分享《1.4亿在线背后的故事》,tecent技术果然是很NB的,对ppt进行了精简总结,以备不时之需。
10万-百万的演变
在线状态的获取
1.定期拉取
2.实时通知
实时通知的3种方式,各有什么优缺点?
直接发包:最简单,但是不能应对某些NAT,也不能应对TCP接入。
伪装IP发包:编程难度大,可以应对NAT,但是不能应对TCP接入,有时还会被IDC自己的网络设备拦住。
通过真正的接入服务器发包:可以应对所有情况,但是成本高。
所以实际演变的顺序就是上面的顺序
QQ后台如何实现高性能
绝不使用企业级解决方案
逻辑层多进程
万有一失的无锁设计
用户态IPC
MySQL分库分表
好友表自写文件存储
绝不使用企业级解决方案:Google牛人的话。
万有一失的无锁设计:通过业务流程的巧妙设计来避免使用锁。举例:设置隐身可见(状态进程)与加好友(好友进程)的冲突没关系;但是LocalOnlineRecord中对好友表位置指针的修改只有登录进程能做。
用户态IPC:使用共享内存设计出用户态的FIFO
QQ后台如何实现7X24小时连续服务
大系统小做
平滑重构
在高速行驶的列车上更换发动机
核心数据放入共享内存
接入层与逻辑层分离
命令分发动态配置化
百万-千万的演变
发生现象:
手机从不敢离身
发布新代码提心吊胆
时不时要扩容,又烦又怕
时不时要紧急恢复服务
时不时被用户骂、被老板K
到底怎么了?
原因:
1.后台机器越来越多,单机死机/故障经常出现,IDC故障也不少,影响服务,也影响人员生活
a) 传统行业设备少单价高,故障很少出现
b) 互联网行业设备多单价低,故障是常态
c) 只在一个IDC内是没前途的
容灾改造的思路
存储集群:半自动切换模式
主/从服务器
从服务器死机,业务不受影响
主服务器死机,多数命令不受影响,修改资料命令受影响
业务集群、接入集群、同步集群:自动切换模式
迅速应对死机等情况,基本不影响业务
分布在两套IDC
可以应对IDC整体故障
2.每周有新代码发布,BUG不断出现,严重影响服务
大部分子系统每周发布一个版本的新代码
解决方法
代码review
灰度发布(每天只发布部分特性)
3. 监控机制原始、报警设置不全,出事了都不知道
CPU 100%的故事
解决方法
完善监控和报警
4. 运维操作通过vim或者mysql进行,非常容易失误
Grandy的故事
解决方法
运维操作Web化(半自动化)、自动化
强调两套、有容灾指挥中心,且在两个IDC
千万级在线的关键技术
对外提供高可用性的服务
对内提供高可运维性的系统
灰度发布
运营监控
容灾
运维自动化/半自动化
亿级在线的关键技术
存偖架构
提供高灵活性的业务支持
传统IT行业可以半年到两年出一个新版本
互联网行业要求每个月出一个新版本
同时保持高性能、高可用性、高可运维性
QQ IM后台技术演化的启示
1.0十万级、2.0百万级
高性能;7乘24小时连续服务
3.0千万级
高可用性;高可运维性
4.0亿级
高性能;高可用性;高可运维性;高灵活性
只实现功能,不难
高性能/低成本
高可用性
高可运维性
高灵活性
很难!
在线量每提升一个量级,技术难度也提升一个量级
从下到上一次是:价值观、意识、方法
- 大小: 35.2 KB
- 大小: 59 KB
- 大小: 35.7 KB
- 大小: 61 KB
- 大小: 44.2 KB
分享到:
相关推荐
腾讯 QQ IM 后台架构的演化与启示 腾讯 QQ IM 后台架构的演化与启示是指腾讯QQ即时通讯(IM)后台架构的演化过程和启示,从十万级到亿级在线的整个过程中,吸取了很多教训,对海量服务的理解是长期积累的结果。 ...
总结来说,"delphi 类QQ IM 即时通讯工具"项目涉及到了Delphi的UI设计、网络编程、消息处理、文件传输等多个方面,是学习和实践Delphi应用程序开发的绝佳案例。通过理解并实现该项目,开发者不仅能掌握Delphi的基本...
仿QQIM框架网络版源码 一个使用C#编写的高仿QQ,具备通讯功能的聊天软件 实现了网络通讯,聊天功能等,请下载查看!功能很强大 使用多层架构,扩展性也很强 数据库文件在DB下,附加即可(MS Sql2008) 开发工具:...
### 腾讯IM架构演进关键知识点 #### 一、背景与挑战 - **初期架构**:腾讯的即时通讯(IM)系统最初采用的是较为简单的架构设计,适用于较小规模的在线用户数量(如十万级别)。然而,随着用户基数的增长,这种架构...
【描述】:该高仿QQ IM通讯源码旨在提供一个可直接运行的解决方案,允许开发者快速理解并学习IM系统的架构和实现细节。源码的完整性和实用性确保了用户可以放心下载并进行实践操作,这对于想要学习即时通讯技术或者...
即时通信(Instant Messaging,IM)服务是现代网络通信的核心部分,尤其像QQ这样的大型IM平台,其服务端数据库的设计和管理对于确保用户能够快速、稳定地进行消息传递至关重要。在这个背景下,"即时通信服务端数据库...
首先,C/S模式是IM通信的基础架构。在这种模式下,客户端(Client)作为用户界面,负责与用户交互并发送请求到服务器;服务器端(Server)则负责处理这些请求,维护用户状态、管理会话,并将信息转发给其他客户端。...
在本文中,我们将深入探讨如何使用Qt框架来开发一个即时通讯(IM)客户端,类似于QQ。这个项目,称为"Qt IM client",是基于Qt库的实现,它展示了如何利用Qt的强大功能创建一个功能丰富的聊天应用程序。 首先,Qt是...
标题中的“ICQ.rar_ ICQ-IM-Chat_QQ界面_icq_仿QQ_仿QQ界面”表明这是一个关于ICQ即时通讯软件的项目,它模仿了QQ的用户界面。这个项目可能是用Visual Basic(VB)编程语言实现的,旨在创建一个基于客户端-服务器(C...
这款C++源代码实现的IM聊天软件是一款类似QQ的通讯工具,它展示了C++在开发实时通信应用中的潜力。为了创建这样一个功能强大的聊天平台,开发者可能运用了多种技术和设计模式,其中包括网络编程、多线程处理、数据...
【标题】"仿QQ即时通信源码(包括客户端和服务器的IM源码)"涉及的核心知识点主要涵盖即时通讯(Instant Messaging, IM)系统的设计与实现,其中包括客户端开发和服务器端开发两个重要方面。以下是对这些知识点的详细...
通过分析和学习这些源码,开发者可以了解如何在Android应用中集成极光IM,实现聊天功能,包括消息的发送、接收、显示以及各种交互逻辑。 总的来说,极光IM全功能为开发者提供了一套完整的即时通讯解决方案,大大...
Server QQ 是一个典型的即时通信服务端实例,它可能采用了类似腾讯QQ的技术架构,用于支持大规模用户同时在线聊天。 即时通信服务端的设计通常涉及以下几个关键知识点: 1. **协议选择**:即时通信系统通常基于TCP...
QQ仿写程序是一款基于Delphi开发的即时通讯(IM)软件,它包含了客户端和服务器端的源代码,以及使用Access数据库进行数据存储的功能。这款软件虽然可能存在一些小错误,但其设计和实现的特性相当丰富,能够支持文本...
即时通信(Instant Messaging,简称IM)是一种允许用户实时交流的在线通信技术,QQ作为国内最流行的IM应用,其源代码模仿具有很高的学习价值。QQ2011版本是腾讯公司推出的一个重要版本,它在功能、性能和用户体验上...
通过阅读和分析源代码,开发者不仅可以了解Miranda IM的基础架构,还能深入探究QQ插件的实现机制。这对于学习即时通讯软件的设计、优化现有功能,或是开发新的插件都具有极高的价值。此外,对于有兴趣自定义界面、...