• 逻辑服务器


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

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

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

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

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

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

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

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

    专注于可靠、高性能的Socket TCP通讯组件
  • 相关阅读:
    Eclipse中的Web项目自动部署到Tomcat
    Linux之grep命令
    Linux之sort
    Python 字典中一键对应多个值
    手动下载python更新后 换回以前版本
    N个降序数组,找到最大的K个数
    蓄水池抽样算法
    空瓶子换水问题
    rand()产生随机数 及其和clock()的不同
    C++复数运算 重载
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2517921.html
Copyright © 2020-2023  润新知