本篇博客用来讲解面对千万级用户的访问时程序系统的设计原理。话不多说,上图:
- 用户通过PC端网站、移动端或者其他系统的调用,会产生一个请求,该请求通过nginx(一个网页服务器,并发量在几万左右)与tomcat交互,这时tomcat相当于一个消费者,去向zk集群(类似于注册中心,具有主从关系)中的对应的zookeeper购买服务,以服务一为例。zookeeper便会去向服务一的甲、乙俩家供应商随机一个索取服务。并逆向返回。最终到用户手中(例:PC端网站)。同时zookeeper会将服务一的甲、乙供应商的请求地址主动推送给消费者(tomcat,并发量在七百到八百左右),这样下次在购买该服务就可以直接联系供应商,而不通过zookeeper。
- 值得注意的是若其中一家供应商不再工作,zookeeper也会主动将此信息推送给消费者,当然有新的该服务的供应商出现,也会推送。二:tomcat也可以与redis(可理解为数据库,大约几十兆到几百兆)连接,用来在内存中存储各种类型数据。但是,计算机一旦关机,数据就会丢失。三:不同服务供应商之间还可以通过mq(消息队列)联系起来,mq也在内存中,但是计算机关机,数据不会丢失,而是保存在文件中,以便下次使用。四:对于供应商来说,对于不同供应商会有不同的数据库,但数据库对内是共用的。五:有的也会使用一个node.js(一个用js写的后台程序,功能是非强大,并发量在几万、几十万、几百万)它可以与许多程序连接如图所示。