代码之家  ›  专栏  ›  技术社区  ›  Miyagi Coder

高效写作。Net/SQL Server代码[已关闭]

  •  4
  • Miyagi Coder  · 技术社区  · 17 年前

    让我先说我没有敲门。网络(它帮助我谋生)。..

    我最近听说一个网站的开发者/所有者吹嘘他只有最少的硬件来支持他的网站(plentyoffish.com)。该网站在Alexa上的流量排名前50位。我很难理解如何通过做开发人员/所有者声称的事情来完成这样的事情,一个开发人员使用每小时200万次点击(峰值)的最小硬件编写一个网站(他花了2周的时间才建立了初始网站)。大公司有巨大的网络农场来处理这样的流量。..

    如何在硬件资源有限的情况下(他声称自己只使用了三台数据库服务器)编写如此高效的代码?有人开发或开发过如此高效的网站吗?

    6 回复  |  直到 17 年前
        1
  •  6
  •   Jason Kester    17 年前

    如果你避免了ASP的所有拖放垃圾,微软的堆栈会非常快。NET一个坏名字。

    • IIS是一个优秀的web服务器。
    • SQL Server是一个很好的数据库。
    • C#编译成快速代码。(此处可能需要资格:)
    • ASP。如果使用得当,NET可以非常轻量级

    这就是全部。一切都好。你可以说你喜欢微软、它的商业实践和它的消费品,但他们的开发工具和服务器都是一流的。

    我对他们的网络堆栈的个人经验包括,一个网站的页面浏览量约为500次/秒,服务器浏览量很少超过15%。对于大多数操作来说,这已经足够快了。

        2
  •  4
  •   Brent Ozar    17 年前

    这不仅仅是代码:做这样的事情需要开发人员、DBA和It的合作。团队的每个成员都必须认识到他们的工作对团队其他领域的影响。

    当开发人员编写一个在重型OLTP系统上进行表扫描的查询时,他必须理解为什么它无法扩展。当DBA看到表扫描时,他必须了解如何在数据库级别或代码级别修复它。当系统管理员看到驱动器上的大量读取活动时,他必须了解其根本原因(如表扫描),以便决定是用更好的代码修复它还是向它扔更多的驱动器。

    表现良好的系统是每个人都做得很好,并与其他团队成员进行良好沟通的结果。如果团队中只有一名成员将其他人扔到公共汽车下,系统将无法运行。听起来你已经在通过投掷来做到了。NET和SQL Server在总线下运行。 ;-)

        3
  •  3
  •   jle    17 年前

    对于网站,缓存可以完成一些非常神奇的事情。如果你能高效地缓存东西,那么使用的语言就不那么重要了。

        4
  •  3
  •   JMD    17 年前

    正如jle所说,缓存是关键。此外,这可能只是网站上用户交互的性质。我可能错了,但我认为plentyoffish.com并不是一个资源/用户密集型网站。那里 用户配置文件中可能有很多数据,但(根据我有限的经验)该网站的目的不是操纵、关联或转换数据,而是简单地返回符合用户标准的配置文件,而不是以任何方式按摩这些数据。

        5
  •  2
  •   Kibbee    17 年前

    与替代方案相比。网络实际上相当高效。还有什么?PHP?Java红宝石?当然,你可以用C++编写你的web应用程序,但这将是实现和维护的一大难题。此外,正如其他人所提到的,通过适当的缓存、数据库调优和算法,您可以获得非常好的性能。比仅仅选择一种快速语言和编写未经调优的代码性能要好得多。

        6
  •  2
  •   E.J. Brennan    17 年前

    这是一个很难用具体细节来回答的问题,但并非所有在软件开发中做出的选择都是平等的,即使使用相同的语言。你把一层又一层的框架放在某个东西上越多,你离“真正重要的是什么”就越远,如果“真正重要”的是性能,那么可以在“较低级别”编程的人可以比通过拼凑控件开发程序的人快很多倍。有时,开发的易用性比原始速度更重要,因此在较低级别进行正确的选择并不总是正确的——代码的易维护性也很重要,有时甚至超过了原始性能。

    我曾经与另一位顾问正面交锋,试图为一家大型金融服务公司赢得一份高达6位数的合同,我们都在推销BI/EIS系统的想法。他使用了臃肿的技术和每一步,但这都是他非常自豪的“新的、闪亮的”技术,其中包含了所有正确的流行语。

    我是用asp编写的(asp经典版,.net尚未推出),并使用自定义编写的本地SQL Server通信方法,以及所有手工编码的例程来生成报告和其他类似的性能增强决策。他使用了一个报告编写器插件和即插即用控件来构建他的系统。我在200英里外的家庭办公室里用28.8的拨号线路对着我的开发Web服务器做了整个演示——他的演示是在隔壁房间里用100Mbit以太网连接的一台功能强大得多的开发服务器上完成的,而且速度仍然慢很多很多倍。

    演示结束后,我告诉我的客户,我的整个演示都是通过拨号线路完成的(他们认为这是本地的)。这就敲定了交易,因为该系统的大多数用户分散在全国各地,宽带在当时并不常见。

    推荐文章