软件架构设计学习总结(13):大型网站技术架构(七)网站的可扩展性架构...

news/2024/5/14 3:31:31/文章来源:https://blog.csdn.net/weixin_34163553/article/details/93834943

扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。

        设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系。

        模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务

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

        如果模块之间不存在直接调用,那么新增模块或者修改模块对其他模块影响最小,这样系统的可扩展性无疑更好一些。

        事件驱动框架:通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的架构就是生产者消费者模式。在大型网站架构中,具体实现手段很多,最常用的就是分布式消息队列,如下图所示:

 

 

 

 

       消息队列利用发布-订阅模式工作,消息发送者发布消息,一个或者多个消息接收者订阅消息。

       由于消息发送者不需要等待消息接受者处理数据就可以返回,系统具有更好的响应延迟;同时,在网站访问高峰,消息可以暂时存储在消息队列中等待处理,减轻数据库等后端存储的负载压力。

       目前开源的和商业的分布式消息队列产品有很多,比较著名的有Apache ActiveMQ等,如下是分布式消息队列的架构原理:

 

 

 

 

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

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

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

  1. 负载均衡
  2. 失效转移
  3. 高效的远程通信
  4. 整合异构系统
  5. 对应用最小入侵
  6. 版本管理
  7. 实时监控

 目前国内有较多成功实施案例的开源分布式服务框架是阿里巴巴的Dubbo,下图是Dubbo的架构原理:

 

 

        服务消费程序通过服务接口使用服务,而服务接口通过代理加载具体服务,具体服务可以是本地的代码模块,也可以是远程的服务,因此对应用较小入侵;应用程序需要调用服务接口,服务框架根据配置自动调用本地或远程实现。

        服务框架客户端模块通过服务注册中心加载服务提供者列表(服务提供者启动后主动向服务注册中心注册自己可提供的服务接口列表),查找需要的服务接口,并根据配置的负载均衡策略将服务调用请求发送到某台服务提供者服务器。如果服务调用失败,客户端模块会自动从服务提供者列表选择一个可提供同样服务的另一台服务器重新请求服务,实现服务的自动失效转移,保证高可用服务。

3、利用开放平台建设网站生态圈

        大型网站为了更好的服务自己的用户,开放更多的增值服务,会把网站内部的服务封装成一些调用接口开放出去,共外部的第三方开发者使用,这个提供开放接口的平台被称作开放平台。

        开放平台是网站内部和外部交互的接口,外部需要面对众多的第三方开发者,内部需要面对网站内诸多的业务服务。虽然每个网站的业务场景和需求都不相同,但开发平台的架构设计却大同小异,如下图所示:

API接口:是开发平台暴露给开发者使用的一组API,其形式可以是RESTfull,WebService,RPC等各种形式。

协议转换:将各种API输入转换成内部服务可以识别的形式,并将内部服务的返回封装成API格式。

安全:除了一般应用需要的身份识别、权限控制等安全手段,开放平台还需要分级的访问带宽限制,以保证资源被公平合理的使用。

审计:记录第三方应用的访问情况并进行监控、计费等。

路由:将开放平台的各种访问路由映射到具体的内部的服务。

流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口供开发者调用。

转载于:https://www.cnblogs.com/dengyungao/p/7543253.html

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

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

相关文章

如何选择用什么语言进行网站开发

对于很多企业或者需要建站的个人来说,如何选择一个开发语言来进行网站开发是大家经常考虑的问题。很多行外的都是这样子跟我说,我要你们最先进的语言来进行开发,要最厉害的。其实对于我们来说,没有最先进的语言来说,只…

大型网站技术架构之架构演化发展历程

前言:大部分来自《大型网站技术架构》,小部分来自个人见识,欢迎指正。 1.初始阶段: 最开始的时候,基本上就只有一个服务器。所有的资源,如:应用程序、数据库、文件等都在一台服务器上。这个时候…

高并发高流量网站架构

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有…

视频网站盈利模式与营销策划

在与数十家视频网站进行信息网络传播权交易过程中,在研究视频网站内容和盈利模式基础上,综合自己在传统媒体和新媒体领域十几年的策划和营销经验,我发现:视频网站的盈利模式其实早就形成多种体系,但是盈利之路艰难&…

如何搭建自己的网站

当你看到我这个博客的时候,我猜你应该是学习计算机的朋友,你可能会写一些漂亮的前台界面,或者能写一个小的web项目,但是你可能不知道怎样让自己的这个界面或者项目,只通过一个网址,任何人都可以随时随地进行…

怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51.net 得到的IP地址是111…

字节一面:网站显示不出来,怎么排查?

大家好,之前有读者在字节一面的时候,被问了这么一个问题:在浏览器输入 URL 并回车后,如果页面迟迟没有出现,怎么去排查问题?我的回答:最直接的办法就是抓包,排查的思路大概有&#x…

卧槽,这才是最强Python刷题网站!

大家好,最近经常有粉丝问零基础/基础薄弱,要怎么开始学习python,今天来给大家分享一些python的学习方法,先给大家推荐一个粉丝反馈用起来不错的免费python学习&练习网站https://www.nowcoder.com/link/pc_gzh_pyahzsq_python一…

一夜成名的航班追踪网站,什么来头?

明敏 鱼羊 发自 凹非寺量子位 | 公众号 QbitAI一款本来名不见经传的“小众民航好物”,一夜爆红。其实时追踪航班的功能,昨夜吸引30万人齐齐涌入,直接把这小破网站搞得流量爆炸,一度崩溃。如果你睡得比较早,现在可以再一…

漫画:网站访问缓慢怎么办?

什么是CDN?CDN 全称 Content Delivery Network,翻译过来叫做内容分发网络,核心作用是给互联网内容传输“加速”。什么是全站加速?全站加速,英文Whole Site Acceleration,缩写WSA,融合动态加速与…

自助建站平台实力比拼:凡科、微企点、建站之星、宝华建站、微魔方、上线了...

2019独角兽企业重金招聘Python工程师标准>>> 随着互联网快速发展,网站建设受到越来越多的关注。优秀的企业网站能够为企业形象代言,也可以成为产品或服务宣传的重要窗口、企业收集反馈客户意见的重要渠道、搭建产品信息的数据库等。相较于独立…

大型网站架构演变

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

宝塔面板设置wordpress主题网站伪静态的最简单的方法

WordPress日记 2018-02-27 WP主题开发 4,224 次 最近网站更换了服务器,安装了宝塔面板,安装好以后发现安装管理网站还是非常的直观方便的,但是有一点让我折腾了好久,那就是网站设置伪静态固定连接后,总是出现404错误…

支付宝网站支付即时到帐(一) 参数的文档地址

必备物品:企业支付宝账号 官网 : https://open.alipay.com/platform/home.htm 第一步 创建网站应用 并完善信息 这一步很简单 添加上网站支付的功能 第二步 找到即时到帐的文档 https://docs.open.alipay.com/62/103566 上面有获取pid的方法 https…

SEO关键词排名下降,5个方法帮你恢复排名!

作为一名SEO人员我们每天的工作除了做推广以为,最主要的内容就是监控关键词的排名,很多初入SEO行业的小伙伴特别紧张,如果并不是大面积的关键词排名下降,还请大家放轻松,你可以通过下面5个方法来恢复你的关键词排名&am…

怎样解决Internet Explorer无法访问网站的现象

去掉"自动检测设置"的复选框 1 打开Internet Explorer浏览器,点击右上角齿轮 2 点击Internet选项 3 点击连接 4 点击局域网设置 5 将“自动检测设置”的勾去掉,单击“确定” END 指派IP地址和DNS服务器 1 打开网络和共享中心 2 活动…

一例千万级pv高性能高并发网站架构

一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面,有兴趣也可以讨论)。现抛出一个系统层面的架构,不保证是最优的方案,但也许适合你。理由是再优秀的架构都不具备通用性,需要根据每种应用特点针…

大型网站框架从单台服务器到群集的演变过程

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结 果,而没有很详细的讲为什么需要做这 样的演变,再加上近来感觉有不少同学都很难明白为什…

study-19: LAMP企业网站集群架构搭建(自己实战)

一,架构图 二,安装软件 1,WEB-A (192.168.1.241): 1)安装LAMP(MYSQL安装到make && make install即可) 2)安装rpcbind:yum install rp…

WebStack-Laravel 和宝塔导航网站部署

中国所有网站上的人才。。。没有一个教程是完整的。。 效果网站: nav.yzdzy.com www.liuan.wiki 安装宝塔教程 无 命令行工具: 感谢阿里云 升级镜像命令 官方地址 先看下后面要用 https://developer.aliyun.com/composer 我写一份完整的教程 …