`

SOHU这几年一些门户级别的程序系统(C/C++开发)

阅读更多
这段时间一直在弄海量数据,及时数据和高并发的东东;  
转贴一下很早之前chinaren的邹丹同学的报家底的一篇文章; 


bserv:

用于高负载,高读写速度的单点和集合数据。 内核为BerkeleyDB,外壳为UDP线程池。 接口为读写单点数据或者集合数据。单点数据就是Key->Value数据。 集合数据就是有索引的数据,List->Keys->Values。 比如一个班级所有成员,一个主贴所有回帖等等。 DBDS性能很高,每秒读取>800个每秒,写>300个每秒(志强xeon:2G*2,72Gscsi,Ram:2G) 配合java接口,目前应用在ChinaRen所有项目中(ChinaRen校内,校友录,社区等等)。是整个ChinaRen的核心数据服务,大概配备了50台服务器。 特点:高速,高请求量。用于各种数据的低成本存储,解决数据库无法实现超高速读写的问题。门户级别的高速数据服务。

OnlineServer:

ChinaRen/SOHU小纸条系统核心 核心为3个小server系统:online2(在线系统业务逻辑),userv(用户资料系统),cserv(LRU缓存) 这三个子系统都是UDP+线程池结构,单进程+多线程。配备java接口,apache_mod的json和xml接口。 online2包括了大部分业务逻辑,包括,上线,好友系统,纸条系统。 userv包括设置用户各种属性,信息。 cserv是个大的lru缓存,用于减小磁盘IO。可以放各种信息块,包括用户信息,好友,留言等。 目前配备4台服务器(DL380,xeon:3G*2,SCSI:146G raid,Ram:2G),用户分布到4台服务器上,相互交互。服务器可以由1台到2台,到4台,到8台。 底层存储为文件存储(无数据库),用reiserfs。 配套系统: mod_online,两个版本,apache和lighttpd版本,用于页面上显示蜡烛人。请求量巨大,目前用lighttpd版本的mod_online。 放在sohu的squid前端机器上,运行在8080,大概8台,每台请求量大概500-800个每秒。蜡烛人在所有ChinaRen页面有ID的地方 显示用户是否在线。 目前这套在线系统,作为SOHUIM的内核原型。准备开发WEBIM系统,用户所有SOHU矩阵用户的联络。

apache_mod系列:

基于apache2的服务有很多,用于高请求量,快速显示的地方。
1.mod_gen_verifyimg2:
用于显示验证码,使用GD2,freetype。直接在apache端返回gif流,显示随机的字体,角度,颜色等等。用于ChinaRen各个需要验证码的页面,请求量很大。
2.mod_ip2loc
用于apache端的IP->物理地址转换,高速,高效。 读取数据文件到内部数据树,高速检索,获得客户端ip的物理地址。用于需要IP自动定位的产品,还有就是数据统计等。比如ChinaRen校内, 每个客户端请求都能获得物理地址,用于应用的逻辑处理。
3.mod_pvserver2
ChinaRen社区帖子点击的记录和显示。 根据URL,得到帖子ID,通过UDP数据包,统计到bserv系统。并且把结果通过Cookie返回到客户端。html直接用javascript显示点击数在帖子上。 解决了点击数量高效记录,高效读取和非动态页面程序显示的问题。
4.mod_online
用于ChinaRen页面上的蜡烛人显示。和onlineserver通讯,得到用户在线状态和其他状态信息。请求量很大,每台前端大概500-800个请求。
5.其他mod 还有一些认证的,访问统计的,特种url过虑跳转的,页面key生成的,还有若干。 特点:高速,密集超高请求量。前端分担应用服务器压力,高效。


cserv:

高速LRU缓存系统。 内核是UDP+线程池+LRU结构(hash+PQueue)。 用于存放各种数据块,Key->Value结构。通过LRU方式提供给应用,可减小文件IO,磁盘IO等慢速操作。目前用于ChinaRen在线系统的用户资料缓存。 特点:高速读写,低成本。


ddap:

UDP+线程池,单进程,多线程的服务端程序原型,大部分程序由这个结构开始。 性能为8000-10000个请求每秒。


eserv:

访问统计系统 用于用户访问的次数和最后上线时间的存储和读写。 用于ChinaRen校友录每个班级的访问记录。存储为文件存储,并有同时写入后备的bserv,用于备份和检索。 目前性能,每台机器每秒50个记录,100个读每秒。能满足校友录巨大的用户登录记录的需要。 特点:无数据库,纯文件存储,高速读写。低成本


logserver:

用于各种事件的日志记录 核心为ddap,UDP+线程池 功能是分模块记录各种日志。ChinaRen所有用户服务,系统日志,都记录在logserver中。用于统计,查询。 写入性能很好,每秒100个单台机器。 特点:高速高效,低成本,海量。


SessionServ: 

session系统 核心为ddap,UDP+线程池 用于在内存中存储临时数据。有get/put/del/inc等操作。广泛的用于固定时间窗口的小数据存储。比如过期,数据有效性检测,应用 同步等等。由于是全内存操作,所以速度很快,存取速度应该>1000个每秒。 目前广泛用与ChinaRen社区,校内,校友录等业务当中。 特点:高速高效,低成本,应用广泛。


其他server:

MO_dispatcher: 用于短信上行接口的的数据转发,使用TCP。能高速大流量根据业务号码分发到各个应用服务中。目前用于SOHU短信到ChinaRen各短信服务的转发。 sync: 用于静态前端同步,分客户端和服务端程序。客户端通过TCP链接和服务端获取需要同步的文件列表,并且通过TCP高速更新本地文件。 此同步程序用于多客户端,单服务端。比如一台服务器生成静态文件,同步这些文件到若干客户前端去。 特点:门户级静态内容服务器间同步,高效,高速,大流量。目前用于ChinaRen社区的静态帖子。

总结一下:

门户的核心服务,要求是高效率,高密度存取,海量数据,最好还是低成本。不要用数据库,不要用java,不要用mswin。用C,用内存,用文件,用linux就对了。
分享到:
评论

相关推荐

    C/C++程序设计学习与实验系统

    原名《Turbo C/C++ for Windows 集成实验与学习环境》,现在已支持最新操作系统WINDOWS 7,它是从事一线教学的大学教师根据C程序多媒体教学演示和C语言初学者的特点,量身打造的一个简单易用的C/C++程序设计教学演示...

    Turbo C/C++ for Windows 集成实验与学习环境 7.0

    Turbo C/C++ for Windows 集成实验与学习环境是从事一线教学的大学教师团队根据C语言初学者的特点,量身定制的一个简单易用的C语言实验与学习软件,集成了高校C语言教学中使用最多两种编译器Visual C++ 6.0和Turbo C ...

    Visual C++ .net数据库开发经典案例解析

    (1) 本光盘是《Visual C++.NET数据库开发经典案例解析》的配套光盘,与图书一起发行,不得单独出售。 (2) 本光盘的主要内容包括各章示例程序的代码及数据库文件。光盘的说明文件为Readme.txt,即本文件。 (3) 示例...

    自动注册SOHU用户小程序

    1. Delete.bat - 这可能是一个批处理文件,用于执行一些自动化的命令,如清理临时文件或启动程序。 2. Unit1.dfm - 这是Delphi中的一个表单文件,包含了程序界面的设计和布局信息。 3. Project1.dpr - 这是Delphi...

    C++发送邮件客户端源码

    标题中的"C++发送邮件客户端源码"指的是一个使用C++编程语言实现的程序,它能够作为客户端发送电子邮件。这样的程序通常需要与SMTP(Simple Mail Transfer Protocol)服务器进行交互,SMTP是互联网上用于发送电子...

    基于python开发的检测网站死链程序

    基于python开发的检测网站死链程序 设计一个系统,自动完成对于手机搜狐(http://m.sohu.com/ )系统可靠性的检测。具体要求: 定时递归检测所有m.sohu.com域名的页面以及这些页面上的链接的可达性,即有没有出现不...

    htcp(给C++代码添加html标记)

    如何你是一个喜欢在搜狐博客上发表C++技术贴的朋友,请往下看。 你是不是觉得直接将C++代码粘贴到博客上显得很不舒服,没有了已往的高亮显示,阅读代码变得很是费力,怎么样可能自动给代码加上相应的高亮显示,...

    Sohu门户运维那些事 pdf

    Sohu门户运维那些事 PDF,出自SOHU网络运营部-窦喆,电子书截图:http://www.codefans.net/upload/softimg/7/15757.gif 主讲内容:  一.SOHU运维管理的问题和挑战  二.SOHU基础设施建设  三.SOHU基础服务...

    连接到指定的网站程序(VB6.0源代码编写) If InternetCheckConnection("http://www.sohu.com/", 1, 0) = 0 Then

    连接到指定的网站程序(VB6.0源代码编写) If InternetCheckConnection("http://www.sohu.com/", 1, 0) = 0 Then MsgBox " 不能连接到 http://www.sohu.com/ ", vbInformation Else MsgBox " 已经连接到 ...

    自动注册SOHU用户小程序.rar_注册用户_用户注册_自动注册_自动注册用户

    综合以上信息,这个压缩包包含了一个使用Delphi开发的自动注册SOHU用户的小程序,具有自动填写表单和模拟用户操作的功能。程序的各个部分包括用户界面设计、执行逻辑、可执行文件以及一些辅助文件,如说明和资源。...

    C++编程思想1 卷一

    《C++编程思想》这本书通过实例和深入的解释,帮助读者建立起对C++语言的全面理解,从而能够有效地设计和编写高质量的C++程序。对于初学者,建议从基础语法开始,逐步深入到面向对象和泛型编程,同时结合实际项目...

    基于smtp的邮件发送程序的设计与实现

    在“基于SMTP的邮件发送程序的设计与实现”中,我们将探讨如何利用SMTP协议来构建一个邮件发送系统,尤其关注在VC++6.0环境下如何实现这一功能。 首先,我们需要理解SMTP的工作流程。SMTP服务器通过TCP/IP连接接收...

    c语言图书管理系统实践报告

    通过这个程序代码,我们可以看到,图书管理系统的设计需要使用C语言编写多种函数来实现不同的功能。这些函数包括首页函数、登陆函数、新增图书函数、图书信息排序函数、删除图书信息函数、查询图书信息函数和图书...

    sohu邮箱注册机

    "自动获得验证码"可能是指该注册机可以自动识别或抓取网页上的验证码图片,而"手动录入验证码即可"则表明用户需要亲自查看并输入这个验证码以完成验证步骤,这可能是为了符合反垃圾邮件政策和避免违反Sohu邮箱的服务...

    C语言爬虫 实现news.sohu.com的爬取以及依赖分析

    C语言爬虫 实现news.sohu.com的爬取以及依赖分析 北邮计算机应用编程实验

    Nginx模块源码 mod_strip

    在深入讲解`mod_strip`之前,我们先来了解一下Nginx的基本架构和模块系统。Nginx是一款高性能的HTTP和反向代理服务器,它的核心设计采用事件驱动模型,能有效处理高并发请求。Nginx的工作模式主要由一系列模块组成,...

    搜狐api 授权登录和各种应用 接口完整版

    在IT行业中,API(应用程序接口)是软件系统之间交互的核心工具,它定义了不同服务之间的通信方式。本主题聚焦于“搜狐API授权登录和各种应用接口”,这涉及到开发者如何利用搜狐提供的API来构建与搜狐平台集成的...

    在DEV-C++4.9.9.2下編譯通過的IPMSG源代碼

    标题中的“在DEV-C++4.9.9.2下編譯通過的IPMSG源代碼”表明了这是一个关于使用DEV-C++集成开发环境(IDE)编译IPMSG(Internet Popup Message Gateway)源代码的项目。IPMSG是一款用于局域网内即时通讯的开源软件,...

Global site tag (gtag.js) - Google Analytics