Web服务是可扩展的,对吧?

时间:2011-11-13 13:40:26

标签: database performance web-services

我有一个相对简单的问题,我认为,经过网络搜索,我已经知道了一些答案,但需要更多的建议。我是幕后数据库管理机制的新手。

我想使用REST网络服务与移动用户(手机用户,主要是Android和iPhone)进行通信。 Web服务使用C#编写,并通过简单快速的查询(如SELECT EmployeeID, FirstName, LastName, HireDate, City FROM Employees WHERE City = 'London')查询Microsoft SQL Server 2008数据库 - 所有这些字段都被索引以获得最大速度。 Web服务是“Per Call”,意味着它们是无状态的,理论上非常可扩展。

我的问题是,网络服务将由第三方托管,如GoDaddy。我过去曾经使用过这个第三方,他们提供一些简单的网络服务没有问题,每分钟有一到两次点击,但如果我开始每分钟获得10万人访问它们,会发生什么?我问他们,我不认为他们真的理解这个问题(或者他们确实理解了 - 但我不确定)他们只是说:'如果你超过你的带宽,只需按我们xx的价格购买更多/ MB每月等等'但是我想在这里问一下:我的解决方案是否具有可扩展性?我问这个是因为有人说要买一台服务器 - 但对于初学者我不想这样做,除非我确定这个第三方无法满足我的需求。

所以,具体一点:REST Web服务,用C#传递XML,由Microsoft SQL Server 2008托管,在Per Call,数据库和Web服务方法上缓存,由第三方托管(在那里你付钱给他们)每月XYZ带宽,并涉及简单,特定,快速的SQL查询 - 这种设置是否可扩展?它可以处理每秒2000次点击吗? 20000? (当然假设您支付托管这些Web服务和数据库的第三方以获得更多带宽)我读到的某个地方Microsoft SQL服务器每秒可以处理2000个连接,但我不确定这是真的还是适用的?我理解Web服务不仅限于访问单个数据库 - 或者我错了?如果Web服务受一个数据库限制,我可以重写我的代码,因此使用两个或更多数据库(即,如果“London”是SQL查询城市,则使用连接字符串,然后使用数据库#1,如果“Paris”是城市,使用数据库#2等)。这是真的吗?

很抱歉,如果这个问题对于数据库专业人员来说太简单了,但你必须从某个地方开始。提前谢谢。

2 个答案:

答案 0 :(得分:1)

最简单的答案是没有简单的答案。

当你说每秒点击“20000”时,你是在谈论平均值,还是在达到峰值? 20000是/巨大/金额,并且由一组机器比单一机器更好地服务。

数据库查询很慢。尽量减少使用量。

开始考虑代理服务器,例如nginx或varnish

取消对基于会话的代码的依赖,并尽可能提供静态内容

缓存,缓存,缓存。

但我想最好的建议是:从小开始,慢慢成长。

答案 1 :(得分:1)

在您的描述中,您没有什么可以启动大的“不可扩展”警报,但在实际尝试之前,您无法知道解决方案的可扩展性。