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

news/2024/5/8 13:44:05/文章来源:https://blog.csdn.net/weixin_33813128/article/details/92654280

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

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

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

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

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

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

 

 

 

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

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

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

 

 

 

 

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

转载于:https://my.oschina.net/zhanghaiyang/blog/595791

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

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

相关文章

网站加入代码让网页以电脑端打开_网页上的文本不让你复制下载?老司机教你几招,轻松免费复制...

无论是在工作中还是在学习中,大家都会遇到网页上的文本无法复制粘贴的情况,然后只能硬着头皮将里面的内容一个个的用键盘敲出来,其实这些被限制的网页时可以复制的,今天就教你几招,让你轻松免费复制。一、手机端如果是…

如何在地图上显示图片和经纬度_如何在企业网站上调用百度地图?让用户清楚知道你的位置...

如何在企业网站上调用百度地图?基本上每个企业网站都会有联系方式展示给用户,但平常的联系方式就是留下地址、电话等联系方式,不够直观,我们这里讨论一种方法,让用户可以直接看到我们的企业在百度地图上的位置&#xf…

js 直接打开选择文件窗口_从建站到拿站 -- JS基础

喝酒喝到吐的是我,在家大门不出二门不迈的也是我,仗义疏财的是我,扣到几块钱也舍不得花的也是我,放肆到骚话满篇的是我,谨慎到沉默寡言的也是我,我自己都不知道自己是什么人。。。---- 网易云热评提示&…

python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量

最近接触Python爬虫,以爬取学校新闻网新闻标题、日期、点击量为例,记录一下工作进度目前,感觉Python爬虫的过程无非两步:Step1.获取网页url(利用Python库函数import urllib2)Step2.利用正则表达式对html中的字符串进行匹配、查找等…

网站设计php和python,源码:基于Python网站的设计与实现

无论您需要任何题目请直接联系客服索取系统演示资料!咨询可赠送设计资料教程一份!经多年积累,本店有java、jsp、php、、安卓、IOS、vb、net,vc、c#等设计上万套,本店保证所有设计可正常运行!也可定做!收藏管…

从哪些方面提升服务器性能优秀强大,网站服务器升级应该从哪些方面提升性能!...

网站服务器在使用运行一段时间之后,就需要考虑对服务器进行升级,一方面服务器升级能够更好满足企业对网站的使用需求,另一方面服务器在进行升级之后,用户在浏览网站时能够更加迅速,体验速度会更好。因此服务器升级也是…

企业网站 源码 服务邮箱:_口碑营销:惠州企业网站推广定制服务

口碑营销:惠州企业网站推广定制服务 qnmsptdb口碑营销:惠州企业网站推广定制服务 软文则是从软文推广衍生出来的,它的分类具体有推广类型的软文、那么软文的主要形式有哪些呢。的策略。一家的站方案,网页排名、关键词、整站都是重…

备案网站未正规绑定服务器,网站备案对收录到底有没有影响

不论是之前备案条件宽松的时候还是现在备案严格,总有很多新手站长有疑惑,网站备案这玩意对网站收录究竟有没有直接影响?近日一位圈内资深站长给出了自己的答案:做了几百个网站,直白讲网站备案跟网站收录是没有任何影响的!我知道&…

python登录app爬取数据_Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢...

​ 前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经…

url获取网站信息不包含网页源文件内的标签_大型门户网站常用的SEO优化思路!...

一般的网站SEO优化企业需要进行考虑的就是排名、流量、转化率,可是我们对于一个大型门户站的SEO优化则需要充分考虑到了很多事情,比如:网站系统架构、分类、路径、程序设计等等这些方面,所以小编觉得门户网站的SEO优化一定要提前做…

在网站底部放置备案号_艾孜尔江撰

直接将下方的备案号改为你自己的备案号即可。 <p style"background:none;height: 5%;position: fixed;bottom: 0px;width: 100%;text-align: center; "><img style"padding-top:2px;" src"/images/index/相应静态资源目录下的国徽图标.png&q…

Selenium手撕打字网站

在进行爬虫的时候&#xff0c;突发奇想&#xff0c;能不能用selenium进行打字网站的测试&#xff0c;说干就干 from selenium.webdriver import Firefox from selenium.webdriver.common.keys import Keys import time首先导入需要的库 web Firefox()实例化浏览器 web.get(…

服务器系统蓝屏进不去怎么办,蓝屏无法进入任何模式怎么办_网站服务器运行维护,蓝屏...

如何在mac上配置apache和php_网站服务器运行维护在mac上配置apache和php的方法是&#xff1a;1、查看系统预装的apache和php版本&#xff1b;2、修改apache配置文件&#xff1b;3、生成php配置文件&#xff1b;4、重启apache服务&#xff1b;5、测试运行php文件。蓝屏无法进入任…

cn域名注册十元_网站使用短域名会有哪些好处?

域名注册对于网站建设来说是必不可少的&#xff0c;许多公司会根据域名的长度来运营网站。然而经过长时间的研究&#xff0c;人们发现短的域名更有利于运营。下面简单说说网站使用短域名会有哪些好处?1、更容易记忆大脑的处理系统都避长就短&#xff0c;越简单的东西越容易记忆…

电脑java编译器软件下载,JDK官方网站下载安装教程 JAVA编译器

很多人都不知道怎么在官方网站下载JDK&#xff0c;下面我们就一起来看看教程吧&#xff01;操作方法01在搜索中输入“JDK官网”进行搜索&#xff0c;如下图所示。02搜索到JDK官网之后点击进入&#xff0c;如下图所示。03进入官网之后&#xff0c;点击下图中箭头指向的图标。04点…

Gitee如何免费部署静态网站?

1、网页只能本地浏览&#xff0c;想挂在云端进行访问浏览的 2、想入手云服务器&#xff0c;但服务器太贵了&#xff0c;觉得花钱不值得 3、不知道服务器如何使用和搭建的&#xff0c;对于新手小白不太友好 4、想快速部署网页的&#xff0c;简单配置就可以得到想要的 谁说程…

web前端-二级分类菜单(类似购物网站)

效果&#xff1a;鼠标移上去右边显示二级菜单。 效果图&#xff1a; 实现代码 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title><style>*{margin:0;padding:0;}#nav{width:100%;h…

JAVA环境下JDK导入指定网站下载下来的证书

查了很多文章&#xff0c;都写的乱七八糟的&#xff0c;不是缺这就是缺那&#xff0c;反正不完善&#xff0c;经过各种试&#xff0c;会出现很多问题&#xff0c;比如keytool命令不能识别的问题&#xff0c;或者执行命令报错的问题&#xff0c;很多。 经过各种测试&#xff0c…

React实战入门课程:dva开发一个cnode网站(1)

dva开发一个cnode网站&#xff08;1&#xff09; dva 首先是一个基于 redux 和 redux-saga 的数据流方案&#xff0c;然后为了简化开发体验&#xff0c;dva 还额外内置了 react-router 和 fetch&#xff0c;所以也可以理解为一个轻量级的应用框架。 本教程是利用cnode的开放api…

React实战入门课程:dva开发一个cnode网站(2)

今天来学习第二节课程&#xff0c;完成列表数据的展示 效果&#xff1a; 1. 新建ListData组件 import React , { Component }from react; import { List, Avatar, Icon, Spin } from antd; import PropTypes from prop-types; import { connect } from dva;class ListData e…