请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

韩岗 如何做一个和嘀嘀打车一样的高并发互联网架构 西门水浒

[复制链接]
查看: 607|回复: 0

44

主题

44

帖子

134

积分

等待验证会员

积分
134
发表于 2019-7-12 07:28 | 显示全部楼层 |阅读模式
这是写在帖子头部的内容


1. 大型网站系统的特点

  • 高并发、大流量
  • 高可用
  • 海量数据
  • 用户散布普遍,收集情况复杂
  • 平安情况卑劣
  • 需求快速变更,迭代频仍
  • 渐进式成长
2. 大型网站架构演变过程
2.1. 初始阶段架构
题目:网站运营早期,拜候用户少,一台办事器绰绰不足。
特征:利用法式、数据库、文件等一切的资本都在一台办事器上。
描写:凡是办事器操纵系统利用 linux,利用法式利用 PHP 开辟,然后摆设在 Apache 上,数据库利用 Mysql,浅显称为 LAMP。聚集各类免费开源软件以及一台廉价办事器便可以起头系统的成长之路了。


2.2. 利用办事和数据办事分手
题目:越来越多的用户拜候致使性能越来越差,越来越多的数据致使存储空间不敷,一台办事器已不敷以支持。
特征:利用办事器、数据库办事器、文件办事器别离自力摆设。
描写:三台办事器对性能要求各不不异:利用办事器要处置大量营业逻辑,是以需要更快更强大的 CPU;数据库办事器需要快速磁盘检索和数据缓存,是以需要更快的硬盘和更大的内存;文件办事器需要存储大量文件,是以需要更大容量的硬盘。


2.3. 利用缓存改良性能
题目:随着用户逐步增加,数据库压力太大致使拜候提早。
特征:由于网站拜候和财富分派一样遵守二八定律:80% 的营业拜候集合在 20% 的数据上。将数据库中拜候较集合的少部分数据缓存在内存中,可以削减数据库的拜候次数,下降数据库的拜候压力。
描写:缓存分为两种:利用办事器上的当地缓存和散布式缓存办事器上的远程缓存,当地缓存拜候速度更快,但缓存数据量有限,同时存在与利用法式争用内存的情况。散布式缓存可以采用集群方式,理论上可以做到不受内存容量限制的缓存办事。


2.4. 利用利用办事器集群
题目:利用缓存后,数据库拜候压力获得有用减缓。可是单一利用办事器可以处置的请求毗连有限,在拜候高峰期,成为瓶颈。
特征:多台办事器经过负载平衡同时向内部供给办事,处理单一办事器处置才能和存储空间不敷的题目。
描写:利用集群是系统处理高并发、海量数据题目标常用手段。经过向集群中追加资本,提升系统的并发处置才能,使得办事器的负载压力不再成为全部系统的瓶颈。


2.5. 数据库读写分手
题目:网站利用缓存后,使绝大部分数据读操纵拜候都可以欠亨过数据库就能完成,可是仍有一部分读操纵和全数的写操纵需要拜候数据库,在网站的用户到达一定例模后,数据库由于负载压力太高而成为网站的瓶颈。
特征:今朝大部分的支流数据库都供给主从热备功用,经过设置两台数据库主从关系,可以将一台数据库办事器的数据更新同步到一台办事器上。网站操纵数据库的主从热备功用,实现数据库读写分手,从而改良数据库负载压力。
描写:利用办事器在写操纵的时辰,拜候主数据库,主数据库经过主从复制机制将数据更新同步到从数据库。这样当利用办事器在读操纵的时辰,拜候从数据库获得数据。为了便于利用法式拜候读写分手后的数据库,凡是在利用办事器端利用专门的数据拜候模块,使数据库读写分手的对利用通明。


2.6. 反向代理和 CDN 加速
题目:中国收集情况复杂,分歧地域的用户拜候网站时,速度不同也极大。
特征:采用 CDN 和反向代理加速系统的静态资本拜候速度。
描写:CDN 和反向代理的根基道理都是缓存,区分在于 CDN 摆设在收集供给商的机房,利用户在请求网站办事时,可以从间隔自己比来的收集供给商机房获得数据;而反向代理则摆设在网站的中心机房,当用户请求到达中心机房后,首先拜候的办事器时反向代理办事器,假如反向代理办事器中缓存着用户请求的资本,就将其间接返回给用户。


2.7. 散布式文件系统和散布式数据库
题目:随着大型网站营业延续增加,数据库经过读写分手,从一台办事器拆分为两台办事器,仍然不能满足需求。
特征:数据库采用散布式数据库,文件系统采用散布式文件系统。
描写:散布式数据库是数据库拆分的最前方式,只要在单表数据范围很是庞大的时辰才利用。不到不得已时,更常用的数据库拆分手段是营业分库,将分歧的营业数据库摆设在分歧的物理办事器上。


