浅谈中小企网络应用服务器端技术架构选型

本篇主要是一些经验之谈,仅供参考。


一、我所推荐的服务器端软件架构


首选推荐的架构是:Nginx/IIS + PHP(Fast CGI) + Redis/Memcached + MySQL(双机热备)

如果公司里只有ASP.NET程序员,那可以改为:

IIS + ASP.NET+ Redis/Memcached + MySQL(双机热备)

如果公司里只有Java程序员,则可以改为:

JBOSS + JSP/Servlet + Redis/Memcached + MySQL(双机热备)


推荐的理由是,像这样的架构,其技术成熟度高,在实际生产中已经被广泛应用,稳定可靠,且扩展性强,技术门槛低。



二、对此架构大家可能会关注的一些问题


1、到底用Linux好还是Windows好?

Linux不需要花钱买,不管上多少台,都不需要花钱,但需要有懂得Linux的人去维护,出了问题要懂得怎样恢复服务;

Windows要花钱买(尽管单价好像也不贵),每多上一台都要多花些钱,但会有服务支持,而且大家一般都会用,其维护门槛相对较低。

至于性能、兼容等其他因素的,对于中小企的应用来说,一般可以忽略。

还有一点需要注意的是,如果决定用Windows,请用IIS作为WEB服务器(不管是用PHP还是ASP.NET);

在生产环境中,不建议在Windows下是用Nginx(在开发调试阶段倒是可以用的)。


2、为什么一定要用WEB服务器,如果我的应用不是基于HTTP,而是基于TCP/IP的呢?

用WEB服务器的主要原因是为了降低门槛,节省投资,减少风险,增加成功率。

这些优点具体表现在:

用现成的WEB服务器,不必要再花资源和时间去重新写一个TCP/IP服务器;

现成的WEB服务器,都比较成熟和稳定,易于维护和扩展,而且性能都不错,相对来说,如果自己写一个TCP/IP服务器,要做到这些并不容易;

在实际应用场景中,许多TCP/IP服务器能做到的,用WEB服务器也可以找到相应的解决方案(比如IM可以用XMPP;但也有例外的,比如说P2P);

用了WEB服务器,那就表示你的应用基本上都是基于短连接的,而我个人觉得短连接在网页终端和网络不稳定的移动终端中能更容易处理问题。


但话又说回来,并不是说使用TCP/IP的服务器就一定不好,使用TCP/IP的长连接还是有它的特点和好处的。

比如说,长连接不用每个请求都重新建立连接,效率会高些,而且可以更灵活的进行消息推送,而不是每次都使用一问一答的形式。

只是说,这些“好处”对于中小企去开发和维护一个TCP/IP服务器而言,可能会有点得不偿失。

所以,如果你还没开始做,建议你还是尽量将你的应用转换为短连接的方式,用WEB服务器来处理。

如果你仍然觉得有必要构建基于TCP/IP的应用服务器,对于中小企业来说,建议遵从以下技术选型原则:

开发语言优先级:Java > C# > C++ > C  ;

使用成熟稳定的第三方网络开发库优于直接使用操作系统的API或编程语言自带的网络库。



3、为什么要有 Redis/Memcached ?可以省去吗?

用 Redis/Memcached 的原因有两个,第一是为了做数据缓存,减轻数据库压力,提升数据读取的速度;第二是为了保存和传递WEB服务器上的全局变量。

这个一般不能省(但是可以考虑用其他缓存解决方案来替换),现在基本上缓存服务器都是WEB服务器的标配的了,对于WEB服务器的性能扩展非常重要。


4、一定要用MySQL吗?

这个倒真的不一定,如果不担心钱的问题的话,随时可以换MSSQL或者Oracle。

但是“双机热备”是必须的、基本的。


5、这样的架构其性能有保证吗?当用户量增加的时候可以如何扩展来增加吞吐量?

就单机而言,Nginx和IIS的性能是毋庸置疑的(大家可以忘记Apache了),在这里也没有必要再展开来说。

而当用户量增加的时候,可以运用虚拟IP+均衡负载技术(在Linux下是用LVS,在Windows下就用NLB),

通过简单的堆加更多服务器,就可以有效的提升整个WEB服务器群的处理能力。

同时,我们也要注意到,大量的WEB请求对于Redis/Memcached  和 MySQL的服务器也会构成压力的。

对于Redis/Memcached,他们都是支持分布式部署的,也就是只要多上几台服务器就可以同样通过虚拟IP来实现均衡负载的了。

但对于MySQL的服务器,我们还需要先使用Galera Cluster技术来组建数据库服务器集群(MSSQL和Oracle同样有自己的集群技术),

然后也是再多上几台服务器,用虚拟IP来实现均衡负载。

总的来说,要做扩展,无非就是就多上几台机就可以的了,简单而有效。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值