我们目前在 SQL Server 2008 中使用事务复制来使辅助报告服务器与主数据库服务器保持同步。这种方法效果很好,可以减轻主服务器的部分负载。是否可以将此解决方案扩展到多个报告服务器?我们预计只读查询的负载会增加,如果能够根据需要添加报告服务器就更好了。
总体思路如下:
- 每个报告服务器都会使用“拉取”订阅从主数据库发布中获取数据。这些报告数据库可能比主服务器慢几分钟,但这并不是问题。
- 报告服务器将一起配备 NLB。所有只读查询都将定向到 NLB,从而将负载分散到各个服务器。
答案1
在我看来,这听起来像是可行的。只要您只对 NLB 名称进行查询。但是,我会仔细研究 MS SQL 部署和架构文档,看看是否有任何内容说“以这种方式构建,注意执行 X 而不执行 Y”或“由于 Frob,它根本行不通。”
答案2
如果有多台服务器运行 Reporting Services,并且所有服务器都查询单个数据库引擎服务器,那么是不是更好呢?
RS 根本没必要在同一台机器上使用 DE。
关于 NLBing Reporting Services:是的,你可以这样做,但有一些注意事项。请参阅http://technet.microsoft.com/en-us/library/cc281307.aspx。
答案3
常见的瓶颈是分销商。确保不要让发布商充当自己的分销商,因为许多(“无限制”)扩展订阅者对分销商的负担会变得相当大。一种解决方案是分阶段分发,让其中一个订阅者(或多个)也充当发布商/分销商。这样,可以将更多订阅者添加为该二手出版物的订阅者,而不会给原始分销商增加进一步的负担。
但考虑到 Reporting Services 的缓存功能和丰富的内置扩展功能(请参阅规划横向扩展部署),人们不禁要问,这样的复制拓扑是否真的有必要。