代码之家  ›  专栏  ›  技术社区  ›  Joe

每天访问500k次的WCF服务的设计注意事项

  •  1
  • Joe  · 技术社区  · 15 年前

    我的任务是创建一个wcf服务,它将查询一个db并返回一个复合类型的集合。这项服务本身并不是一项复杂的任务,但它将被几个网站访问,这些网站平均每天访问量可能达到50万次。

    在设计这个的时候,我有什么特别的考虑吗?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  4
  •   Cheeso    15 年前

    开发方面没有特殊问题。 精心设计的WCF服务可以满足1000个请求 每秒 . Here's a benchmark 对于WCF,每秒显示22000个请求,使用具有4x HP ProLiant BL460C刀片的刀片系统,每个刀片具有单核、四核Xeon E5450 CPU。我还没有看到发送的消息的复杂性和大小,但在HP的主流服务器上,您肯定可以每秒收到1000条或更多的消息。有了好的设计,扩大规模就行了。在这一峰值速度下,每天500k对于建立在WCF上的通信层来说并不是特别的压力。

    在您正在处理的消息卷上, 必须考虑操作方面。

    登录中
    我所说的大多数系统运营人员负责监控WCF系统(和其他.NET系统),他们使用的方法是,在早上,他们想查看系统的基本生命体征:

    • 请求量移动平均:1分钟,1小时,1天。
    • 将这些数量与历史平均值进行比较
    • 错误/异常率:1分钟,1小时,1天
    • 这些数量的比较

    如果您的异常数量足够少(在大多数情况下,它们应该足够少),您可能希望将它们中的每一个都记录到一个特殊的应用程序事件日志或其他一些审计日志中。这需要一些思想计划来存储审计等等。这很棘手的原因是,在某些情况下,高度异常的条件会导致非常高的伐木量,这会加剧异常条件——雪球效应。当然希望对异常日志进行一些限制以避免这种情况。如果你知道我的意思的话,就是一个“开关阀”。

    数据存储
    当然,您需要确保数据源,不管它是什么,都能支持您向它抛出的查询量。正如良好的公民身份一样,您可能希望在服务上实现缓存,以减轻数据存储的负载。

    网络
    根据我引用的基准,网络是一个相当宽的开放千兆位以太网。在您的环境中,网络可能是共享的,您必须检查附加负载是否合理。