use*_*321 7 php authentication web-services login
我有一个php webservice,可以调用(从手机)来执行某些任务.要完成这些任务,调用者必须"登录".处理身份验证的最佳方法是什么?
目前,我只是在使用SESSIONS.客户端调用登录API以及所需的任何其他API.但是我担心让20万人都打电话给这项服务并参加所有会议.我不确定服务器将如何响应.有小费吗?这通常如何处理?像facebook,flickr等....
如果这是由自定义客户端程序(即您的手机)而不是浏览器调用的,那么为什么要“登录”呢?相反,只需使用 HTTP 身份验证(如果您要使用 SSL,则可以是 DIGEST 或 BASIC,或者是您自己的方案),然后每次都“登录”。
那么你就不必担心会话、负载平衡和故障转移等问题。保持无状态。
附加物:
当然,对数据库的点击越少越好,这只是一般规则。但与此同时,对数据库的许多命中是由数据库服务器上的缓存页面或可能的应用程序缓存处理的,因此它们永远不会命中数据库服务器。因此,在某些情况下,特别是针对索引列的单行查询,数据库命中可能非常便宜。
现在,人们可能会考虑如果它们都被存储并且易于访问,那么数据库的缓存位和唯一的用户会话之间的真正区别是什么。
嗯,主要的区别在于数据的契约。缓存项目的生命周期与您拥有的内存量和发生的未缓存活动量成正比。给它少量的内存,缓存的项目的寿命可能很短。给它大量的内存,缓存的项目就有更好的机会保留下来。如果缓存数据的内存量足够大,以至于该数据的重复活动继续使用缓存,那么缓存就是一个巨大的胜利。如果您的缓存回收速度如此之快,那么缓存“中”就没有任何内容,那么您的缓存几乎没有任何价值。但重点是系统无论有没有缓存都会工作,缓存只是一种性能增强。
然而,会话有不同的合同。许多会话都有特定的最短生命周期,通常以分钟为单位:10 分钟、20 分钟,甚至 30 分钟。
这意味着,如果用户只访问您的网站一次,您就必须为该用户分配资源,即使他再也没有回来。你必须这样做,否则会话实际上没有任何价值。
如果您获得大量流量,则需要管理大量新会话。理论上,在恶劣的情况下,会话数可以无限制地激增。如果您的网站突然获得 10,000 次点击,您需要在会话的最短生命周期内管理这些点击的剩余部分。您必须为它们分配资源(内存或磁盘),必须跟踪它们,然后不可避免地必须清理它们。
缓存是一种固定资源。它只会增长到您配置的大小。您没有义务在缓存中保留任何内容,并且如前所述,无论有没有缓存,系统都可以正常运行。缓存自然会回收。如果您获得 10,000 次点击,他们可能会滚动您的缓存,但之后它们不会在您的系统上留下任何痕迹。它们可能会在 1 或 2 分钟内击中并消失,再也不会出现。
最后,对于会话,您需要在基础设施之间共享它们,以便在用户从一台机器跳到另一台机器时(无论出于何种原因),它们会与用户一起移动。缓存则不然。理想情况下,您希望将用户保留在一组资源的本地,以便缓存可以完成其工作,但无论他们移动还是停留,系统都可以正常工作(因为缓存重用,如果他们留下来,效果会更好)。如果你不复制你的会话,它们根本不起作用。
DB 点击量累加起来,它们可能很便宜,但它们从来都不是免费的。但会话也有其自身的成本,因此考虑它们以及它们如何在您的架构中应用非常重要。
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |