登录,是第二种以数据为中心的服务,它本质上就是以数据为单一结点的。也就是说,登录在逻辑概念上,就是数据单点的。登录的问题通常包括并发数量巨大、容易形成访问峰值,以及逻辑过长三种情况。
第一种情况通常在大规模的应用中都必然会出现,例如Gmail或者QQ。当规模渐增,且我们必须“先完成登录验证再提供服务”时,登录逻辑的CPU消耗总量是不可能消减的。解决这一问题的基本方法是增加“登录服务”的物理服务器的数量,例如在QQ客户端上加入一个登录服务器列表,按照客户端的QQ号Hash到某个服务器去登录。又例如Web客户端(或其他没有处理登录位置能力的客户端),则可以①这里的“同一个会话数据”即是指数据确定,并强制要求使用该会话数据的逻辑不得有update操作。
考虑通过DNS轮循来将请求投送到不同的服务器。
第二种情况常见于区域崩溃的恢复以及类似暴力攻击的时候。例如2007年台湾海峡的地震导致海底光缆断裂时,七条连接香港与外地的海缆中只剩下一条能维持有限度服务。在这种情况下,区域部署的系统(在软件与硬件上)都将受到访问峰值的冲击(访问浪涌)。即使不讨论这样极端的情况,在服务器维护进行重启后的短时间内,也通常会形成这样的峰值。而对于大多数在线系统(Online Service),首当其冲的就是登录服务。其原因便在于此前提到的:登录在逻辑概念上,就是数据单点的。应付浪涌的通常方法是“排队”,即在客户端或服务端添加有效的排队机制,将对登录服务的冲击控制在一定规模之下②。对于服务端来说,使用专用的队列服务,而不是依赖登录服务自身提供的任务池机制来处理也是相当重要的措施,专用队列可以负载更高,且对登录服务的处理能力不构成负面影响。对于客户端来说,提示用户“何时将会再次登录”是一个算法问题。事实上,我就遇到过同时打开某网站的十几个页面,而这些页面都卡在“短时间打开过多页面,请等待刷新”的提示页上。当使用浏览器的书签组功能时,这是常见的。这些页面采用的刷新值都是5秒钟,而十来个页面请求在5秒钟后“同时投送”到服务端的几率是相当高的。当你将这些页面想象成客户端连接,你就知道客户端延迟会导致请求最终像“共振”一样趋向同时抵达服务端。于是在上面的例子中,服务端与客户端都将同时处于5秒钟的饥饿等待与5秒钟后突如其来的请求爆发当中。
第三个问题比较特殊,通常我们不会主动在登录中加入过多的逻辑,但那些看似“无可拒绝”的产品需求则是例外。其中,“登录+权限”是一个最经常的假设,另一个则是“登录+验证码”。对于前者,事实上可以作为两个结点来进行设计,如果我们也将登录信息与权限信息设计为不同的数据的话。对于后者,其计算的复杂性在于获取和核查验证码导致的外部调用(我们通常不会把验证码系统做在登录服务内),而这通常是通过验证码的预生成和本地缓存来解决的。然而还有一种特殊情况,即类似于在做第三方接入时,我们会异地验证用户的有效性。例如在系统中接入新浪微博账号,就需要远程调用其Open API并“等待”返回结果。第三方的计算复杂度或调用延迟将大大地拖慢登录服务的响应,进而导致CPU耗用很低而连接数很高(处于大量等待)的情况。从本质上来说,这也是因为在登录中加入了其他逻辑而导致的。
综合上述情况,如果系统中必然出现“(数据的或逻辑的)单点”,则应当一方面①通过配置DNS服务,使相同的域名解析为不同的IP,对应于不同的物理服务器。yipindushu.com
②所谓“一定规模”,即是在服务上线前对“响应数/秒”的理论计算,也需在服务期间进行长期跟踪调适。运维与监控是大型系统中相当重要的组成部分。
③只不过它必然带来二次交互,或在登录中发生向权限服务的远程调用。但一旦将验证与权限设计为两种数据,则这两种方案替代的成本极小。我在实践中,就曾经要求在开发中使用一次交互(在登录服务中向权限服务远程调用),而在上线时使用二次交互并分别部署登录与权限服务。
在单点服务内部入手,消减逻辑复杂度并剥离出更轻巧的服务,以减少单点逻辑的规模、提升服务性能;另一方面从客户端与服务端两面入手,尝试提供更合理的“请求-响应”逻辑,保障服务提供的体验;第三个方面则要努力尝试通过逻辑与数据的分布来消灭单点本身。
【◆】
对于第三个方面,作为登录以及类似这样的服务,是否有可能设计为不是单点?数据镜像机制提供了一种可能,这也是我们要谈到的第三种以数据为中心的服务。其根本出发点在于通过后台的镜像与同步机制,将数据作为不变对象以保障逻辑对“数据的位置”的不知觉性。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【系统的基本组织方法与原理7:http://www.yipindushu.com/xuexifangfa/16442.html
推荐文章
09-13
1 温暖励志的心灵语,给予无尽力量09-03
2 哲理唯美的句子女生版09-03
3 青少年哲理语录09-11
4 除四害的推广宣传用语09-11
5 常用俗语讲土特产的