关闭

大型网站架构设计---经验总结

标签: 服务器后台开发开发经验数据库性能并发
673人阅读 评论(0) 收藏 举报
分类:
个人的服务开发经验总结:

Web API服务:
1)负载均衡
固定用户的请求,重定向到固定机房(机器),因为机房之间数据的replication有延迟,这样可以保证每个用户访问的数据都是没有延迟的;

2)防止雪崩
挡住同IP频繁的相同请求

3)精简返回给用户的数据
减少网络流量和传输时间,开辟空间小,服务压力小

4)API调用下层服务时,异步调用(MQ),超时处理
耗时久的异步调用,和其他服务调用并发处理,减少等待;支线服务的调用异常不能影响主线服务的返回,支线服务挂了,仍然返回数据

5)统计Log
api的log直接记录了用户的行为,可以分析做很多事情:用户画像,推荐,个性化

6)灰度发布
基于api层做灰度发布,在api层做用户id过滤,只对满足条件的用户展示响应的内容

Service层服务:
1)每个接口的时间消耗统计
service的性能分析,很重要的依据

2)最大限度利用本地缓存
减少网络延迟,磁盘io延迟

3)高并发服务不允许复杂的SQL操作
复杂的SQL操作在DB中执行时间过长,阻碍了并发;还有一个原因是,如果有复杂的连表查询,以后会影响分库分表

4)怎么解决DB中复杂的查询呢
加载到内存在内存中做
根据实际应用场景,离线处理好数据,DB中保存用户直接展示的数据

Web API和Service共同需要的经验:
1)无缝发布
上线,不能影响用户体验

2)低延迟响应所有请求

3)分布式部署,多机房,多机器
机房可能出故障,单个机房要能抗住所有压力,单个机房要部署有所有的重要服务

4)RPC接口,经验数据
API调用RPC接口,量大时,数据的序列化和反序列化是瓶颈

5)服务性能监控
机器的监控,服务返回值的监控,异常日志报警,超时报警

6)GC调优

7)压力测试
单机测试,线上服务器测试,逐步的调权重
用历史请求模拟用户请求,这个是最安全的
对所有服务进行预估,必须对所有服务的上限做到心中有数
实时的扩展机器,必须还能做到有机器剩余,能够实时添加进去作为临时扩展

数据层的经验:
1)DB选取、文件系统选取
关系型数据库、nosql数据库、hdfs还是redis?根据业务场景选择,不同的细粒度服务不同的选择,一定要考虑数据规模和扩展性

2)初始,估计好数据的规模
好的DB选择,好的分库分表

3)数据的sharding,读写分离
中间件、代码中

4)根据应用场景决定库、表的设计
读多写少、读写均衡、写多度少

5)扩容、迁移
更大的sharding,更多的从库
一般规律是:从库复制 -> 停写 -> 切换
找业务量最小的时候上线
0
0
查看评论

Lucene实践(二):Lucene总体设计架构

Lucene总的来说是:一个高效的,可扩展的,全文检索库。全部用Java实现,无须配置。仅支持纯文本文件的索引(Indexing)和搜索(Search)。不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。        在L...
  • zmx729618
  • zmx729618
  • 2016-10-26 15:14
  • 333

架构设计的指导思想——总结《大型网站技术架构:核心原理与案例分析》一书

本文分为两大部分,9个架构模式和8个架构要素。9个架构模式分别是分层,分割,分布式,集群,缓存,异步,冗余,自动化,安全。8个架构要素分别是性能,可用性,可伸缩,可扩展,安全,成本,可维护,可移植。 在展开阐述之前,先谈谈架构演化思想:好的架构都是演化而来的,好的架构是满足当时业务的需求,切不要为了...
  • zhouqinuan
  • zhouqinuan
  • 2017-05-16 21:34
  • 199

大型网站数据库优化及浅析大型网站的架构(转)

大型网站数据库优化千万人同时访问的网站,一般是有很多个数据库同时工作,说明白一点就是数据库集群和并发控制,这样的网站实时性也是相对的。这些网站都有一些共同的特点:数据量大,在线人数多,并发请求多,pageview高,响应速度快。总结了一下各个大网站的架构,主要提高效率及稳定性的几个地方包括:...
  • iflash50
  • iflash50
  • 2009-06-19 10:09
  • 11335

基于Java技术的大型网站架构设计方案

基于Java技术的大型网站架构设计方案 笑游江湖 发表于 2014-03-16 16:56:00 | 分类标签: 网站架构 JAVA 高并发 1、Web层 主体架构可以基于 Struts 1.X/2.X,当然有很多更好的控制层框架供选择,以快速敏捷为准则吧。  抽象出核心库封装...
  • JackieLiuLixi
  • JackieLiuLixi
  • 2014-05-23 17:24
  • 15582

大型网站技术架构(六)网站的伸缩性架构

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的伸缩性设计可以分成两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者...
  • u012562943
  • u012562943
  • 2015-12-25 16:23
  • 1255

大型网站架构设计

 
  • Diogin
  • Diogin
  • 2007-07-25 20:58
  • 24941

大型网站的架构设计图分享-转

大型网站的架构设计图分享-转 近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩...
  • h348592532
  • h348592532
  • 2015-05-20 17:49
  • 1209

大型网站技术架构:核心原理与案例分析-李智慧

大型网站技术架构:核心原理与案例分析》作者是拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历程。   没有晦涩难懂的术语,没有诘屈聱牙的文句,没有故弄玄虚的观点……   明明白白的语句,清清楚楚的文法,干净利落的建议——...
  • Cloud_Strife_1985
  • Cloud_Strife_1985
  • 2015-03-01 13:57
  • 1833

【大型网站技术架构笔记】(三)高性能与高可用架构

性能测试指标1.响应时间。 2.并发数。如果暂时没有对应的准确监控,针对不同业务模型,可以有不一样的并发数的预估。我们的系统进行峰值并发数预估的话,有一种比较粗略的计算方式,即全天请求平均每秒并发数 * 3。但也需要case by case。 3.吞吐量。比较常见的有QPS(每秒查询数)、HPS...
  • surlymo
  • surlymo
  • 2016-02-26 01:07
  • 1556

读-李智慧-大型网站技术架构:核心原理与案例分析

网站构架演进 大型网站的特点 架构演化历程 价值观 架构模式 分层 分割 分布式 集群 缓存 异步 冗余 自动化 安全 性能 性能测试 web前端性能优化 应用服务器性能优化 存储性能优化 可用性 可用性度量和考核 高可用的应用 高可用的服务 高可用的数据 高可用的软件质量保证 网站运行监控 伸缩性...
  • xiaoxufox
  • xiaoxufox
  • 2016-11-24 09:22
  • 2969
    个人资料
    • 访问:47567次
    • 积分:830
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:0篇
    • 译文:9篇
    • 评论:8条
    最新评论