大型网站技术架构:核心原理与案例分析笔记

1.大型网站软件系统的特点:

  •   高并发,大流量
  •   高可用
  •        海量数据
  •   用户分布广泛,网络情况复杂
  •   安全环境恶劣
  •   需求快速变更,发布频繁
  •   渐进式发展  

2.大型网站演变架构

  1)初步应用:数据(数据库,文件服务器)和应用程序跑在单一服务器上

  2)数据与应用分离:数据库服务器,文件服务器,应用程序服务器

  3)缓存改善性能:(应用程序(带有本地缓存)-->外接分布式缓存)-->数据库服务器以及文件服务器对接

  4)应用程序集群:使用负载均衡策略来进行请求分布

      负载均衡调度器--->(多个饮用程序分布式部署)--->外接分布式缓存--->数据库服务器以及文件服务器对接

  5)数据库读写分离:当单一数据库IO量达到极限时候,需要对数据库进行集群

      将数据库服务器进行分布式

        数据库服务器(主库(写数据库)--->多个从库用于数据select)

  6)CDN加速

    在负载均衡前面添加一层反向代理服务器和Cdn加速器,将一些缓存数据尽早返回给服务器,让页面反应速度加快

    Cdn加速器-->反向代理->负载均衡调度器--->(多个饮用程序分布式部署)--->外接分布式缓存--->数据库服务器以及文件服务器对接

  7)分布式数据库以及分布式文件服务器

    当数据库中数据量非常大的时候,可以将这个不同业务的数据放在不同的物理机上。

    当文件数据量比较大时候,单一文件服务器不能承载时候,可以将单一文件服务器改为分布式文件服务器

  8)NOSQL和搜索引擎

    当大数据量大文件量的时候,必定会涉及到文件数据的搜索,此时需要的是NOSQL以及搜索引擎服务器给其提供搜索服务,减轻数据源管理的麻烦

  9)业务拆分:

    将一个巨大的应用分为不同的业务模块进行开发,将每一个不同模块的应用进行分布在不同的服务器中进行使用,不同模块与模块之间采用消息队列进行通信

3.架构模式:

  1.单一应用(初期应用):应用层,服务层,数据层整合在一起;

  2.数据分层:将应用分为:应用层,服务层,数据层

  3.分割:根据业务进行模块分割,将一个大应用分割成一个一个的小模块进行开发

  4.分布式部署:

    分布式应用和服务

    分布式静态资源

    分布式数据和存储

    分布式计算

  5.集群:单一服务器不能承担该任务时候,需要对其进行集群部署

  6.缓存:

     CDN

     反向代理

     本地缓存

     分布式缓存

  7.异步调用

    当数据量巨大时候,可以采用异步调用策略进行调度。

    其实现原理相当于是和生产者和消费者模式差不多采用消息队列实现的异步

  8冗余:

    对数据进行冷热备份

  9.自动化

    自动化运维方面,自动化监控

  10安全化:

    通过验证码机制以及防止SQL注入问题

4.TPS,HPS,QPS

  TPS:每秒事物数

  HPS:每秒的HTTP请求数

  QPS:每秒的查询数

转载于:https://www.cnblogs.com/lonecloud/p/7447410.html

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

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

相关文章

1777:文件结构“图”

1777:文件结构“图” 查看提交统计提问总时间限制: 1000ms内存限制: 65536kB描述在计算机上看到文件系统的结构通常很有用。Microsoft Windows上面的"explorer"程序就是这样的一个例子。但是在有图形界面之前,没有图形化的表示方法的,那时候最…

thinkphp出现Call to undefined function Think\C() in ... online 313

造成这个问题的原因很多,在这里我只说明我自己遇到之后解决的办法 我将functions.php改成了function.php之后,修改了一些其他无关紧要的东西出现了这个问题,来回排查,各种尝试,最后,将function.php改回functions.php,可以正常运行

Oracle数据库IP访问限制(IP白名单黑名单)

1、编辑sqlnet.ora内容为:#允许访问的IP(白名单)TCP.INVITED_NODES(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使用白名单,必须有本地IP,否则监听会起不来#不允许访问的IP(黑名单)#TCP…

WPF效果第一百九十九篇之Gamma曲线

