西西木科技-专业的shopify liquid开发机构-前端JS丨react后端丨API接口丨shopify plus丨外贸独立站
1、大型网站系统的特点
高并发、大流量:需要面对高并发用户、大流量访问。 谷歌日均PV数为35亿,日均IP访问量为3亿。 2011年,腾讯QQ最大在线用户数为1.4亿,淘宝双数,2012年第11届活动单日交易额为191亿,活动第一分钟独立用户就达到1000万。
拓展:PV、UV、IV的概念
PV:PV浏览量(Page View),即页面浏览量。 每次打开页面时PV计数+1,刷新页面时也是如此。
UV:UV访问量(Unique Visitor)是指独立访客访问量。 一台电脑终端就是一位访客。
IV:IV为IP访问次数,指独立IP访问次数。 计算是根据一个独立IP在一个计算周期内访问该网站的IP访问次数来计算的。 同一计算周期内,无论该IP被访问多少次,均计为1次。计算周期包括1天为1个计算周期、1小时为1个计算周期。
高可用:7*24小时不间断服务。 大型网站的宕机通常会成为焦点,比如2010年的百度域名被黑客劫持事件、双11淘宝宕机事件、12306网站并发过高宕机事件、微博流量明星宕机事件等。
海量数据:海量数据需要存储和管理,需要大量的服务器。 Facebook每周上传近10亿张照片,百度收录数百亿个网站,谷歌拥有近百万台服务器为全球用户提供服务。
用户分布广泛,网络情况复杂:多家大型互联网公司向全球用户提供服务做一个大型网站;大型网站架构设计10步,大流量高并发无需恐慌,各地网络情况差异较大。 国内各运营商之间的网络互通还存在问题。 中美光缆的多次故障也引发了问题。 许多互联网企业不得不考虑在海外建设数据中心。
安全环境差:由于互联网的开放性,大型互联网企业更容易受到黑客的攻击,例如Facebook用户泄露事件。
需求快速变化、发布频繁:与传统企业级应用不同,互联网企业为了快速适应市场、满足用户需求,发布产品的频率非常频繁。而中小型互联网企业的发布频率甚至更高。更高,有时一天十次以上。
渐进式发展:与传统行业一开始就规划好所有功能性和非功能性需求不同,很多大型互联网公司都是从小公司做起,逐步发展的。 Facebook创始人扎克伯格在哈佛宿舍开发它,阿里巴巴诞生在马云的客厅里。 好的互联网产品都是迭代的,并不是一开始就发展得好的。
2.大型网站的演变
1. 网站初期架构
大网站是由小网站发展而来的,网站架构都是一样的。 网站刚建立时,还处于起步阶段,访问量较小。 一台服务器就足够了,也是大多数企业级应用的选择。
应用程序、数据库和文件都部署在服务器上。 通常服务器使用Linux做一个大型网站,应用程序使用PHP,然后部署在Apache上。 数据库使用MySQL。 它可以通过汇集各种开源软件和廉价的服务器来开发。
2、应用服务与数据分离
随着业务的发展,一台服务器已经不能满足业务需求:用户访问越来越多,导致性能越来越差跨境独立站,数据越来越多,导致服务器存储空间不足,这就需要应用和数据分离。数据分离,整个网站使用三台服务器,应用服务器、文件服务器、数据库服务器。
应用和数据分离后,不同特性的服务器承担不同的服务角色。 网站的并发处理能力和数据存储得到了极大的提升,支撑了业务的进一步发展。但随着业务的增加、访问量的增加,网站再次面临挑战。 数据库压力过大导致访问延迟,进而影响整个网站的性能,影响用户体验。
3.使用缓存来提高网站性能
现实世界中网站访问量和财富分配的特点通常符合80/20法则:80%的商家访问集中在20%的数据上,而淘宝买家浏览的产品则集中在一小部分数据上。交易量高、评价好的产品数量; 百度搜索的关键词集中在少数热门词,你也会浏览搜索词前两页的内容。
由于大多数浏览只会关注一小部分数据,那么这些数据是否可以缓存并存储在内存中呢? 这样是否可以减轻数据库的压力,从而提高整个网站的数据访问速度,提高数据库的性能呢? 写入性能怎么样?
网站缓存有两种类型:缓存在本地服务器上的本地缓存和缓存在远程服务器上的远程缓存。 本地缓存的访问速度比远程缓存快。但是由于应用服务器的内存限制,经常会出现本地缓存和应用程序争夺内存的情况。 这种情况在远程服务器上不存在。 远程分布式缓存可以使用集群。 部署大内存的服务器使用专用的缓存服务器,理论上可以提供不受内存限制的缓存服务。
使用缓存后,数据库访问的压力得到有效改善,但单个应用服务器能够处理的连接数有限。 在网站访问高峰期,应用服务器会成为网站的瓶颈。
4、利用应用服务器集群,提高网站的并发处理能力
使用集群是解决高并发、海量数据问题的关键手段。 当一台服务器的处理能力和存储空间不足时,不要试图更换存储容量更大的服务器,而是考虑集群部署做一个大型网站,因为对于大型网站而言,无论服务器的性能有多么强大,无法满足网站业务的持续增长。
应用服务器集群部署以及使用负载均衡服务器进行负载控制,可以改善流量高峰对应用服务器的压力,避免单台服务器承受更多的请求压力。如果请求较多,可以在现有的基础上增加更多的应用服务器。
5、数据库读写分离
使用缓存后,可以改善一些数据库访问压力,使得大部分数据读取操作无需经过数据库即可完成。 然而,仍然有一些读操作(缓存访问未命中、缓存过期)和所有写操作都会直接访问数据库。 、网站达到一定规模后,也会增加数据库的压力
目前主流数据库大多提供主从热备功能。 通过配置两个数据库建立主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器。 网站可以利用这一特性,实现数据库读写分离的功能,从而改善数据库的压力。
当应用程序写入数据时,它会访问主服务器。 读取数据时,访问从服务器。 主数据库通过主从复制功能将数据同步到从服务器,这样当有读操作时,就会直接访问从服务器。 ,当有写操作时,会直接访问主服务器。 为了方便应用程序访问读写分离的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用程序透明。
6.使用反向代理和CDN来加快网站响应速度
随着网站规模的不断扩大,用户数量也越来越大。 由于国内网络条件复杂,不同地区的用户访问网站的速度也存在较大差异。研究表明,网站访问延迟与用户流失率呈正相关。 网站访问速度越慢,用户流失率就越快。 因此,为了提供更好的用户体验并留住用户,网站需要更快的访问速度。 主要手段是使用CDN和反向代理
CDN和反向代理的基本原理都是缓存。 不同的是,CDN部署在网络提供商的机房内,这样当用户请求网站服务时,可以从离自己最近的机房获取数据; CDN则部署在网站的中央机房。外贸建站,当用户请求到达中心机房时,首先访问的服务器是反向代理服务器。 如果反向代理服务器缓存了资源,就会直接返回给用户。
使用CDN的目的是尽快将数据返回给用户,这样可以加快访问速度,减轻服务器的压力。
7.使用分布式文件系统和分布式数据库系统
任何强大的单一服务器都无法满足大型网站不断增长的业务需求。 读写分离后,数据库从一台服务器拆分为两台服务器。 然而,随着网站业务的发展,已经不能满足业务的需求。 需要使用分布式存储服务器。 文件系统也可以这样做。 需要使用分布式文件。 系统。
分布式数据库是网站数据库拆分的重要手段,只有在单表数据很大的情况下才会使用。 除非必要,网站最常用的数据库拆分方式是业务分库。 将不同业务的数据部署在不同的服务器上。
8.使用NoSQL和搜索引擎
随着网站业务的扩展,对数据存储和检索的要求越来越高。 网站需要采用一些非关系型数据库技术如NoSQL以及非数据库查询技术和搜索引擎。
NoSQL和搜索引擎都是源自互联网的技术手段,对可扩展的分布式特性有更好的支持。 应用服务器通过统一的数据访问模块来访问各种数据,减轻应用程序管理众多数据源的负担
9. 业务分割
为了应对日益复杂的业务场景,大型网站采用分而治之的方法,将整个网站的业务拆分为不同的产品线。 例如,大型购物交易网站会将首页、店铺、订单、买家、卖家等拆分为不同的产品线,由不同的业务部门管理。
具体到技术上,产品也会按照产品线来划分,一个产品会被拆分到不同的应用领域。 每个应用程序都是独立部署和维护的。 应用程序之间的关系可以通过超链接恢复,也可以通过消息队列分发数据。 当然,最常见的方式是访问同一个数据存储系统,形成关联的完整系统。
10.分布式服务
随着业务部门越来越小,存储系统越来越大,应用系统的整体复杂度呈指数级增长,部署也越来越困难。 因为所有的应用程序都必须连接到数据库系统。 在拥有数万台服务器的网站中,这些连接的数量是服务器大小的平方。 这会导致数据库连接资源不足。 拒绝服务。
由于每个应用系统都需要执行许多相同的业务操作,因此可以提取相同的业务。 业务可以拿这些来连接数据库。 提供公共商务服务。
当大型网站发展到这个地步,基本上大部分技术问题都可以解决了。 跨数据中心的实时数据同步以及特定网站业务相关问题等问题可以通过结合和改进现有的技术架构来解决。
3. 大型网站架构演进的价值
1、大型网站架构技术的核心价值是灵活响应网站的需求
大型网站架构技术的核心价值不是从无到有建立一个大型网站,而是随着小型网站业务的逐步发展,慢慢演变成大型网站。在这个过程中,不需要放弃任何东西,也不需要推翻任何东西。 技术选择非常重要。 所有大公司如FaceBook、Google、淘宝都遵循这样的发展道路。
2、推动大型网站技术发展的主要力量是网站业务的发展
创新的业务发展模式对网站架构提出了更高的要求,这使得创新的网站架构得以发展和成熟。 商业创造技术,事业创造人。 而不是相反。
4、网站架构设计的误区
1.盲目追随大公司的解决方案
2. 为技术而技术
3.尝试用科技解决一切问题
西西木科技是shopify官方合作伙伴,通过了Shopify Partner Academy认证,具备多年shopify lic主题开发经验,熟悉Liquid和各项计算机语言。