逻辑服务器

 针对现有.net 的socket tcp来说性能是非常不错的,以现有普通服务器的配置挂载几W以上的长连接每秒处理几W的请求应答从网络吞吐能力来说完全可以应付。不过实际应用并不可能这么简单,既然有所求就必然要处理一些逻辑上的工作。如果让一台普通服务每秒去处理几W的数据逻辑似乎有点不太现实现事情,所以就产生了这种架构的想法前置一台代理服务器,后面挂N台逻辑服务器。大概网络布局如下:  

从规划上用户的所有访问只需要针对代理服务器,并不用关心后面的具体工作;原理就是代理接受请求消息后把消息负载到不同的逻辑服务器处理,逻辑服务器处理完成后把结果发送给代理服务,由 代理服务 再反还给具体的用户。这样即使面对更多的逻辑处理的时候只需要在agent后面加设逻辑服务器即可以,这样也可以达到逻辑服务器备分功效。

不过认真的想一下发现这样其实是满足不了应用,因为有很多情况我们希望某些消息由那些逻辑服务器接管处理;如希望某些服务专门处理一些数据更新操作,而数据查询获取则由其他逻辑服务器来处理。这样我们就需要在代理服务那里添加一个消息路由功能,用户可以在代理服务器时配置消息路由关系.

通过消息路由配置功能,可以划分不同消息分布在不同的逻辑服务器上处理.

提供消息配置路由后消息负载处理的更加灵活,但认真再想一下还会发现其他的一些问题。假设A用户的登陆逻辑是在S1里完成验证,后面的一些逻辑处理由S2来负责。这个时候就要面对一些比较复杂的情况了,S2服务器如何知道A用户的登陆信息包括具备怎样的数据操作权限。因此必须提供一个上下文信息是跨越不同的逻辑服务器.

通过上下文对象不同逻辑服务器共享用户信息。

以上设计似乎已经满足实际的需要,不过数据安全这一点还是应该注意的,所以还需要数据加密的功能添加到代理服务器中。许可使用者扩展实现消息加密功能。

以上是一个完整的应用构想,打算对组件应用扩充;有这方面经验的朋友不妨发表一下自己的看法和见解。

专注于可靠、高性能的Socket TCP通讯组件
原文地址:https://www.cnblogs.com/Leo_wl/p/2517921.html