2.8. 利用 NoSQL 和搜索引擎
题目:随着网站营业越来越复杂,对数据存储和检索的需求也越来越复杂。
特征:系统引入 NoSQL 数据库及搜索引擎。
描写:NoSQL 数据库及搜索引擎对可伸缩的散布式特征具有更好的支持。利用办事器经过同一数据拜候模块拜候各类数据,减轻利用法式治理诸大都据源的麻烦。


2.9. 营业拆分
题目:大型网站的营业场景日益复杂,分为多个产物线。
特征:采用分而治之的手段将全部网站营业分红份歧的产物线。系统上依照营业停止拆分革新,利用办事器依照营业区分停止别离摆设。
描写:利用之间可以经过超链接建立关系,也可以经过消息行列停止数据分发,固然更多的还是经过拜候同一个数据存储系统来组成一个关联的完整系统。
纵向拆分:将一个大利用拆分为多个小利用,假如新营业较为自力,那末就间接将其设想摆设为一个自力的 Web 利用系统。纵向拆分相对较为简单,经过梳理营业,将较少相关的营业剥离即可。
横向拆分:将复用的营业拆分出来,自力摆设为散布式办事,新增营业只需要挪用这些散布式办事横向拆分需要识别可复用的营业,设想办事接口,标准办事依靠关系。


2.10. 散布式办事
题目:随着营业越拆越小,存储系统越来越庞大,利用系统整体复杂水平呈指数级上升,摆设保护越来越困难。由于一切益用要和所稀有据库系吐洮接,终极致使数据库毗连资本不敷,拒绝办事。
特征:公共营业提取出来,自力摆设。由这些可复用的营业毗连数据库,经过散布式办事供给共用营业办事。


3. 大型网站架构形式
3.1. 分层
大型网站架构中常采用分层结构,将软件系统分为利用层、办事层、数据层:

  • 利用层 - 负责具体营业和视图展现。如网站首页及搜索输入和成果展现。
  • 办事层 - 为利用层供给办事支持。如用户治理办事、购物车办事等。
  • 利用层 - 供给数据存储拜候办事。如数据库、缓存、文件、搜索引擎等。
分层架构的约束:制止跨条理的挪用(利用层间接挪用数据层)及逆向挪用(数据层挪用办事层,大概办事层挪用利用层)。
分层结构内部还可以继续分层,如利用可以再细分为视图层和营业逻辑层;办事层也可以细分为数据接口层和逻辑处置层。
3.2. 朋分
将分歧的功用和办事朋分隔来,包装成高内聚低耦合的模块单元。这有助于软件的开辟和保护,便于分歧模块的散布式摆设,进步网站的并发处置才能和功用扩大才能。
3.3. 散布式
大于大型网站,分层和朋分的一个首要目标是为了切分后的模块便于散布式摆设,行将分歧模块摆设在分歧的办事器上,经过远程挪用协同工作。
散布式意味可以用更多的机械工作,那末 CPU、内存、存储资本也就更丰富,可以处置的并发拜候和数据量就越大,进而可以为更多的用户供给办事。
散布式也引入了一些题目:

  • 办事挪用必须经过收集,收集提早会影响性能
  • 办事器越多,宕机几率也越大,是可用性下降
  • 数据分歧性很是困难,散布式事务也难以保证
  • 网站依靠扑朔迷离,开辟治理保护困难
常用的散布式计划:

  • 散布式利用和办事
  • 散布式静态资本
  • 散布式数据和存储
  • 散布式计较
3.4. 集群
集群即多台办事器摆设不异利用组成一个集群,经过负载平衡装备配合对外供给办事。
集群需要具有伸缩性和故障转移机制:伸缩性是指可以按照用户拜候量向集群增加或削减机械;故障转移是指,当某台机械出现故障时,负载平衡装备或生效转移机制将请求转发到集群中的其他机械上,从而不影响用户利用。
3.5. 缓存
缓存就是将数据寄存在间隔比来的位置以加速处置速度。缓存是改良软件性能的第一手段。
网站利用中,缓存除了可以加速数据拜候速度之外,还可以减轻后端利用和数据存储的负载压力。
常见缓存手段:

  • CDN
  • 反向代理
  • 当地缓存
  • 散布式缓存
利用缓存有两个条件:

  • 数据拜候热门不均匀,频仍拜候的数据应当放在缓存中
  • 数据在某个时候段有用,不外很快过期,否则缓存数据会因已经生效而发生脏读
3.6. 异步
软件成长的一个重要方针和驱动力是下降软件耦合性。事物之间间接关系越少,相互影响就越小,也就更轻易自力成长。
大型网站架构中,系统解耦的手段除了分层、朋分、散布式等,还有一个重要手段——异步。
营业间的消息传递不是同步伐用,而是将一个营业操纵拆分红多阶段,每个阶段间经过同享数据的方式异步履行停止合作。

  • 在单一办事器内部可经过量线程同享内存行列的方式实现异步,处在营业操纵前面的线程将操纵输出到行列,前面的线程从行列中读取数据停止处置;
  • 在散布式系统中,多个办事器集群经过散布式消息行列实现异步。
