【读书笔记】网站的可扩展架构

news/2024/5/13 11:41:33/文章来源:https://blog.csdn.net/u013568373/article/details/91367311

前言

本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性本文针对扩展性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书(一万分推荐这本书,个人认为这本书可以说是技术架构导论一样的存在了)。

所谓网站的扩展性,指的是添加新功能时对现有系统的其它应用无影响,这就要求不同应用具备低耦合的特点。

注意扩展性与伸缩性的区别,不要弄混了。

扩展是指功能的上的扩展,比如添加个新的功能。

伸缩是指性能上的伸缩,比如增加服务器数量。

实现可扩展主要有两种方式:

  • 使用消息队列进行解耦,应用之间通过消息传递进行通信;
  • 使用分布式服务将业务和可复用的服务分离开来,业务使用分布式服务框架调用可复用的服务。新增的产品可以通过调用可复用的服务来实现业务逻辑,对其它产品没有影响。

接下来具体的介绍这两种方式。

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

一、事件驱动架构

事件驱动架构(Event Driven Architecture),通过在低耦合的模块之间传输事件消息,比保持模块的松耦合,并借助事件消息的通信完成模块间的合作,典型的EDA架构就是操作系统中常见的生产者消费者模式

在这里插入图片描述
消息发送者将消息发送至分布式消息队列即结束对消息的处理。

消息接收者只需要从分布式消息队列获取消息后进行处理,不需要知道该消息从何而来。

可以看出来,消息发送者与消息接收者并没有直接耦合

对于新增业务,只要对该类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响,从而实现网站业务的可扩展设计。

二、分布式消息队列
在这里插入图片描述
消息生产者应用程序通过远程访问接口将消息推送给消息队列服务器,消息队列服务器将消息写入本地内存队列后立即返回成功响应给消息生产者。

消息队列服务器根据消息订阅列表查找订阅该消息的消息消费者应用程序,将消息队列中的消息按照先进先出的原则将消息通过远程通信接口发送给消息消费者程序。

另外,为了避免消息队列服务器宕机造成消息丢失,会将消息成功发送到消息队列的消息存储在消息生产者服务器,等消息真正被消息消费者服务器处理后才删除消息。

在消息队列服务器宕机后,生产者服务器会选择分布式消息队列服务器集群中其他的服务器发布消息。

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

如果说分布式消息队列通过消息对象分解系统耦合性,不同子系统处理同一个消息;那么分布式服务则通过接口分解系统耦合性,不同子系统通过相同的接口描述进行系统调用。

看看下面这个维护困难、开发困难、部署困难的巨无霸系统
在这里插入图片描述

解决方案就是拆分,将模块独立部署,降低系统耦合性。

拆分可以分为两种。

  • 纵向拆分
  • 横向拆分

纵向拆分:将一个大应用拆分为多个小应用,如果新增业务较为独立,那么就直接将其设部署为一个独立的Web应用系统。

横向拆分将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务,不需要依赖具体的模块代码,即可快速搭建一个应用系统,而模块内部业务逻辑变化的时候,只需要接口保持一致就不会影响业务程序和其他模块。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_743026.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【读书笔记】网站的安全架构

前言 本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对安全性这一要素进行简单的讨论,内容也主要参考自《大型网站技术架构》这本书…

[导入]国内web2.0网站的logo集合

国内web2.0网站的logo集合,收集过程中难免有遗漏,请到 http://www.yupoo.com/word/web2补上甘先生 2006-02-13 18:03 文章来源:http://www.blogjava.net/gump/archive/2006/02/13/30487.html转载于:https://www.cnblogs.com/cngump/archive/2006/05/16/401486.html

[转载]说说大型高并发高负载网站的系统架构

说说大型高并发高负载网站的系统架构 By Michael转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&372…

PHP网站事件流,详解DOM事件流的三个阶段

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。DOM事件流分为三个阶段,分别为:捕获阶段:事件从Document节点自上而下向目标节点传播的阶段;目标阶段:真正的目标节点正在处理事件…

Windows 7 即将发布 - 91%的应用程序、92%的硬件设备和95%的网站完美兼容

Windows Vista的兼容性往往被大家所诟病,Windows 7打算一血前仇了。经过了长达2年的兼容性测试和改进,已经有91%的应用程序、92%的硬件设备和95%的网站完美兼容Windows 7。在这个过程中,作为微软在北京的Windows 7兼容性测试支持中心&#xf…

网站CSS背景图片抓取工具

