让我先说我不是在敲.Net(它帮助我谋生)......
我最近听说有一个网站是开发者/所有者吹嘘说他有最少的硬件来支持他的网站(plentyoffish.com)。该网站在Alexa的流量方面被列为前50名。通过做开发人员/所有者所声称的,一个开发人员写一个网站(用了2个星期才能获得初始网站),使用最少200万的硬件,我正在努力解决这样的问题。每小时点击次数(峰值)。较大的公司拥有巨大的网络农场来处理这样的流量......
如何使用有限的硬件资源编写代码效率如此高效(他声称他只使用三台数据库服务器)?有没有人工作或开发过有效的网站?
答案 0 :(得分:6)
如果你避免给ASP.NET带来错误名称的所有拖放垃圾,那么Microsoft堆栈会非常快。
这就是整个堆栈。都很好。您可以说出您对Microsoft,其业务实践和消费者产品的喜好,但他们的开发工具和服务器是一流的。
我个人使用他们的网络堆栈的经验包括一个网站,每秒可以看到~500次综合浏览量,并且服务器很少超过15%。这对于大多数操作而言足够快。
答案 1 :(得分:4)
这不仅仅是代码:做这样的事情需要开发人员,DBA和IT的共同努力。团队的每个成员都必须认识到他们的工作对团队其他领域的影响。
当开发人员编写一个在繁重的OLTP系统上进行表扫描的查询时,他必须理解为什么它不会扩展。当DBA看到表扫描时,他必须了解如何在数据库级别或代码级别修复它。当系统管理员在驱动器上看到大量读取活动时,他必须了解它的根本原因(例如表扫描),以便决定是用更好的代码修复它还是在其上投入更多驱动器。
表现良好的系统是每个人都做得很好的结果,并且与其他团队成员沟通得非常好。如果团队中只有一名成员将其他人扔到公交车下,系统将无法执行。听起来你已经通过在总线下抛出.NET和SQL Server来实现它。 ; - )
答案 2 :(得分:3)
通过网站,可以通过缓存完成一些非常棒的事情。如果你能有效地缓存内容,那么使用的语言就会少得多。
答案 3 :(得分:3)
正如jle所说,缓存是关键。此外,它可能只是网站上用户交互的性质。我可能错了,但我认为这个例子,lotsoffish.com,并不是一个特别的资源/用户密集型网站。据推测, 在用户配置文件中有大量数据,但是(根据我的有限经验检查出来)网站的目的不是操纵或关联或转换数据,而是简单地返回符合用户标准的配置文件 - 但不是真的以任何方式按摩该数据。
答案 4 :(得分:2)
与替代方案相比,.Net实际上非常有效。那里还有什么? PHP? Java的?红宝石?当然,您可以使用C ++编写Web应用程序代码,但这将是实现和维护的主要难题。此外,正如其他人所提到的,通过适当的缓存,数据库调优和算法,您可以获得非常好的性能。比选择快速语言和编写未调整的代码更有效。
答案 5 :(得分:2)
这是一个难以回答的细节,但并非所有在软件开发中做出的选择都是平等的,即使使用相同的语言也是如此。你越是层层叠叠的东西,你从“真正重要的东西”中获得的距离越远,如果“真正重要”的是表现,那么可以在“较低级别”编程的人可以做很多事情。 ,比通过拼凑控件开发程序的人快许多倍。有时开发的简易性比原始速度更重要,因此在较低级别上并不总是正确的选择 - 维护代码的简便性也很重要,有时甚至超过原始性能。
我曾与另一位顾问试图赢得一家大型金融服务公司的高6位数合同,我们都是出售BI / EIS系统的想法。他使用臃肿的技术和每一步,但它是所有“新的和有光泽的”技术,他非常自豪并包含所有正确的流行语。
我用asp编写了我的(asp经典,.net还没有出来),并使用自定义编写的本机SQL Server通信方法,使用所有手动编码的例程来生成报告和其他类似的性能增强决策。他使用报告编写器插件和即插即用控件来构建他的系统。我在200英里外的家庭办公室对着我的开发网络服务器通过一条28.8拨号线完成了我的整个演示 - 他是通过100Mbit以太网连接的另一个房间中更强大的开发服务器完成的,它仍然很多,慢很多倍。
当演示结束时,我告诉我的客户我的整个演示是通过拨号线完成的(他们认为它是本地的)。由于该系统的大部分用户分布在全国各地,宽带在当时并不常见,因此这标准化了这笔交易。