
1、逻辑优化
如何进行逻辑优化,在搜索网站并发优化的相关内容时,很多有提到逻辑优化,但并没有实际能直接拿来使用的介绍;这主要是不同网站性质不同、具体逻辑不同,所以只能片面的给到总结,而不能给到具体执行方案,在此根据个人经验做些总结:
1.1、合理前后端分离:前后端分离、可以加快页面打开速度,不至于数据完全加载完,才显示页面,造成用户认为网站无法打开;
1.2、尽量将逻辑放到前端处理:一些逻辑后端可以处理,前端也可处理,就将逻辑处理放到前端,一位放到后端处理、100个人访问,要执行100次的逻辑的压力都在服务器上,放到前端,就避免了服务器这部分逻辑的压力,能大大提高服务器性能;
1.3、判断语句尽量避免使用else:ifelse条件是必不可免的,但大量使用ifelse语句判断,不仅会使代码冗余,还会造成运算力下降,虽然这相对于其他影响站点的因素而言微乎其微,但在不影响逻辑正确性的情况下,仍要尽量使用return 或其它短短形式代替;
2、数据缓存:
缓存又可分为局部缓存或页面整体缓存;这也需要根据实际情况进行操作,对于内容更新不频繁扥网站,可以直接使用页面缓存,这样当多用户多次访问同一个页面时,有页面缓存,就避免了每次进行数据查询、运算等逻辑,能大大提高并发问题;
3、sql优化
我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。
3.1、首先应考虑在 where 及 order by 涉及的列上建立索引。 但索引也并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。 一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要
3.2、对查询进行优化,应尽量避免全表扫描:
where 条件句中对字段进行 null 值判断、使用!=或<>操作符、使用 or 来连接条件、in 和 not in 使用、 like 使用、表达式使用 、函数时候用等都会造成全表扫描,应尽量避免使用
3.3、创建表时尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。 这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
3.4、尽可能的使用 varchar 代替 char ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
3.5、任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
3.6、尽量避免大事务操作,提高系统并发能力。
3.7、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
4、动静分离
动静分离是将网站静态资源与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问达到动静分离的目标。
如果到了使用CDN的阶段,可以将不常改变的静态文件布置到CDN
5、CDN使用
CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络 ,是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术;
个人、小公司,甚至没有达到规模的大公司,不宜自己搭建CDN服务,因为成本太高,可以选择CDN服务商进行合作
6、数据库主从分离
将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈;主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发; 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性;
网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。
7、服务器负载均衡
负载均衡是指单台服务器性能达到极限时通过服务器集群来横向增加系统的吞吐量和性能,多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外供应效力而无须其他服务器的辅助。经过某种负载分管技术,将外部发送来的央求均匀分配到对称结构中的某一台服务器上,而接收到央求的服务器独登时回应客户的央求。均衡负载可以平均分配客户央求到服务器列阵,籍此供应快速获取重要数据,解决很多并发访问效力问题。这种群集技术可以用最少的出资取得接近于大型主机的性能。
负载均衡是一种动态均衡技术,经过一些东西实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去。
计算集中型的运用,比如电子商务网站,服务器计算负荷会很大;读写频繁的运用,比如网络数据库,存储系统则面临着检测;传输量大的运用,比如视频效力,数据总是无法快速传送,无法完结最好的效果;访问量大的运用,路由器与防火墙简略成为瓶颈。想要合理解决这些问题,晋级设备、改动拓扑是”笨办法”,相对巧妙的方法是选用负载均衡技术,用多个设备一起完结任务。
负载均衡技术根据现有网络结构,供应了一种扩展服务器带宽和增加服务器吞吐量的廉价有用的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。负载均衡的运用,可以有效地解决网络拥塞问题,可以就近供应效力,完结地理位置无关性(异地负载均衡)。同时,这项技术还能提高服务器的响应速度,提高服务器及其他资源的利用效率,防止网络关键部位呈现单点失效,然后为用户供应更好的访问质量
7.1、负载均衡的类型
(一)、根据DNS的负载均衡
经过DNS效力中的随机姓名解析来完结负载均衡,在DNS服务器中,可认为多个不同的地址配置同一个姓名,而最终查询这个姓名的客户机将在解析这个姓名时得到其中一个地址。因此,关于同一个姓名,不同的客户时机得到不同的地址,他们也就访问不同地址上的Web服务器,然后达到负载均衡的目的。
(二)、反向署理负载均衡
运用署理服务器可以将央求转发给内部的Web服务器,让署理服务器将央求均匀地转发给多台内部Web服务器之一上,然后达到负载均衡的目的。这种署理方式与一般的署理方式有所不同,标准署理方式是客户运用署理访问多个外部Web服务器,而这种署理方式是多个客户运用它访问内部Web服务器,因此也被称为反向署理模式。Apusic负载均衡器就归于这种类型的。
(三)、据NAT的负载均衡技术
网络地址变换为在内部地址和外部地址之间进行变换,以便具备内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址变换网关拥有的某一外部地址时,地址变换网关能将其转发到一个映射的内部地址上。因此如果地址变换网关能将每个衔接均匀变换为不同的内部服务器地址,尔后外部网络中的计算机就各自与自己变换得到的地址上服务器进行通讯,然后达到负载分管的目的。
7.2、负载均衡服务器的好处
由于网民数量激增,网络访问路径过长,用户的访问质量简略遭到严重影响,尤其是当用户与网站之间的链路被出人意料的流量拥塞时。而这种情况经常发生在异地互联网用户急速增加的运用上。这时候,如果在效力端运用负载均衡(GSLB)技术,就可以合理分管系统负载、提高系统可靠性、支持网站内容的虚拟化。在实际运用中,许多IDC,如互联通更是选用GSLB与Cache、Mirror相结合的方法来供应网络加速效力。负载均衡效力具有如下特点:
(一)、高智能化
运用虚拟IP(VIP)地址代表方针服务器和运用,将会话分配到最高可用性的服务器,全程监控每个会话,效力恢复后自动重新挂号,并转发客户机和服务器信息包时供应全地址变换。简略有用的负载均衡算法可以配置包括循环法、最少衔接法、散列法或最少失误法等多种不同的负载均衡方法,也可以对个别服务器配置最大衔接数量阈值和加权值,以防止服务器超载。
(二)、高可靠性
架构在专用的高速骨干网之上,该骨干网络供应延迟极小的网络连通性,然后保障GSLB的功能正常发挥和高性能,远远优于根据公网的GSLB。并且,当主站点机房的Internet 出口呈现毛病时,还能将用户自动、透明地从其他分站点Internet入口导向主站点服务器。
(三)、高可用性
选用热备份方法,在极短时间内对服务器链路、交换端口和交换机进行检测和毛病转移,使运用免受毛病影响;任何一个服务器或服务器群发生毛病或阻塞,用户将被自动引导到下一个最佳备份服务器或站点,然后更进一步提高了效力和内容的可用性。