52 | 深入浅出网站可扩展性架构设计

可扩展性,指的是网站的架构设计能够快速适应需求的变化,当需要增加新的功能实现时,对原有架构不需要做修改或者做很少的修改就能够快速实现新的业务需求。

衡量网站可扩展性设计优秀与否的主要标准,就是增加新功能的时候对原有系统的影响是否足够小。

提升网站可扩展性性的核心,就是降低系统各个模块和组件之间的耦合。耦合程度越低,各个模块和组件的复用可能性就越大,系统的可扩展性也会越好。

从现在来看,实现网站可扩展性架构的主要技术手段包括事件驱动架构和微服务架构。

微服务

在微服务架构下,一个大型复杂软件系统不再由一个单体组成,而是由一系列的微服务组成。其中每个微服务可被独立开发和部署,各个微服务之间是松耦合的。每个微服务仅专注于完成一件任务,并要很好地完成该任务。

在微服务架构下,当网站需要增加新功能时,我们除了可以添加新的业务逻辑外,还可以利用原本已经存在的微服务来构建新的功能。由于服务和服务之间是相互隔离的,并且单个服务还可以被其他多个服务复用,所以系统的可扩展性会比较好。

事件驱动架构

事件驱动架构的落地靠的是消息队列。

事件驱动架构设计的出发点源于这样一个事实:系统的各个模块之间的协作不是通过直接的调用关系来实现的,而是通过事件消息来传输事件消息,而各模块之间并没有直接的调用关系、保持松散的耦合关系。

事件驱动架构最典型的一个应用就是操作系统中常见的生产者和消费者模式,将其应用到网站设计中就是分布式消息队列。

引入消息队列后,测试人员需要额外关注的点

  • 从构建测试数据的角度来看,为了以解耦的方式测试系统的各个模块,我们就需要在消息队列中构造测试数据。这也是为什么很多互联网的自动化测试框架中都会集成有消息队列写入工具的主要原因。

  • 从测试验证的角度来看,我们不仅需要验证模块的行为,还要验证模块在消息队列中的输出是否符合预期。为此,互联网的自动化测试框架中也都会集成消息队列的读取工具。

  • 从测试设计的角度来看,我们需要考虑消息队列满、消息队列扩容等情况下系统功能是否符合设计预期。

  • 除此之外,我们还需要考虑,某台消息队列服务器宕机的情况下,丢失消息的可恢复性以及新的消息不会继续发往宕机的服务器等等。


来源于 极客时间 茹炳晟 软件测试52讲

posted @ 2020-08-30 18:59  捷后愚生  阅读(342)  评论(0编辑  收藏  举报