前面效果中分享了模块对比;今天大周末那就再来分享一下最近实现的效果;基于YX^n公式根据不同的系数绘制Gamma曲线效果如下图:1、曲线的话,咱就用最简单的方式绘制一堆点:PathFigure pathFigure new PathFigure(){StartPoint new Point(0, count),};for(double x 0; x < 1…

图片序列化和反序列化成图片文件(代码)

// // ViewController.m // 图片序列化和反序列化 // // Created by Qlinchao on 17/3/14. // Copyright © 2017年 QLC. All rights reserved. //#import "ViewController.h"interface ViewController () property (weak, nonatomic) IBOutlet UIImageView …

windows 下 MyEclipse 逆向工程生成hiberate 对应配置文件以及 javaBean。

步骤1&#xff1a; 右边工具栏 -> 右击你的项目 -> 选中 MyEclipse -> Project Facets -> install Hibernate Facet -> 选择对应的版本&#xff08;以及一些你想要的配置&#xff09; 步骤2&#xff1a; 导航栏 -> window -》 show View -> Other 。 然…

php加解密

一 对称加密 1.mycyrpt的对称加密: /*** param $key //数据加密密钥 由自己定义,长度有限制 string* param $string //需要进行加解密的字符串 string* param $decrypt //加密还是解密 (最简单的,0代表加密,1代表解密)* return string*/ function encryptDecrypt($key, $st…

深入理解Spring Boot数据源与连接池原理

​ Create by ysterfoxmail.com 2018-8-2一&#xff1a;开始 在使用Spring Boot数据源之前&#xff0c;我们一般会导入相关依赖。其中数据源核心依赖就是spring‐boot‐starter‐jdbc 如下 <dependency><groupId>org.springframework.boot</groupId> …

Dapr 集成 Open Policy Agent 实现 接口的访问控制

大型项目中基本都包含有复杂的访问控制策略&#xff0c;特别是在一些多租户场景中&#xff0c;例如Kubernetes中就支持RBAC&#xff0c;ABAC等多种授权类型。Dapr 的 中间件 Open Policy Agent 将Rego/OPA策略应用到传入的Dapr HTTP请求中。Open Policy AgentOpen Policy Agent…

【Java】BigDecimal

一、前言 在使用Java&#xff0c;double 进行运算时&#xff0c;经常出现精度丢失的问题&#xff0c;总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中&#xff0c;通过一个公式校验该值是否大于0&#xff0c;如果大于0我们会做一件事情&#xff0c;小于0我们又处理其他…

PHP获取当前页面URL

//获取页面url function curPageURL() {$pageURL http;if (!empty($_SERVER[HTTPS])) {$pageURL . "s";}$pageURL . "://";if ($_SERVER["SERVER_PORT"] ! "80") {$pageURL . $_SERVER["SERVER_NAME"].":".$_SER…

【招聘(大连)】北森云计算 .NET 专场招聘

为了更好的实现战略布局&#xff0c;逐步形成以三个产品研发中心&#xff08;北京、成都、大连&#xff09;为主&#xff0c;青岛和南京为辅的产品研发团队配置。北森云第三研发中心&#xff08;大连&#xff09;正式成立&#xff0c;目前大连的人选招聘正式开启&#xff0c;欢…

PHP强制下载文件

//有时我们不想让浏览器直接打开文件&#xff0c;如PDF文件&#xff0c;而是要直接下载文件&#xff0c;那么以下函数可以强制下载文件 //函数中使用了application/octet-stream头类型。 function downloads($filename,$dir./) {$filepath $dir.$filename;if (!file_exists($f…

F5基于证书认证的客户端登录

1.生成密钥RSA类型&#xff0c;密码&#xff1a;123456保存为Openssl格式2.上传客户机SecureCRT生成的公钥 Identity.pub到用户home目录下.ssh文件夹中cd .sshmv Identity.pub authorized_keys ##cat .ssh/id_rsa.pub >> ~/.ssh/authorized_keys3.更改F5 ssh配置文件tmsh…

C#多线程编程-必知必会

“发现问题的能力&#xff0c;运用技术解决问题的能力&#xff0c;是一个技术人成长的关键”图片故事&#xff1a;洋姜的花&#xff0c;拍摄于2022年7月23日&#xff0c;地点&#xff1a;北京奥林匹克森林公园 &#xff0c;摄影师&#xff1a;刘先生概要&#xff1a;使用C#发起…

理解Go Interface

理解Go Interface1 概述Go语言中的接口很特别&#xff0c;而且提供了难以置信的一系列灵活性和抽象性。接口是一个自定义类型&#xff0c;它是一组方法的集合&#xff0c;要有方法为接口类型就被认为是该接口。从定义上来看&#xff0c;接口有两个特点:接口本质是一种自定义类型…

『中级篇』Dockerfile详解(17)

一般的&#xff0c;Dockerfile 分为四部分&#xff1a;基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 ####官网学习 https://docs.docker.com/engine/reference/builder/#usage ####FROM 必须为第一个命令&#xff0c;指定基础镜像 FROM <image> FROM &…

洛谷 1165日志分析

题目描述 M 海运公司最近要对旗下仓库的货物进出情况进行统计。目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志。该日志记录了两类操作&#xff1a;第一类操作为集装箱入库操作&#xff0c;以及该次入库的集装箱重量&#xff1b;第二类操作为集装箱的出库操作。这些…

KestrelServer详解[1]:注册监听终结点(Endpoint)

具有跨平台能力的KestrelServer是最重要的服务器类型。针对KestrelServer的设置均体现在KestrelServerOptions配置选项上&#xff0c;注册的终结点是它承载的最重要的配置选项。这里所谓的终结点&#xff08;Endpoint&#xff09;与“路由”介绍的终结点不是一回事&#xff0c;…

php截取字符串,带中文,多余的省略号代替

function subtext($text, $length) {if(mb_strlen($text, utf8) > $length) {return mb_substr($text, 0, $length, utf8)....;} else {return $text;}}$str 我们是family happy family; echo subtext($str,5); //我们是fa...