手机QQ的原本的产品定位定位于移动社交,并将娱乐与生活服务相结合,整体的架构模块QQ主要分为登录注册,消息,聊天,联系人,动态,侧边栏,设置等几大模块.其中消息模块和聊天模块是核心模块.好友动态及联系人属于次核心模块,延续了PC端的界面结构.

而qq的后台的IM在转变的过程中,每一个级别的要求的分别都不一样,比如有十几万以及上百万的性能的要求、24小时的连续服务以及时刻不会出现宕机这种致命性的错误。在经过了十年左右的发展之后,虽然来说用户量的增长速度慢慢减慢,但是大部分的忠实的用户还在坚持使用,现在的qq已经到达了上亿级别的使用量,对于性能的要求的更加的严格,在架构的设计上,需要完善代码结构的结构以及层次感。

手机QQ在1.0的时代,由于宣传以及流量使用费用的原因等等,QQ的使用用户的用户量还没有突破到十万级,由此业务的架构不需要多困难的部署,主需要有QQ客户端+接入的服务器+存储的服务器等等组成。只是单纯的完成了QQ登录、添加好友、查看好友的在线状态,并没有发展到像现在这样功能强大。在随后的发展过程中,随着QQ的功能逐渐的健全,用户逐渐的体验到了腾讯爸爸添加的图片视频传输的功能。由此带来的带宽上的压力由长服务器进行解决,还对于存储的轻重进行分类,大大减轻了服务器的压力 。

  然后在QQ的2.0时代,腾讯主要是将QQ的服务器由单点服务器换成了集成的服务器,同时来说还退出了一个更加重要的功能,那就是QQ群,大大的提高了QQ的办公的能力。同时来讲,这个功能也是将QQ的用户,一下推高到了200万左右的地步。

在从全QQ1.0到2.0这个版本的更替的过程中,QQ的架构的最主要的经验:绝对会不用企业级解决方案解决问题、逻辑层多进程、万有一失的无锁,用户状态,mysql分库分表,好友表自写存储的功能

第二个考验便是QQ面临的千万级的考验,在2005年的时刻,QQ的使用人群的同时的在线人数突破到了千万级别,这就对与QQ的服务器的要求变的更加严厉。

QQ在应对这次的挑战,主要的特点是将服务器进行全面的集群,在面临后台的qq用户越来越多的情况下。机器的故障同时也是越来越多,QQ加速了容灾的改造,存储的集群逐渐转变成为半自动化,在后台分布有两台的IDC。其二,在QQ的使用过程中,不断的出现新的bug,以及漏洞采用cade revrew以及灰度测试,解决问题。通过完善报警机制完善出监控机制原始等问题。

4.0在QQ时代中是跨时代的发展,在架构上同时完善了在异地多点登录的情况使用,可以进行管理不同的登录终端,完善QQ的安全性。能够支持5到10个亿同时在线进行交流,这都是巨大的发展。

在未来的5.0以及6.0版本,希望QQ能够越做越大,将使用的人群年龄扩大,完善使用的客户群体,更加的便利人们的生活。

文章参考:http://www.360doc.com/content/17/0906/17/6828497_685039187.shtml

手机QQ架构的浅谈的更多相关文章

  1. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  2. 手机app开发:浅谈APP登录方式的优劣

    手机app开发公司亿合科技要是给你一个机会设计一款APP,你会用什么方式做这个APP的登录模块?根据APP的业务模型的不同会有不同的设计方法.如果是偏内容型的APP,需要优先展示内容给用户,当用户需要 ...

  3. SOA案例架构分析浅谈

    上课中讲到了SOA架构设计,自己在课下决定总结一下对于SOA架构的理解以及应用. 先总结一下SOA的定义,SOA是面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使 ...

  4. 关于mvc架构的浅谈

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...

  5. JavaEE 三层架构的浅谈

    三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...

  6. .net架构的浅谈

    ,net的架构有以下几种 1.两层架构:UI + 数据层 2.三层架构:UI + 业务层 + 数据层 3.三层 + 接口层 (把相关的业务层抽象成接口,下层来实现接口,中层是依赖) 4.三层 + 接口 ...

  7. [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

    蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...

  8. 示例浅谈PHP与手机APP开发,即API接口开发

    示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...

  9. iOS应用架构浅谈

    (整理至http://www.cocoachina.com/ios/20150414/11557.html) 缘由 从事iOS工作一年多了,主要从事QQ钱包SDK开发和财付通app维护,随着对业务的慢 ...

随机推荐

  1. Python 字符串 String 内建函数大全(1)

    关于 Python 的字符串处理相关的方法还是许多的.因为我正在学习 Python,于是就把 Python 中这些混杂的用于 string 的函数总结出来,在自己忘记的时候便于查找,希望对于有相似需求 ...

  2. IA32 MMU paging初始化代码

    写了一段IA32 paging通用构造代码.有须要的.能够拿去 #define PDE_FLG_RW (1<<1) #define PDE_FLG_US (1<<2) #def ...

  3. Adding a model

    https://docs.asp.net/en/latest/tutorials/first-mvc-app/adding-model.html Adding data model classes I ...

  4. Swift - 将字符串拆分成数组(把一个字符串分割成字符串数组)

    在Swift中,如果需要把一个字符串根据特定的分隔符拆分(split)成字符串数组,通常有如下两种方法: 1,使用componentsSeparatedByString()方法 1 2 3 4 5 l ...

  5. canvas的自动画图

    <!DOCTYPE HTML><html><body> <canvas id="myCanvas" width="200&quo ...

  6. codeforces 708ALetter Cyclic Shift

    2019-05-18 09:51:19 加油,加油,fightting !!! https://www.cnblogs.com/ECJTUACM-873284962/p/6375011.html 全为 ...

  7. anaconda 使用 及 tensorflow-gpu 安装

    Anaconda简易使用 创建新环境 conda create -n rcnn python=3.6 删除环境 conda remove -n rcnn --all 进入环境 conda activa ...

  8. .net 对称加密

    后台   public class CryptoHelper     {         // 对称加密算法提供器         private ICryptoTransform encryptor ...

  9. Jenkins 打包 java项目时 丢失 配置文件(resource)

    使用IDEA开发的spring boot 项目在本地打包运行可以,但是利用Jenkins打包运行提示读取不到配置文件中的变量,打开jar包发现里面没有配置文件.解决方法是在pom中增加如下配置 < ...

  10. javascript中caller和callee call和apply

    Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]arguments[n] 参数function :选项.当前正在执行的 Function 对象的名字. n ...