弱弱地问一下:大(中)型网站的后端会用到C/C++吗?

AAA20090987 2012-11-04 09:32:15
看到网上说一般网站的后端都是以下这两种架构:
1:Linux + Apache + PHP + MySQL
2:Linux + Apache + Java (WebSphere) + Oracle

所以我想问一下:大(中)型网站的后端会用到C/C++吗?如果用到了,那主要是用在哪个方面呢?

PS:这个问题可能比较SB,请大家不要见笑,呵呵。
...全文
697 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
不错,版主一番话让我这种程序小猿茅茅塞顿开,非常感谢。
  • 打赏
  • 举报
回复
谭海燕 2012-11-04
回答:不会。 几乎太少了。现在已经不是解放前小米+步枪的年代了,不需要用C/C++去造轮子了。
  • 打赏
  • 举报
回复
qq120848369 2012-11-04
如果PHP和C++之间是同一机架上的或者同一个物理机,中转的网络延迟我们忽略掉。 做C++服务端有不同的目的, 我能想到的原因: 1, 有的业务就是需要独立的C++服务端来满足需求, 比如很常见的, PHP一个CGI/FCGI会连接一次DB, 占用MYSQL连接数太厉害了, 所以我们做一个C++ SERVER, 维护一个DB线程池就可以保证只使用若干的DB连接进行DB操作, 防止并发量突增把DB搞挂了, 并且性能也一定更高, MYSQL处理大并发读写的锁是很要命的, 一般1000个连接就到头了, 有事务的话连接数再高一点点就被锁的死死了. 2, 性能问题, PHP和C++的性能差的不是一点半点, 如果业务逻辑很复杂, 比如通信格式是XML的, 解析XML就很慢了, 业务逻辑计算复杂会变得更慢, 再加上DB操作, 用C++就再合适不过了. 3, 再就是部署方面的问题了, 网站不是说并发量高了就挂了, 是因为业务处理慢挂的, 连接数不够可以加机器, 但如果处理不过来的话, 就不是加nginx/apache的问题了。 把nginx/apache仅仅当作客户端接入层,业务逻辑挪到独立的C++层,那么就可以根据并发量以及业务处理速度分别作横向扩展。 如果是PHP的话, 其实fcgi一样可以满足独立的横向扩展, 因为fcgi与web server是socket交互的, fcgi可以部署到性能更高的独立服务器上,并横向扩展。 并不能说lamp自身不能解决问题,看怎么抉择了。 微博,我认为存储为主,其他方面都和传统web应用没有区别。 DB肯定是撑不住的,必须上内存存储,并且采取增量模型,比如消息存储到内存中,用户关系存储在DB中,A用户先去DB查好友UID, 然后去内存存储中用好友UID+上次同步时间点拉取每个好友新消息列表. 新浪不是说用redis存消息吗,因为redis是数据结构内存服务器,所以非常适合存消息,比如key是uid, value是个list,每个元素存着时间和消息内容.redis可以分不同的集群, 有的存全量, 有的存2天内的, 有的存1周内的, 这样查询就快了.
  • 打赏
  • 举报
回复
AAA20090987 2012-11-04
打错字了, 在PHP和数据库之间加入一个C++层到底有什么好处呢?
  • 打赏
  • 举报
回复
AAA20090987 2012-11-04
引用 2 楼 qq120848369 的回复:
目前公司有两种流行的开发模式是用到C/C++的: 1, 直接编写C/C++的fcgi. 优点:简单并且比php的cgi和fcgi都要快很多。 缺点:fcgi现状就是单线程处理, 要并发10个请求就要开10个fcgi进程, 当然这不意味着qps是10,1秒的处理量海了去了。 2,仍然用php cgi/fcgi接入请求, 业务逻辑单独开发C/C++服务端, 由……
谢谢回答, 我的公司正在开发一个博客(微博)类的网站,用的就是你说的第二种方法,C++服务端的主要功能是操作数据库(据说以后会有其他功能,但目前好像还没有),但直接用PHP也能操作数据库,而且效率也不比C++低多少(时间主要花费在数据库操作中)。那么,在PHP和数据库中加入一个C++模块到底有什么好处呢? 继续请教。
  • 打赏
  • 举报
回复
LinuxMan 2012-11-04
  • 打赏
  • 举报
回复
qq120848369 2012-11-04
补充一下, 如果就是一个纯web应用,那么是不会用C/C++的, 只会选择哪个web开发语言更适合团队, 不会选择C/C++.
  • 打赏
  • 举报
回复
qq120848369 2012-11-04
目前公司有两种流行的开发模式是用到C/C++的: 1, 直接编写C/C++的fcgi. 优点:简单并且比php的cgi和fcgi都要快很多。 缺点:fcgi现状就是单线程处理, 要并发10个请求就要开10个fcgi进程, 当然这不意味着qps是10,1秒的处理量海了去了。 2,仍然用php cgi/fcgi接入请求, 业务逻辑单独开发C/C++服务端, 由php负责将请求转发到服务端,最终结果由php负责传回。 优点:php处理web请求非常简单(预处理请求很方便),而后端server可以摆脱fcgi框架限制,自己架构server,并发量和处理量就提升起来了。 缺点:多了php这一层中转,处理时间会增加些许,但本机通信可以忽略。 另外, 我自己补充一种: 3,直接开发server支持Http协议, 绕过web server和php,这是性能最高的,但问题就是不方便运维,因为自己开发的http server肯定只是专注业务自身,如果有部署方面的需求或者复杂需求,就远远不如nginx厉害了,所以很多时候还是选择第2种做法,因为足够稳定可靠,也足够高效。
  • 打赏
  • 举报
回复
相关推荐
发帖
Linux/Unix社区

2.2w+

社区成员

Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
帖子事件
创建了帖子
2012-11-04 09:32
社区公告
暂无公告