异步架构是典型的生产者消耗形式,两者不存在间接挪用。异步消息行列还有以下特征:

  • 进步系统可用性
  • 加速响应速度
  • 消除并发拜候高峰
3.7. 冗余
大型网站,出现办事器宕机是必定事务。要保证部分办事器宕机的情况下网站仍然可以继续办事,不丧失数据,就需要一定水平的办事器冗余运转,数据冗余备份。这样当某台办事器宕机是,可以将其上的办事和数据拜候转移到其他机械上。
拜候和负载很小的办事也必须摆设 最少两台办事器组成一个集群,目标就是经过冗余实现办事高可用。数据除了定期备份,存档保存,实现 冷备份 外;为了保证在线营业高可用,还需要对数据库停止主从分手,实时同步实现 热备份。
为了抵抗地震、海啸等不成抗身分致使的网站完全瘫痪,某些大型网站会对全部数据中心停止备份,全球范围内摆设 灾备数据中心。网站法式和数据实时同步到多个灾备数据中心。
3.8. 自动化
大型网站架构的自动化架构设想首要集合在公布运维方面:

  • 公布进程自动化
  • 自动化代码治理
  • 自动化测试
  • 自动化平安监测
  • 自动化摆设
  • 运维自动化
  • 自动化监控
  • 自动化报警
  • 自动化生效转移
  • 自动化生效规复
  • 自动化升级
  • 自动化分派资本
3.9. 平安

  • 密码 和 手机校验码 停止身份认证
  • 登录、买卖等重要操纵需要对收集通讯停止 加密,存储的敏感数据如用户信息等也停止加密处置
  • 避免机械人法式进犯网站,利用 考证码 停止识别
  • 对常见用于 进犯 网站的 XSS 进犯、SQL 注入、停止编码转换等响应处置
  • 对渣滓信息、敏感信息停止 过滤
  • 对买卖转账等重要操纵按照买卖形式和买卖信息停止 风险控制
4. 大型网站焦点架构要素
架构 的一种浅显说法是:最高条理的计划,难以改变的决议。
除了系统功用需求外,架构还需要关注以下架构要素:
4.1. 性能
性能题目无处不在,所以网站性能优化手段也非常繁多:

  • 前端
  • 阅读器缓存
  • 静态资本紧缩
  • 公道结构页面
  • 削减 cookie 传输
  • CDN
  • 利用办事器
  • 当地缓存
  • 散布式缓存
  • 异步消息行列
  • 集群
  • 代码层面:利用多线程、改良内存治理
  • 数据库
  • 索引
  • 数据库缓存
  • SQL 优化
4.2. 可用性
可用性指部分办事器出现故障时,还能否对用户供给办事

  • 冗余自动化:经过预公布考证、自动化测试、自动化公布、灰度公布等手段,削减将故障引入线上情况的能够
  • 经过负载平衡装备建立集群配合对外供给办事
  • 数据存储在多台办事器,相互备份
4.3. 伸缩性
权衡伸缩的标准就是能否可以用多台办事器构建集群,能否轻易向集群中增删办事器节点。增删办事器节点后能否可以供给和之前无差此外办事。集群中可包容的总办事器数能否有限制。

  • 利用办事器集群 - 只要办事器上保存数据,则一切办事器都是对等的,经过负载平衡装备向集群中不竭加入办事器即可
  • 缓存办事器集群 - 加入新的办事器能够会致使缓存路由生效,进而致使集群中的大部分缓存数据都没法拜候。虽然缓存数据可以经过数据库重新加载,可是假如利用严重依靠缓存,能够会致使网站解体。需要改良缓存路由算法保证缓存数据的可拜候性。
  • 关系型数据库集群 - 关系型数据库虽然支持数据复制,主从热备等机制,可是很难做到大范围集群的可伸缩性,是以关系型数据库的集群伸缩性计划必须在数据库之外实现,经过路由分区等手段将摆设有多个数据库的办事器组成一个集群。
  • NOSql 数据库集群 - 由于天赋就是为了应对海量数据而发生,是以对伸缩性的支持凡是都很是好。
4.4. 扩大性
权衡扩大性的标准就是增加新的营业产物时,能否可以实现对现有产物通明无影响,不需要任何修改或很少修改,既有功用便可以上线新产物。首要手段有:事务驱动架构和散布式办事。
4.5. 平安性
平安性庇护网站不受恶意进犯,庇护网站重要数据不被窃取。
接待工作一到五年的Java工程师朋友们加入Java法式员开辟: 721575865
群内供给免费的Java架构进修材料(里面有高可用、高并发、高性能及散布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个常识点的架构材料)公道操纵自己每一分每一秒的时候来进修提升自己,不要再用"没偶然候“来粉饰自己思惟上的怠惰!趁年轻,用力拼,给未来的自己一个交接!

感激您的阅读

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
http://americanartgalleryandgifts.com/cialis-20-mg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 789gg游戏论坛_游戏家族_公会交流论坛_第一游戏玩家交流社区 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表