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

news/2024/5/20 21:21:26/文章来源:https://blog.csdn.net/weixin_33975951/article/details/92662523

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/593286

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

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

相关文章

静态网站生成和部署(一)静态网站生成器 Gridsome

静态网站生成器 什么是静态网站生成器 使用一系列配置、模板以及数据,生成静态 HTML 文件及相关资源的工具由于它用来提前生成静态网页,所以这个功能也称为 预渲染生成的网站不需要类似 PHP 这样的服务器去部署运行只需要放到支持静态资源的 Web Serve…

静态网站生成和部署(二)项目构成和部署(Strapi + Vercle)

项目介绍 使用 Gridsome 创建项目模板参考 startbootstrap-clean-blog使用 Strapi 管理内容,提供 API 和 GraphQL查询 Gridsome 是静态站点生成器,打包时可以通过 API 或 GraphQL 获取动态数据,生成对应的静态文件。 例如:获取…

低级html5css3模板,45个高质量的 HTML5 和 CSS3 网站模板

今天为大家分享45个高质量的 HTML5 和 CSS3 网站模板,这将使你的网站开发更容易,更有趣。CSS3和HTML5是要设计一个非常时尚和新潮的网页设计之前必须要使用的方法,CSS3和HTML5提供的功能为用户提供强大功能。1. Vivid Photo: Free Photograph…

mysql数据库登陆地址_Php网站MySQL数据库四点:地址、数据库名、用户名和密码如何获取?...

我们每天都在使用的 wordpress网站 MySQL数据库四点:MySQL数据库地址、数据库、用户名和密码。 每个网站连接数据库都需要正确填写这四点,否则无法访问数据库。本文中老魏以 wordpress和宝塔面板为例,讲解如何获取数据库四点。本文主要是针对…

钉钉扫码登录网站(两种方式实现)

钉钉扫码登录网站(两种方式实现) 效果: 源代码地址:https://github.com/jellydong/DingQrCodeLogin 动手敲代码! 第一步,钉钉后台配置 参考链接:获取appId及appSecret. 点击进入钉钉开发者平台 的页面,点…

网站架构发展历程

注:本文摘自李智慧的《大型网站技术架构》 1.初始阶段的网站架构 小型互联网公司一般在最初阶段都是将:应用程序、数据库、文件等所有的资源都在一台服务器上。通常服务器操作系统使用Linux,应用程序使用PHP开发,然后部署在Apach…

c#http服务器源码,C# 自定义 HTTP服务器源码(可用于没有iis的情况下搭建站点)

HTTP服务器源码,可以实现POST模式收发,非常值得参考资源下载此资源下载价格为2D币,请先登录资源文件列表C# WebServer/bins/bins/BizApplication.dll , 21504C# WebServer/bins/bins/ComunicationLayer.dll , 5632C# WebServer/bins/bins/Dem…

tcp网站服务器编写,C#编写简单TCP服务器

【实例简介】【实例截图】【核心代码】using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace TCP{class Program{static void Main(string[] args){Socket …

wordpress怎么搜索别人_wordpress深层seo优化技法:自定义栏目和tag标签页面title标题...

seo注重整站优化,也就是希望网站每个页面都参与进来,每个页面都有不同的title标题不重复。对于wordpress默认设置来说,这个基本上是ok的,不需要怎么折腾。但碰到一个问题是:网站栏目及标签页,承载着一些重要…

解决火车头7.6版本对一些https网站的采集报错问题

针对火车头7.6爬取https网站报错System.Net.HttpWebRequest问题的处理方案 1.先看看火车头7.6爬取https网站时出现的报错情况 System.Net.HttpWebRequest 2.废话不多说,先看看解决方案的效果,可以看到已经没有报错了,而且标题也采集到了(其它…

伪静态隐藏域名后缀_seo新手如何注册利于网站优化的域名?立刻分享

如何注册域名?选择比较好的域名服务商,输入合理的组成,选择适合的后缀。选中购买,支付成功后,就算彻底完成域名注册了。1、域名服务商简单来说,域名服务商,就是指能注册域名的地方。不同的服务商…

2012php网站搭建,Windows Server 2012 搭建PHP+MySQL环境

随着windows 8的发布,其服务器版本Windows Server 2012也相继推出,本篇将全面介绍如何在Windows Server 2012搭建phpmysql环境,同时也将介绍如何在Windows Server 2012中设定服务器站点的安全。1.添加IIS服务器角色点击任务栏左下角的“服务器…

mysql宕机时保存sql列表_MySQL的一条慢SQL查询导致整个网站宕机的解决方法

直接切入正题吧:通常来说,我们看到的慢查询一般还不致于导致挂站,顶多就是应用响应变慢不过这个恰好今天被我撞见了,一个慢查询把整个网站搞挂了先看看这个SQL张撒样子:# Query_time:70.472013Lock_time: 0.000078 Rows_sent: 791…

python爬虫自动登录网站_【实战】爬虫自动登录访问授权页面

概述:在人工智能来临的今天,数据显得格外重要。在互联网的浩瀚大海洋中,隐藏着无穷的数据和信息。因此学习网络爬虫是在今天立足的一项必备技能。本路线专门针对想要从事Python网络爬虫的同学而准备的,并且是严格按照企业的标准定…

某网站测试

我得到的只有一个后台网址,首先也就是信息搜集了。在网络空间安全搜索引擎fofa上查询一下,再就是端口扫描 ,直接略过说有利用价值的端口:80,81,1433,3389 脆弱点:http://49.xxx.xx.xxx:81/Login/index SQL注入post包(在…

免费申请Let's Encrypt HTTPS 证书(登陆网站和脚本两种方法)

方法一(要交互,成功率高) 申请过程 1.首先打开SSL For Free (https://www.sslforfree.com/)。 3.此时需要选择验证方式,分别为“自动FTP验证”(会要求输入FTP信息,担心安全的还是不要选择这一项)、“手动…

php程序如何发布,如何发布小程序 | 使用手册 | 帮助中心 | DouPHP模块化企业建站系统...

一,首先需要注册小程序账号,这分为两种情况1,已经有认证过的公众号登录已认证的公众号,网址为:https://mp.weixin.qq.com,然后点击左侧“小程序”-》“小程序管理”菜单,点击“添加”选择快速注…

宝塔--同一IP下架设多个网站

在内网服务器上搭建另一个网站,之前已经有一个网站使用了88端口,接下来的网站打算使用99端口,然鹅这货死活不让建: 解法是随便加一个域名欺骗面板的验证程序: 提交成功后点开刚新建的站点里面把那个欺骗的假域名删掉…

服务器系统识别网站,基于边缘或服务器的人群检测系统部署主要取决于什么

选择是否部署基于边缘的或基于服务器的人群检测系统取决于应用程序和环境。运营商应考虑人群大小,出口点等,并记住没有“一刀切”的方法。基于边缘的人群分析的好处CrowdVision 首席运营官Stuart Mills表示,在成本方面,视频监控是…

自建网站随机名言警句API也就是一言随机名句api【教程】

自建版的好处就是,api 及经典语句内容完全由自己管控,并且稳定性受自己影响,不受外部网站影响;当然,缺点也很明显了,木有一言的语句多。 一言网(Hitokoto.cn)隶属于萌创 Team&#x…