企业常用的架构
1、首先nginx做一个负载均衡分发到不同的web服务器
2、db数据库做lvs集群,一个master主节点,n个slave从节点(后端的slave节点也可以做负载均衡集群),master只做重要数据写入,两台slave做对用户提供读数据操作的功能,一台slave做备份用,一台slave做内部数据运算、范围查询等功能
3、后端存储可以按业务拆分为不同的nfs(例如,www存放一处,blog存放一处,bbs存放一处),再大点就购买CDN节点服务,同时还可以做一个redis集群,查询先走redis,redis没有分给相应的后端存储服务器查询
超大型数据库支持在线自动扩容收缩技术
裂变原理(百度数据库做法):
前边用多台dbproxy代理,前期用1台master2台slave,每条数据的入库都会有一个累加的算法记录,打个比方,假如检测到数据库达到100w条数据瓶颈了,就会开始裂变;把其中一个slave拎出来,当做另一个master,第一个master下只保留1-50w数据,第二个master保留50-100w数据,然后在对应的master下边在挂上对应的slave节点,以此每次达到瓶颈就开始裂变,无限扩容
反之,当多个master节点存放的数据量少于算法下限的时候,就开始收缩,把m3的数据合并到m2上,并更新对应的记录索引,即查m3范围的数据时,自动分配到m2节点上面
中小规模企业架构
1、用户通过外网访问nginx的负载均衡端(中间要过防火墙),静态页面直接去nginx静态服务器去拿,动态的请求到动态web服务器上
2、动态服务器根据请求内容是读还是写来判断,读直接去redis集群拿,写的话去共享存储的集群,同时共享存储的backup服务器通过rsync实时复制一份,静态资源相应的nginx静态服务器也复制一份
3、所有的后端服务器全部是内网IP,设置一台vpn服务器对其访问做限制,访问后端服务器只能通过vpn的方式,在该台机器上还可以做相应的zabbix监控软件,Ansiable批量管理软件,yum内网仓库源,以及ntp时间同步服务器
4、运维人员通过外网vpn拨号连接到内网网段对其进行操作
大型企业架构
1、用户通过外网访问4层的lvs负载均衡,访问到相应7层的nginx负载均衡(中间要过防火墙),分发到后端的tomcat或者php服务器,
2、动态服务器根据请求内容是读还是写来判断,读直接去redis集群拿没有的话去负载均衡的slave数据库服务器拿,写的话去mysql的双主服务器写,写完后会复制到相应的slave数据库服务器,s1对外提供服务,s2作为内部查询运算使用,并定期对其做数据备份
3、备份的数据服务器会实时复制到集群共享存储服务器上,共享的存储服务器通过mount挂载到相应的php服务器或者tomcat服务器,对外提供访问
4、所有的后端服务器全部是内网IP,设置一台vpn服务器对其访问做限制,访问后端服务器只能通过vpn的方式,在该台机器上还可以做相应的zabbix监控软件,Ansiable批量管理软件,yum内网仓库源,以及ntp时间同步服务器
5、运维人员通过外网vpn拨号连接到内网网段对其进行操作