[回复]
[修改] [删除]
[返回版面]
|
1 |
作者: admin, 讨论版: 编程世界, 发表时间: 2014-10-12 00:35:29 PST
标题: 能举例说几个大型C++服务器应用吗?(转载)
关键字: C++
能举例说几个大型C++服务器应用吗?
本文来自: http://www.newsmth.net/nForum/#!article/Programming/91275?p=1
--
发信人: sanshisui (sasuke), 信区: Programming
标 题: Re: 能举例说几个大型C++服务器应用吗?
发信站: 水木社区 (Sat Oct 11 03:53:10 2014), 站内
腾讯游戏摸调分析系统
项目描述: 软件环境: linux
开发工具: vim、 g++ 、gdb
项目描述: 该项目是腾讯游戏模块间调用分析系统,分为sdk、agent、存储模块、分
析模块几个模块。 业务进程通过sdk向agent发送上报数据。sdk和agnet之间采用命名
管道进行通信。当管道满时sdk将数据落地,agent会启动线程读取落地文件并发送到存
储模块,会有多个sdk和一个agent通信。Agent负责将sdk上报的数据发送给存储模块。
Aagent采用多进程和线程池的工作模式,主进程负责监控工作进程,如果工作线程退
出,主进程会重新启动工作进程,每个工作进程有一个主线程和一个工作线程池。主线
程负责分配任务给工作线程,工作线程就负责具体的业务逻辑。Agent还完成了流控和
采样率。存储模块负责存储数据,分析模块就是从存储模块中读取数据进行分析并展示
到页面上
--
发信人: sanshisui (sasuke), 信区: Programming
标 题: Re: 能举例说几个大型C++服务器应用吗?
发信站: 水木社区 (Sat Oct 11 03:54:17 2014), 站内
腾讯游戏服务引擎GSE
项目描述: 软件环境: linux
开发工具: vim、 g++ 、gdb
项目描述: GSE是腾讯游戏服务引擎,Game Service Engine的缩写,分为appEngine、
任务模块、监控模块、存储模块、cmdline、名字服务、文件服务。
appEngine为接入GSE的游戏和业务提供发布、开区开服、扩容、故障替换等自动化服
务。
任务模块主要是运行命令、脚本、程序等。可以指定满足某些条件的服务器运行某个脚
本或者程序,并将运行结果存储在存储模块,供server或者其他的应用程序查询。比如
属于哪个业务或者CPU利用率在90%以上的运行哪个脚本。该模块分为server端和client
端,server负责接收任务并生成taskid,将该任务放入队列,并根据规则向符合条件的
服务器(client端)下发任务,client端将返回结果或者打屏输出等数据存储于存款模
块。供server端或者其他应用程序查询。
监控模块主要是负责监控服务器心跳数据、cpu、net、memory等数据,也监控具体业务
进程所占cpu、memory等数据。并根据报警规则进行报警。所有的监控数据都存储于存
储模块,这个模块提供上报数据api,方便其他的项目组上报数据。
存储模块就是存储数据,采用分布式存储,提供查询api,方便其他项目组查询数据。
Cmdline是一个小应用程序,通过调用它您可以上报您想要上报的数据,实现路由功
能。
名字服务利用zookeeper特性,基于zookeeper开发而得。
文件服务模块也分为server和client,server负责存储文件,比如os镜像、配置文件等
等,并提供上传和下载接口。Client端就实现文件的上传与下载,支持伪P2P下载,断
点续传。其他模块或者其他的应用程序调用client的方法,就能够实现对文件的上传和
下载。
--
发信人: sanshisui (sasuke), 信区: Programming
标 题: Re: 能举例说几个大型C++服务器应用吗?
发信站: 水木社区 (Sat Oct 11 03:55:10 2014), 站内
京东日志系统
软件环境: linux
开发工具: vim、gcc、gdb
项目描述: 该项目是京东的日志系统,负责收集、存储、分析、查询京东所有项目产
生的日志以及服务syslog,每天的日子量大约在3T左右。整个项目主要有:master、
agent、API、collector、notifier server、analyzer server、manage、search:
1、 master用于agent和collector的配置文件的管理和存储、服务器状态信息的存储、
ACL的存储、规则的存储等。基于zookeeper开发而成:
2、 该系统对日志的收集有两种方式:
 通过agent来tail项目产生的日志并发送到collector。
 通过该系统的API发送, API支持多种平台。其他应用程序只要调用该系统的
