High performance solution - lamondlu/Library GitHub Wiki

整个项目采取分布式架构并采用部分微服务思想,提高项目的易扩展,易维护能力。

Web App部分

前端使用Nginx做负载均衡,将用户导向到不同服务器的项目实例,从而减轻单个服务器的负担

Api服务部分

由于Api服务和业务处理完全解耦,所以Api服务的性能压力大部分来自于查询,当服务器压力仅来自请求数量,可以使用Nginx做负载均衡,添加新服务器搭载响应的Api服务,以便解决大量查询请求的问题。

报表数据库

当数据查询性能成为瓶颈时,可以搭建SQL Server故障转移集群(搭建方法参见链接), 创建多个辅助库,分担数据库压力。

Handlers

The handler connect RabbitMQ with Work Queue, so when all the handlers are overload, it is easy to start another new handler instance to handle extra command/event.

SignalR

SignalR support Scaleout. It use the backplane to sync the message among different SignalR instance. There are 3 type backplane.

  • Azure Service Bus.
  • Redis
  • SQL Server

How to enable Scaleout in SignalR?

Link)