{{ selected_gold.title }}

  • ¥ {{ selected_gold.original_price }}
  • ¥ {{ selected_gold.price }}
  • {{ selected_gold.number_of_order }} 人订阅
  • {{ selected_gold.total_likers_count }}
    由 {{ selected_gold.creator_name }} 编辑

    {{ title }}

    请登录购买({{ selected_gold.price }}元),即可解锁剩余教程
    点击购买

    • Air
    • 2019年8月21日

    基于AWS的单体服务VS分布式服务

    有了之前AWS产品的介绍,接下来就是要将这些服务组合在一起,形成一个可靠稳定的系统。这篇文章将基于WordPress应用来介绍AWS的云产品是如何支持WordPress分布式运行的。以下是一篇分布式WordPress服务的架构图!

    什么是WordPress?

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。

    WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。

    WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。

    WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。

    基于单体部署的WordPress服务

    WordPress一开始就是基于单台计算机上设计的,因此我们接下来看看如何在单台计算机上部署WordPress服务。下图是WordPress部署在一台虚拟机上的结构图:

    WordPress的文件类型有2种:静态文件和动态生成的文件。静态文件有常见的图片、CSS、JS文件,而动态文件则有通过PHP程序生成的文章内容。因此为了加快访问WordPress站点的服务,则需要把这2部分数据剥离开来,比如上图使用了S3存放静态文件,LightSail运行PHP脚本生成文章内容。为了将这些静态文件和动态文件能够快速的分发给终端用户,则需要添加CloudFront服务。要想让全球用户能访问到这个WordPress站点,则需要使用Route 53服务。

    到目前为止,这个简单的WordPress站点就已经部署完成了。互联网上的用户能够通过Route 53这个服务快速访问该WordPress站点。当用户量不多的时候,这种方案是一种不错的选择,但是随着访问该WordPress站点的流量变得越来越多的时候,那这个时候就需要考虑接下来要介绍的分布式WordPress部署方案。

    可伸缩的WordPress部署方案

    我们常见的分布式服务不是一开始就有的,而是随着业务场景变得复杂而被迫使用分布式设计原则。一个分布式服务是由许多微小的服务组成,每一个微小的服务都有着单一的功能,比如专门用于用户验证的服务、负载均衡服务、数据库服务、搜索服务、缓存服务、监控服务等等。在这些服务之上是应用一整套设计原则使得这些服务能够有效地形成一个有机整体,这些原则有Micro-Service、Replicated、Sharded等等。

    分布式系统的一些特点是可扩展(scalable)、可伸缩(elastic)、持续可用(available)、可容错(fault tolerance)。因此当WordPress以分布式的方式部署能够带来以下好处:1.支持上百万人同时访问WordPress站点;2.全年7x24小时正常运行。下图为分布式WordPress的部署架构图:

    上图呈现了在AWS上部署WordPress分布式服务的最佳实践。成千上万的终端用户通过Route 53找到WordPress服务并通过CloudFront (1)来加快访问速度。CloudFrontS3 bucket (2)拉取网站所依赖的静态资源,同时通过Application Load Balancer (4)来获取动态内容,这些内容是由运行在EC2 instances (6)上的WordPress生成的,这些EC2 instances (6)是由Auto Scaling根据访问人数多或少来动态增减。ElastiCache(7)缓存用户经常使用的数据来加快响应速度。Amazon Aurora MySQL instance (8)用于存储WordPress的所有动态内容。所有WordPress Instance共享来自Amazon EFS file system的数据,Amazon EFS file system是通过EFS Mount Target (9)挂接到WordPress Instance上的。Internet Gateway (3)使得VPC里的部分资源能够被互联网上的用户访问。NAT Gateways (5)使私有子网(App和Data)能够访问互联网但是互联网无法访问它们。

    参考

    1. WordPress:Best Practices on AWS