[置顶]大型网站技术架构(七)网站的可扩展性架构

news/2024/5/20 22:48:26/文章来源:https://blog.csdn.net/weixin_34107739/article/details/93560311

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

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

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

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/zhanghaiyang/p/7213443.html

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

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

相关文章

nginx 安装ssl 网站证书的方法

安装ssl网站证书: 现在https越来越主流,如果SSL证书没有配置好,每次访问的时候浏览器就会报错,说你这是一个不安全的网站云云,我也花了很多时间来研究所谓“自颁证书”,很麻烦而且也没法彻底解决&#xff…

react开发h5移动网站_适用于移动应用程序开发人员的5个最佳React本机课程

react开发h5移动网站Ugur Akdemir的 “手持银色iPhone 6的人”在Unsplash上 如果您是一个网络开发人员,希望进入庞大的移动应用程序开发世界,但又不想花时间学习Java或Kotlin进行Android开发,或者不想花Objective C或Swift进行iOS开发&#x…

页面点击体验优化神器Ptengine Heatmap让你拥有完美网站

如果内容是国王,设计就是城堡。好的网页设计不仅仅要让观众对你的产品或服务内容感兴趣而且还要能产生高的转化率。很多设计师认为他们有很聪明的想法来设计ui,但是没有真实的用户体验来告诉你用户需要什么,你怎么能知道你的设计是最好的&…

网站集成QQ登录功能

原文:网站集成QQ登录功能最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把…

你好,我们在自己的服务器上做好了一个网站运行很正常,用FTP工具传到万网的云虚拟主机上后台文本里的内容无法添加怎么回事...

你好,我们在自己的服务器上做好了一个网站后台文本类可以添加运行很正常,用FTP工具传到万网的云虚拟主机上后台文本里的内容无法添加怎么回事

大型网站架构之JAVA中间件

中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品。常见的有: 远程服务框架中间件:主要解决各子模块之间互相访问的问题。 消息队列中间件:主要解决各子模之间消息共享的问题。…

印度软件开发人员_印度独角兽网站开发人员访谈

印度软件开发人员与印度最大的金融科技公司之一的开发人员进行的信息丰富的问答环节。 最近,我有机会采访了该国最大的初创公司之一的开发人员Abhinav Pandey 。 Abhinav喜欢整天编写Node.js API和数据库争执。 阅读这篇文章,以找到他对那些希望与年轻的…

印度独角兽网站开发人员访谈

与印度最大的金融科技公司之一的开发人员进行的信息丰富的问答环节。 最近,我有机会采访了该国最大的创业公司之一的开发人员Abhinav Pandey 。 Abhinav喜欢整天编写Node.js API并与数据库纠缠。 阅读本文,以找到他对那些希望磨练自己的技能并在大公司工…

编程爱好者网站_6个爱好编程者可以参与以促进放松

编程爱好者网站Pexels.com 编程可能会令人兴奋,也可能会带来压力。 作为程序员,您在计算机前花费了大量时间。 为了减轻压力和放松,您可以参加以下六个爱好,这将有助于您放松。 1.上音乐课 学习演奏乐器既轻松又有益。 这将有助…

在Google Cloud Storage上托管免费的静态网站

本指南将引导您设置免费存储桶,以使用Google Cloud Platform服务通过自定义域名为静态网站提供服务。 登录到Google Cloud Platform,导航到Cloud DNS服务并创建一个新的公共DNS区域: 默认情况下,它将具有一个NS (名称服…

php zblog 侧边栏样式_wordpress网站模板开发中,怎样给侧边栏,添加热门标签?...

使用过wordpress网站的朋友都知道,wordpress的tag标签是非常受欢迎的,尤其受到百度这样的搜索引擎的青睐。我就记得,我第一个wordpress网站,新发表的文章还没有被百度收录,而这篇文章的tag标签却被收录,而且…

深度学习去燥学习编码_5个免费的网站来学习编码

深度学习去燥学习编码最初发布于KnowLab 编码很重要,而且很有趣。 编程是那些追求它的人的礼物。 好吧,编码对于我们的日常生活至关重要。 它提高了解决问题的能力,使您有信心仅用编码语言即可构建所需的任何东西。 这是一份不断奉献的礼物&a…

5个免费的网站来学习编码

最初发布于KnowLab 编码很重要,而且很有趣。 编程是那些追求它的人的礼物。 好吧,编码对于我们的日常生活至关重要。 它提高了解决问题的能力,使您有信心仅用编码语言即可构建任何所需的东西。 这是一份不断奉献的礼物,因为它是在…

Discuz3.0网站安装

1、LAMP环境安装1.1. yum环境配制ok;yum install gcchttp://wangfx.blog.51cto.com/1697877/18718971.2. 代理上网配制OK;http://wangfx.blog.51cto.com/1697877/19021971.3. 执行 ./phpstudy.bin2、Discuz安装2.1. 解压unzip Discuz_X3.0_SC_UTF8.zip…

《妙手回春:网站可用性测试及优化指南(修订版)》一第1章 您看到周围有大象吗?...

本节书摘来自异步社区《妙手回春:网站可用性测试及优化指南(修订版)》一书中的第1章,第1.1节,作者 【美】Steve Krug,更多章节内容可以访问云栖社区“异步社区”公众号查看 第1章 您看到周围有大象吗? 妙手…

mysql网站如何搭建_如何搭建一个自己的网站(绝对详细~)

前言这篇文章教大家如何搭建一个自己的网站,平时我们在写项目的时候大部分都是由运维去部署发布的,可能对这方面不太关注。今天手把手教大家实现,我媳妇看了都学会了!准备工具一个可运行的java项目;一台服务器&#xf…

免费网站学习编程_21个免费学习编程的网站

免费网站学习编程精选的网站列表,供您学习编码,编程,Java,Python,SQL,Git和Ruby on Rails。 您好,如果您是自己学习编程和编码并寻找一些很棒的资源的人,那么您来对地方了。 在本文…

21个免费学习编程的网站

精选的网站列表,用于学习编码,编程,Java,Python,SQL,Git和Ruby on Rails。 您好,如果您是一个自己学习编程和编码并寻找一些很棒资源的人,那么您来对地方了。 在本文中,我…

DVWA网站的搭建

DVWA网站的搭建 Damn Vulnerable Web Application (DVWA),这个应用程序有若干基于web的漏洞,比如跨站脚本 (XSS), SQL注入, CSRF,命令注入等。 首先要配置DVWA有两种方式,一个是手动(需安装Apache,Mysql等服务),另一个是直接安装…