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

news/2024/5/18 15:17:01/文章来源:https://blog.csdn.net/weixin_34337381/article/details/92654993

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

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

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

相关文章

Thinkphp如何制作一个PC网站和移动端网站

相信大家用thinkphp做一个普通的PC网站应该没什么问题,thinkphp3.2模块化编程,前台模块和后台模块分开的,如何要一个PC网站和移动端网站,只需要复制一个模块就可以了 1,第一种方法,新建移动模块 2&#xf…

支付宝:web页面扫码支付、网站支付、支付宝即时到账 + springmvc

一、场景:公司需要在网站上进行支付宝支付。 二、API:使用支付宝开放平台的支付能力-即时到账接口。支付宝开放平台链接 三、分析: 1、支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEMO是 JAVA-UTF-8版本…

Chrome插件:Octotree,在GitHub网站上显示代码树

https://github.com/buunguyen/octotree 上图说明,简洁明了!

WAP,手机网站建站资料收集 - 老古董

http://www.williamlong.info/archives/832.html WAP是“无线应用协议”的英文简称,它提供了通过手机访问互联网的途径。只要有了一个支持WAP的手机,就可以随时随地随身地访问互联网。使用手机上网速度虽然比较慢,但也是移动办公的一种选择&…

JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例

这个稍微比上个版本做得完善了一点,用了JavaBean来封装用户信息,添加了一个管理踢用户的功能。 上一个的用户访问量是通过监听request来统计的,在这个实例中,我们也可以通过过滤器来实现统计网站访问量。 直接看源码吧&#xff…

宝塔开启root_宝塔面板重大安全bug,导致一些网站甚至一些gov网站数据库被人恶意删除...

宝塔面板linux7.42,7.5.14测试版,windows6.8版本受影响,其他的版本没有这个问题。https://bbs.zsxwz.com/thread-3223.htmphpmyadmin授权漏洞,导致无需验证就可以直接登录数据库。这个问题应该存在挺久的了,查了一下自…

.cc是什么文件_网站服务器应该如何有效做到防御CC?

市面上普遍两种攻击模式CC攻击和DDOS攻击,DDOS攻击这个是只能通过硬件防护墙来防护的,CC攻击比较麻烦他是需要部署策略才能防御的,接下来具体和大家介绍下CC攻击是一个什么样类型的攻击和解决办法CC攻击攻击原理:简单解释下 攻击者控制一部分…

话说“武汉真爱医院”负面信息被百度毫不留情的给收录了|网站入侵

今天下午上班时正一如既往的敲着代码,做着手头待完成的工作,突然公司内部技术QQ群弹出消息,是头儿发的,一张图,截图如下: 是一条在百度搜索中以“武汉真爱医院”为关键词搜索出来的信息,相信大家…

workerman php网站,workerman的入口文件

WorkerMan入口文件和nginxPHP-FPM下的PHP应用程序一样,WorkerMan中的应用程序也需要一个入口文件,入口文件名没有要求,并且这个入口文件是以PHP Cli方式运行的。 (推荐学习:workerman教程)入口文件中是创建监听进程相关的代码&…

网站提速-缓存技术(5)

在PHP中使用memcache 数据库&#xff08;select&#xff09;读出来的数据使用memcache。在会话控制session中使用<?php$memnew Memcache;$mem->connect("localhost",11211);$sql"select * from saisai";$mysqlinew mysqli("192.168.211.128&qu…

PyQt4安装方法 - - ITeye技术网站

PyQt4安装方法 - - ITeye技术网站PyQt4安装方法 博客分类&#xff1a;框架PythonQtJavaScriptPerlGoogle 现在使用Qt4做淘宝助理5.0&#xff0c;对Qt还不算熟悉有时候想快速的看看某个类或者方法的用途&#xff0c;又不想新建一个项目。这时候Python for Qt就派上用场了。虽然…

java创建文件目录在linux上不成功_宝塔面板利用宝塔面板在阿里云Ubuntu服务器上部署Wordpress博客网站详细图文教程...

啰嗦一句&#xff1a;请网站域名备案了再来折腾再把域名解析到购买的阿里云服务器公网IP宝塔Linux面板是提升运维效率的服务器管理软件&#xff0c;支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。有30个人的专业团队研发及维护&#xff0c;经过20…

要匹配的标签和内容_SEO网站优化中标签的使用 - 神马网站优化软件

原出处&#xff1a;超级排名系统原文链接&#xff1a;SEO网站优化中标签的使用 - 超级排名系统网站优化的站内优化是非常重要的一个环节&#xff0c;当一个网站的页面数量达到一定量级的时候&#xff0c;要坚持把网站做的扁平化就显得尤为困难&#xff0c;由于站内资源的限制&a…

seo管理php源码_提高网站收录的方法,教你如何解决SEO的一大难题

提高网站收录是SEO的一大难题。非凡教育教你如何解决提高网站收录这一做SEO优化的难题。SEO优化大师教你提高网站收录的方法。稳定的更新配合网站收录量的提高可以有效提高网站的权重&#xff0c;使SEO见到成效。<br> (二维码自动识别)【上海非凡进修学院】上海淘宝培训|…

网站广告那点事儿

2019独角兽企业重金招聘Python工程师标准>>> 我一直用Chrome&#xff0c;前段时间也在纠结是不是用AdBlock吧网站广告屏蔽了&#xff0c;现在我还是启用了AdBlock&#xff0c;不过不是天天开启&#xff0c;3天左右关闭一次。 为什么要开启AdBlock 网站广告是网站的…

LaTeX入门系列之六(LaTeX网站汇总)

2019独角兽企业重金招聘Python工程师标准>>> 为了方便大家充分利用互联网学习和使用LaTeX&#xff0c;这里将相关的网络资源整理介绍一下&#xff0c;内容主要来自《Latex入门》-刘海洋-电子工业出版社一书。 1.CTAN&#xff08; the comprehensivie TeX Archive N…

建站学php还是java_建站用php还是java

建站用php还是java&#xff1f;建站用php&#xff0c;因为php是常用的网站编程语言&#xff0c;有全球超过81.7%的公共网站在服务器端采用PHP。而Java是一门面向对象编程语言&#xff0c;更适于系统程序的开发。phpPHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。…

html打开百度自动搜索,网站添加百度自动推送代码的方法

今天有用户过来询问网站如何添加百度自动推送的代码以增加网站的收录数量&#xff0c;所以就水了这篇博文&#xff0c;如果你有此需求的话&#xff0c;不防按照此文章的方法来获取一下百度的推送代码。百度自动推送代码的作用图获取百度推送代码的方法1、打开百度搜索资源平台&…

hao123网站需要服务器吗,我已经设置“www.hao123.com”为我的主页了,可是打开IE还是“http://www.k986.com/”这个网站,也查不出毒,怎么办?...

安装IE 7 后&#xff0c;首次打开&#xff0c;会自动连接到 http://go.microsoft.com/fwlink/?LinkId74005 这个网页进行自定义设置&#xff0c;只有完成了自定义设置后&#xff0c;以后每次打开IE才会显示主页&#xff0c;不然会一直连接到这个网页。你可以这样设置&#xff…

钉钉获取免登授权码 php_钉钉扫码登录网站(两种方式实现)

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