抓取网页数据php(一个、高性能和高扩张性的角度来说说我的一些经验)
优采云 发布时间: 2022-02-06 20:18抓取网页数据php(一个、高性能和高扩张性的角度来说说我的一些经验)
一个小的网站,比如个人的网站,可以用最简单的html静态页面来实现,配上一些图片来达到美化效果,所有页面都存放在一个目录下,比如网站对系统架构和性能的要求非常简单。随着互联网服务的不断丰富,网站相关技术经过多年的发展,已经细分为非常精细的方面,特别是对于大型网站来说,使用的技术非常广泛,从硬件到软件都有,编程语言、数据库、WebServer、防火墙等领域都有很高的要求,不是原来简单的html静态网站可比的。
大型 网站,例如 Portal网站。面对大量用户访问和高并发请求,基本解决方案主要集中在以下几个环节:使用高性能服务器、高性能数据库、高效编程语言、高性能Web容器。但是除了这些方面,没有办法从根本上解决大网站面临的高负载、高并发问题。
上面提供的几种解决方案在一定程度上也意味着更大的投入,而且这种解决方案存在瓶颈,不具备很好的扩展性。我从低成本、高性能和高扩展性的角度来谈一谈。说说我的一些经历吧。
1、HTML 静态
其实我们都知道纯静态的html页面效率最高,成本也最低,所以我们尽量使用静态页面来实现我们网站上的页面。这种最简单的方法实际上是最有效的。方法。但是对于内容量大、更新频繁的网站,我们无法一一手动实现,于是出现了我们常用的信息发布系统cms,比如各个门户的新闻频道我们经常访问的网站,甚至他们的其他渠道都是通过信息发布系统进行管理和实施的。信息发布系统可以实现最简单的信息录入,自动生成静态页面。还可以具有频道管理、权限管理、自动抓拍等功能。对于大型 网站
除了门户和信息发布类型网站,对于交互性要求高的社区类型网站,尽可能保持静态也是提高性能的必要手段。社区发帖,文章实时静态化,有更新时再静态化也是一种被广泛使用的策略。猫扑的大杂烩使用了这样的策略,网易社区也是如此。
同时,html静态化也是一些缓存策略使用的手段。对于系统中频繁使用数据库查询但内容更新量较小的应用,可以考虑使用html静态化来实现,比如论坛中的论坛的公开设置信息。这些信息目前所有主流论坛都可以后台管理,并存储在数据库中。其实很多这些信息都是前台程序调用的,只是更新频率很小。后台更新时可以考虑将这部分内容设为静态,避免大量数据库。访问请求。
2、图像服务器分离
众所周知,对于web服务器来说,无论是Apache、IIS还是其他容器,图片是最耗费资源的,所以需要将图片与页面分离,这基本上是大网站所采用的策略,他们都有独立的图像服务器,甚至很多图像服务器。这样的架构可以减轻提供页面访问请求的服务器系统的压力,并且可以保证系统不会因为图像问题而崩溃。应用服务器和镜像服务器可以进行不同的配置优化。比如apache可以尽量配置ContentType。更少的支持和尽可能少的 LoadModule 确保更高的系统消耗和执行效率。
3、数据库集群和库表哈希
大型网站都有复杂的应用,而这些应用必须使用数据库,所以在面对大量访问时,很快就会出现数据库的瓶颈,一个数据库很快就无法满足应用,所以我们需要使用数据库集群或库表哈希。
在数据库集群方面,很多数据库都有自己的解决方案。Oracle、Sybase 等都有很好的解决方案。MySQL提供的常用的Master/Slave也是类似的解决方案。你用的是什么DB,请参考对应的解决方案。解决方案来实施。
上面提到的数据库集群在架构、成本和可扩展性方面受到所使用的数据库类型的限制。因此,我们需要从应用的角度考虑改进系统架构。库表哈希是最常用和最有效的解决方案。. 我们在应用中安装业务和应用或者功能模块来分离数据库,不同的模块对应不同的数据库或者表,然后按照一定的策略对一个页面或者功能进行较小的数据库hash,比如user table, Hash the根据用户ID创建表,可以低成本提高系统性能,具有良好的可扩展性。搜狐的论坛采用了这样的结构,将论坛的用户、设置、帖子等信息从数据库中分离出来,然后根据section和ID对posts和users的数据库和表进行hash,最后可以在配置文件中简单配置。可以随时将低成本数据库添加到系统中,以补充系统性能。
4、缓存
缓存这个词已经被技术触及,很多地方都用到了缓存。开发中的网站架构和网站缓存也很重要。这是最基本的两种缓存。稍后将描述高级和分布式缓存。
对于架构上的缓存,熟悉Apache的人可以知道,Apache提供了自己的缓存模块,也可以使用额外的Squid模块进行缓存,两者都可以有效提高Apache的访问响应能力。
网站程序开发缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在web开发中使用。比如在Java开发的时候,可以调用MemoryCache来缓存和共享一些数据。大型社区使用这样的架构。另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java有更多,.net不是很熟悉,相信一定有。
5、镜像
镜像是*敏*感*词*网站常用的提高性能和数据安全性的一种方式。镜像技术可以解决不同网络接入商和地区造成的用户访问速度差异。比如ChinaNet和EduNet的区别,促使很多网站在教育网建立镜像站点,数据定期或者实时更新。关于镜像的详细技术,这里不再赘述。有许多专业的现成解决方案架构和产品可供选择。还有便宜的软件实现思路,比如Linux上的rsync等工具。
6、负载均衡
负载均衡将是 large网站 解决高负载访问和大量并发请求的终极解决方案。
负载均衡技术发展多年,有很多专业的服务商和产品可供选择。我个人遇到过一些解决方案,有两种架构供大家参考。
想学习 Dubbo 框架、zookeper 基本原理、redis 分布式缓存、JVM 性能优化、Nginx+apache+Tomcat 集群部署、大数据hadoop、Hbase 实时计算spark、storm、数据分析分词和权重等核心技术; 关注后私信,记得点赞转发!!!