第55章 如果企鹅要做(2 / 2)
很多时候,用户要的不是绝对实时,是『看起来实时』。」
叶明愣了一下,把这句话也记下来。
叶明又问:「那排行榜的静态页面放在哪里?放在自己伺服器上就行吗?」
张老师点头:「放你自己伺服器上就行。用户访问的时候直接读静态文件,压力小很多。」
叶明追问:「那如果流量再大呢?静态页面也扛不住的时候怎么办?」
张老师笑了,在白板上又画了几个框,连成一张图:「做负载均衡。
前面加一个分发器,后面挂多台伺服器。
用户的请求先到分发器,分发器决定交给哪台伺服器处理。
这样每台伺服器的压力都变小了,整体能扛的流量就上去了。」
叶明盯着白板看了一会儿:「那用户的数据怎么办?比如用户登录了,下次请求被分到另一台伺服器,不就丢了?」
张老师笑了:「问到点子上了。所以得把用户会话单独拎出来,放Redis里。
Redis是一种内存资料库,读写速度极快。
所有伺服器共享一份会话数据,用户不管被分到哪台机器,都能读到自己的登录状态。」
叶明追问:「Redis也是存在内存里的?那和MySQL有什么区别?」
张老师在白板上又画了一个框,标上Redis:「MySQL是硬碟资料库,数据存在硬碟上,读写慢,但容量大丶持久化。
Redis是内存资料库,数据存在内存里,读写快几十倍,但容量小丶断电就丢。
所以各司其职。MySQL存持久化数据,Redis存临时会话和缓存。」
叶明把这些都记下来,又问:「那事件库呢?多台伺服器共享,每台都得有一份?」
张老师点头:「对。事件库是文本文件,每台伺服器都得放一份。更新的时候要同步,麻烦一点,但也不是不能做。」
↑返回顶部↑