工具介绍:  1)分析网页,获取页面图片。  2)分析网页引用CSS文件,获取背景图片。  3)批量下载。要点:  1)正则 LINK_PATTERN:获取页面所有连接 BACKGROUND_IMAGE_…

网站服务器基本安全设置

一、服务器系统安装建议1、不安装多余组件,停止不需要的服务;2、www服务单独分区;3、补丁打全;二、登录账号与口令安全1、设置密码使用、数字加大小写字母不少余8位;# vi /etc/login.defs找到以下:PASS_MAX_DAYS 99…

查看网站服务器版本,查看服务器版本

您正在运行的 Tableau Server 的版本很重要。它确定您可以访问的功能和能力。在您进行升级时,版本也很重要,因为在某些情况下,您升级的方式取决于您从中升级的版本,以及要升级到的版本。了解如何查找版本之后,就很容易…

Java开发者必去的20个英文技术网站

为什么80%的码农都做不了架构师?>>> http://www.javaalmanac.com - Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处. http://www.onjava.com - OReilly的Java网站. 每周都有新文章. http://java.sun.c…

从零开始建站-4

为什么80%的码农都做不了架构师?>>> 这里记录使用wordpress建站中遇到的问题 1、增加外网访问功能 登录数据库,在wp_options表中,修改字段 siteurl 和home均为 /wordpress,这里的wordpress的绝对路径为/var/www/htm…

Dreamwear如何创建javascript_15个免费学习JavaScript的最佳网站

作者:行者转发链接:https://codegeekz.com/15-best-websites-to-learn-javascript/前言JavaScript是Web最流行的语言。对于任何Web开发人员来说,JavaScript现在是必须学习的语言。像追踪树这样的创新已经大大提高了JavaScript的性能&#xff…

5分钟必懂-搭建网站框架踩到的坑之获取ServletPath

路径问题RealPathServletPathContextPathRequestURI获取真实ServletPath的方法RealPath String realPathrequest.getServletContext().getRealPath(); String realPathrequest.getServletContext().getRealPath("XXX");1)取得服务应用的绝对路径(本地路径…

【nosql实现企业网站系列之一】mongodb的安装

本系列文章将使用Mongodb作为nosql的数据保存载体,显示载体使用aspnetmvc3,依赖注入容器使用unity application 2。 需要使用Mongodb首先需要安装。 一、下载Mongodb 地址:http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus…

32个使用 Google 网页字体的优秀网站案例

如今,网页设计师非常注重网页字体的运用,为了能让网站有更好的可读性和更强的吸引力,他们需要更漂亮的字体。Google网页字体(Google Web Fonts)为设计师们提供了几百种免费开源的字体,只需要在网页中加入一…

用VS2008开发Ajax网站需要注意的一些事项

这两天因为要开始网站,我们的老大说了,一定要用到mvc架构三层模式的设计,另外关于ajax的的使用部分不得少于三分之一,这样的要求还真的是很奇怪,感觉就不太像是可以用于商业的东西,大概只是想让我们练习一下…

Anonymous几天之内攻陷500多个中国网站

根据CNET的报道,Anonymous***激进组织已经在几天之内黑掉了超过500个中国政府/商业网站,并号召中国***加入他们。 The hacked Web site for the Central Business District in Chengdu, China. (Credit: Screenshot by Steven Musil/CNET)

灯鹭的简单开放,促进网站一举多赢

社会化网络作为传统平台的升级与革新,简单开放是有别于传统网站的最显著特点,如今社交媒体发展如火如荼,大量真实且活跃的用户让其成为网站流量的主要来源,很多网站运营人员一直苦于无法参与进去。据了解,目前灯鹭是国…

关于在mvc4中多语言建站的实例

环境:vs2012 asp.net mvc4. 实现方式:resource 资源文件,根据路由规则中Lang参数来判断载入哪种语言方式 在网上找到了相关资料,顺便自己做了个练习,新建工程之类的步骤就免了,该注意的地方说明下&#xff…

网站获取ip代码怎么写_网站关键词怎么写更利于SEO优化

网站关键词是什么呢?就是一个网站给首页设定的以便用户通过搜索引擎能搜到本网站的词汇。简单来说就是一个网站设定出来,以便用户通过搜索引擎能搜到本网站的词汇,网站关键字代表了我们企业网站的市场定位。好的关键字设置,是我们…

研究日本网站设计趋势

日本有一些令人印象深刻的网页设计师。在艺术技能上,给互联网上的读者展示了强大的数字力量。幸运的是我们因为了解日本网站而不是一味的佩服他们的 网站图片和动画效果。我们会寻找一些日本设计师的网站,他们都是一些打破网页设计常规的网站&#xff0c…