浅谈一下可扩展性网站架构设计

xiaomowang xiaomowang     2022-11-28     769

关键词:

扩展性(Extensibility)-指对现有系统影响最小的情况下,系统功能可持续扩展或者提升的能力,表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应。它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。

1、构建可扩展性的网站架构

低耦合的系统更容易扩展、复用。

设计网站可扩展架构的核心思想时模块化,并在此基础上,降低模块间的耦合性,提高模块的复用性。

分层和分割不仅可以进行架构伸缩,也是模块化设计的重要手段,利用分层和分割的方式将软件分割为若干个低耦合的独立的组件模块,这些组件模块以消息传递及依赖调用的方式聚合成一个完整的系统。

在大型网站中,这些模块通过分布式部署的方式,独立的模块部署在独立的服务器上,从物理上分离模块间的耦合关系,进一步降低耦合性提高复用性。

2、利用分布式消息队列降低系统耦合性

2.1 事件驱动架构

事件驱动架构通过在低耦合的模块间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间的合作。典型的事件驱动架构就是操作系统中常见的生产者消费者模式。在大型网站中,最常见的实现手段就是分布式消息队列。

2.2 分布式消息队列

消息生产者应用程序通过远程访问接口将消息推送给消息队列服务器,消息队列服务器将消息写入本地内存队列后立即返回成功响应给消息生产者。消息队列服务器根据消息订阅列表查找订阅该消息的消息消费者应用程序,将消息队列中的消息按照先进先出(FIFO)的原则将消息通过远程通信接口发送给消息消费者程序。

在伸缩性方面,由于消息队列服务器上的数据可以看作是及时处理的,因此类似于无状态的服务器,伸缩性设计比较简单。将新服务器加入分布式消息队列急群中,通知生产者服务器更改消息队列服务器列表即可。

在可用性方面,为了避免消费者进程处理缓慢,分布式消息队列服务器内存空间不足造成的问题,如果内存队列已满,会将消息写入磁盘,消息推送模块在将内存队列消息处理完成后,将磁盘内容加载到内存队列继续处理。

3、利用分布式服务打造可复用的业务平台

分布式服务则通过接口分解系统耦合性,不用子系统通过相同的接口描述进行服务调用。

大型网站分布式服务的需求与特点:

负载均衡

失效转移

高效的远程通信

整合异构系统

对应用最少侵入

版本管理

实时监控

4、可扩展的数据结构

传统的关系型数据库为了保证关系运算的正确性,在设计数据库结构的时候,就需要指定表的schema——字段名称、数据类型等,并要遵循特定的设计范式,这些规范带来一个问题:难以面对需求变更带来的挑战,所以有人通过预先设计一些冗余字段来应对。

许多NoSql数据库使用 ColumnFamily设计来设计可扩展的数据结构。

好了,就先说这么多吧。吃饭了~

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

  查看详情

浅谈网站架构演变

浅谈网站架构   作为一个从事后台开发已经2年的程序员来讲,大部分时间都忙于业务逻辑分析,往往忽略了业务之上的架构层面的设计。本文作为网站架构知识的补充,不仅开拓了眼界,也对以后的程序设计益处多... 查看详情

转--《浅谈12306核心模型设计思路和架构设计》

12306这个系统,核心要解决的问题是网上售票。涉及到2个角色使用该系统:用户、铁道部。用户的核心诉求是查询余票、购票;铁道部的核心诉求是售票。购票和售票其实是一个场景,对用户来说是购票,对铁道部来说是售票。... 查看详情

浅谈基于prism的软件系统的架构设计

  很早就想写这么一篇文章来对近几年使用Prism框架来设计软件来做一次深入的分析了,但直到最近才开始整理,说到软件系统的设计这里面有太多的学问,只有经过大量的探索才能够设计出好的软件产品,就本人的理解,一... 查看详情

(转)浅谈千万级pv/ip规模高性能高并发网站架构

浅谈千万级PV/IP规模高性能高并发网站架构 原文:http://blog.51cto.com/oldboy/736710文章架构简图:  高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。如果把来访用户比作来犯的"敌人",我们一... 查看详情

《大型网站技术架构》--第七章:网站的可扩展架构

...源的方式来增加(减少)自身的计算处理事物的能力,在网站中经常指利用集群方式增加服务器数量,提高系统整体 查看详情

大型网站技术架构--网站的可扩展性架构(转)

http://blog.csdn.net/chaofanwei/article/details/29191073扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。        设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块... 查看详情

浅谈hdfs架构

...廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(LargeDataSet)的应用处理带来了很多便利 查看详情

浅谈数据仓库架构设计

1.数据中台与DW/BI/DSS个人认为数据中台本质上是一种新的适配大数据技术发展的新的“数据仓库-决策支持(商业智能)”架构。这个架构是构建在传统的架构基础之上,对传统架构的一种新的发展。数据中台从企业的... 查看详情

可扩展高可用负载均衡网站架构设计方案

...:将停止服务时间降低到最低甚至是不间断服务2、 可扩展性:随着访问的增加,系统具备良好的伸缩能力3、 可视性:系统、服务的状态处于一个实时的监控之下4、 高性能高可靠性:经过优化的体系结构及合理的备... 查看详情

mysql在大型网站的应用架构演变

...述在网站的不同的并发访问量级下,Mysql架构的演变可扩展性架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段... 查看详情

大型网站技术架构:核心原理与案例分析阅读笔记三

...用性、伸缩性、扩展性和安全性5个方面。下面简单介绍一下网站的高 查看详情

基于dolphinscheduler的使用浅谈数仓分层及模型设计

前言:本文旨在简单介绍DS的概述和架构上的设计,对其安装等不做展开介绍。之前了解了一下,很多小伙伴也在使用该产品。我呢,也是到现在公司后才开始接触并使用,对其“开发”的还不够深,这里... 查看详情

基于dolphinscheduler的使用浅谈数仓分层及模型设计

前言:本文旨在简单介绍DS的概述和架构上的设计,对其安装等不做展开介绍。之前了解了一下,很多小伙伴也在使用该产品。我呢,也是到现在公司后才开始接触并使用,对其“开发”的还不够深,这里... 查看详情

1.软件架构设计:大型网站技术架构与业务架构融合之道---五花八门的架构师职业(代码片段)

...,数据一致性问题。 隐形问题: 可重用性,可扩展性,可维护性等。 什么是 查看详情

《大型网站技术架构》核心原理与案例分析

内容简介  本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全... 查看详情

基于dolphinscheduler的使用浅谈数仓分层及模型设计

前言:本文旨在简单介绍DS的概述和架构上的设计,对其安装等不做展开介绍。之前了解了一下,很多小伙伴也在使用该产品。我呢,也是到现在公司后才开始接触并使用,对其“开发”的还不够深,这里... 查看详情

《大型网站技术架构:核心原理与技术分析》5,6,7章简析

...sp;这三章主要强调了网站架构应具有高可用性、伸缩性和可扩展性。  第5章主要讲述了网站的架构的高可用性。要保证一个网站永远完全可用几乎是一件不可能完成的任务。业界通过一个多少个9来度量网站可用性,采用... 查看详情