API就可以向collector发送日志;
3、 collector采用多进程多线程模式,它负责接收日志,并实时解析,解析完成后发
送给搜索引擎和hdfs,JFS(京东文件系统);collector还根据报警规则,实时解析接收
到的日志是否符合报警规则,如果符合就将该条日志同时发给notifier server。
4、 notifier server根据collector报上来的日志,此时的日志中包含有ruleid(报警
规则编号),notifier server根据ruleid获取rule后,根据规则的描述并做出相应的
处理。
5、 analyzer server使用mapreduce对日志数据进行数据分析,分析出公司想要的数
据,如分析出某用户最近想要购买的商品,从而为其推荐、根据日志数据找出某段时间
内最热销的商品等等。根据这些宝贵数据,为公司的营销提供宝贵的参考依据。该模块
是该系统很重要的价值体现。
6、 search就是搜索引擎,基于elasticsearch开发而成。接收collector解析后的日
志,并做索引,接受用户的查询。
7、 manage是整个web前端,所有的配置设置修改等操作的入口,通过manage可以修改
agent、collector、notifier server的配置等操作,可以查看报警历史等等。
--
发信人: sanshisui (sasuke), 信区: Programming
标 题: Re: 能举例说几个大型C++服务器应用吗?
发信站: 水木社区 (Sat Oct 11 03:55:57 2014), 站内
东图片系统
软件环境: linux
开发工具: vim、gcc、gdb
项目描述: 这个项目是京东的图片服务器系统,京东网站的所有图片都通过这个服务
器展示。系统最前端是公司的CDN,CDN后面是图片服务器自己的缓存服务器,缓存服务
器后面是反向代理服务器,反向代理服务器后面是处理图片请求的服务器集群。整个项
目分为五个模块:上传模块、存储模块、访问模块、监控模块、管理模块。
1. 上传模块主要是存储开发人员、采销人员、顾客等上传的图片,并返回给上传人员
该图片的URL地址,以后的访问就根据这个URL来访问;
2. 存储模块负责图片的存储,是图片系统的子项目,名叫JFS(京东文件系统),采用
分布式存储,这个模块非常复杂,这个模块分为客户端、元数据服务器、数据服务器、
协调服务器,上传模块调用客户端上传图片,客户端向元数据服务器询问存放在哪些数
据服务器、如何存放?客户端得到元数据服务器的答复后就直接将图片发送给数据服务
器,存的份数由用户给定,默认是3份,当存放完成后客户端就告之给元数据服务器,
元数据服务器就记录状态,数据服务器会每隔5分钟向元数据服务器报告自己的状态。
当访问模块通过客户端访问图片时,客户端向元数据服务器获取图片的存储位置,然后
客户端采用就近原则从数据服务器上获取图片。
3. 访问模块就是显示该图片,整个网站平均每张网页有80%左右的图片。有的网页上需
要显示同一张图片的不同尺寸,为了节约存储空间,系统中只有原始图,其他尺寸的图
片由服务器临时压缩而来,有的图片还需要打水印,访问模块从数据库中获取打水印的
尺寸和位置,并和图片一起显示,这些功能是基于nginx完成的,将这些功能开发成
nginx模块,整个网站对图片服务器的请求很频繁,要求并发能力很强,是主站
(www.jd.com)访问量的6到7倍左右,为减轻服务器压力,前端redis开发了一个缓存
服务器;在缓存服务器下面有一个基于nginx开发的反向代理服务器。
4、监控模块主要是监控图片服务器集群中每台服务器的运行状况并展示,
5、管理模块主要是管理图片,比如说删除、修改该图片、增加打水印功能、增加压缩
尺寸等。
--
发信人: sanshisui (sasuke), 信区: Programming
标 题: Re: 能举例说几个大型C++服务器应用吗?
发信站: 水木社区 (Sat Oct 11 03:57:02 2014), 站内
京东ESB系统
软件环境: linux
开发工具: vim、gcc、gdb
整个ESB前端负载均衡的实现和后端ESB服务器性能的监控,后端ESB服务器的监控是基
于zookeeper实现的,每台服务器在zookeeper上是一个节点,它的子节点会记录该时刻
服务器的性能参数。每5秒更新一次数据。前端负载均衡基于nginx实现,将负载均衡算
法编写成nginx模块,nginx模块采用多线程的方式实时从zookeeper上获取后端服务器
的状态,根据状态决定由哪台服务器处理请求。将后端ESB服务器的处理结果返回给客
户端。
项目描述: 这个项目主要是对京东所有的webservice进行、注册、授权等等的管理,
假如有一个webservice接口完成了,可以为其他的项目提供服务,它必须要在ESB项目
中进行登记并发布,假如某个项目需要访问一个webservice接口,需要在ESB项目中注
册,得到ESB的授权后,并由ESB去请求这个webservice,ESB将返回的结果返回给调用
者。
--
※ 来源: homecox.com [来自: 66.]
|
|
|