大型分布式系统架构

简介: 本文主要是从软件的质量属性的角度,来分析大型分布式系统通常采用的架构方法。 1. 性能 (Performance) 性能是指系统的响应能力,性能测试经常要使用基准测试(Benchmark Test). 提高性能的办法: 异步化 - 使用消息系统 和 batch处理 缓存 - 有多重缓存策略,本地缓存,分布式缓存同步,缓存服务器。 系统分割(水平和垂直分割)-  数据库读写

本文主要是从软件的质量属性的角度,来分析大型分布式系统通常采用的架构方法。

1. 性能 (Performance)

性能是指系统的响应能力,性能测试经常要使用基准测试(Benchmark Test).

提高性能的办法:

异步化 - 使用消息系统 和 batch处理

缓存 - 有多重缓存策略,本地缓存,分布式缓存同步,缓存服务器。

系统分割(水平和垂直分割)- 

数据库读写分离 - 


性能测试的办法:基准测试


2. 可靠性(Reliability)

是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

可靠性度量:

可靠性度量标准通常用于计算单个解决方案组件的故障概率。用于定义组件或系统可靠性的一个度量标准是平均故障间隔时间 (MTBF)。MTBF 是平均间隔时间,通常以千小时或万小时(有时称为“开机时间”或 POH)进行表示,即经过此间隔时间后组件出现故障并需要修复。MTBF 使用以下公式进行计算:

MTBF = (total elapsed time - sum of downtime)/number of failures


3. 可用性(Availability)
是系统能够正常运行的时间比例。
可用性=系统运行时间/(系统运行时间+系统停机时间)
Percentage of availability = (total elapsed time - sum of downtime)/total elapsed time
可用性通常以“九”进行度量。例如,可用性级别为“三个九”的解决方案能够在 99.9% 的时间内支持其预期功能,相当于在 24x7x365(每天 24 小时/每周七天/一年 365 天)的基础上,每年 8.76 小时的年停机时间.
或者用公式可用度 = MTTF / MTBF
MTBF (Mean Time Between Failure) = MTTF (Mean Time To Failure) + MTTR ( Mean Time To Repaire)
平均失效间隔时间 = 平均失效等待时间 + 平均失效修复时间。

提高可用性的设计技术:
可以能过分布式并行系统来提高系统的准确率,并行系统的好处当一个节点出现问题,另一个节点任然可以工作

4. 安全性(Security)
是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力


8.互操作性(Inter-operation) 
作为系统组成部分的软件不是独立存在的。经常与其他系统或自身环境相互作用。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。

9.可伸缩性(Scalability)
这个书上没有提,但是在实际大型分布式系统架构中很重要,攸关生死,没有可伸缩性,Taobao就没办法支撑双11,而这里的可伸缩性主要是指水平扩展的能力(scale out),就是随着业务的增长,系统能够提供平滑水平扩展以支撑业务的发展。

提高可伸缩性的办法: 
应用服务器集群 - 通过对集群加减机器来调整对服务的支持能力,涉及的技术有ESB,无状态Session管理,分布式缓存等...
业务垂直分割 - 对相关业务进行切分,例如将listing, selling, checkout 分拆成独立的系统
分表分库 -  系统的瓶颈往往出现在数据库端,因为应用服务器可以集群,通常会采用分表分库的方法来水平扩展数据库,选取合适的数据路由算法,因为分割后,不同的数据要知道去哪个表哪个库能找到,常用的数据路由算法有Mod 和 lookup

更多可以参见eBay的scalability 最佳实践: http://www.infoq.com/cn/articles/ebay-scalability-best-practices

10. 可监控性 (Monitorability )
这个是我自己想出来的,因为监控真的也是太重要了。没有监控的系统,就像是一辆没有仪表盘的汽车,你不知道车速,不知道油量,也不知道车况,车子也许也还能跑,但会跑的很不安心。这就是老大们总喜欢让下面的人开发各种各样的dashboard,这样有什么问题就一目了然了,而下面的人,如果你足够聪明的话,在没有人要求的情况下,就能发现那些值得监控的点,并做成dashboard,这样老大们会对你刮目相看的。

关于具体的监控和日志,请参看我另一篇博文: http://blog.csdn.net/significantfrank/article/details/25772801

目录
相关文章
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
3月前
|
存储 JSON 数据库
Elasticsearch 分布式架构解析
【9月更文第2天】Elasticsearch 是一个分布式的搜索和分析引擎,以其高可扩展性和实时性著称。它基于 Lucene 开发,但提供了更高级别的抽象,使得开发者能够轻松地构建复杂的搜索应用。本文将深入探讨 Elasticsearch 的分布式存储和检索机制,解释其背后的原理及其优势。
220 5
|
4天前
|
存储 算法 安全
分布式系统架构1:共识算法Paxos
本文介绍了分布式系统中实现数据一致性的重要算法——Paxos及其改进版Multi Paxos。Paxos算法由Leslie Lamport提出,旨在解决分布式环境下的共识问题,通过提案节点、决策节点和记录节点的协作,确保数据在多台机器间的一致性和可用性。Multi Paxos通过引入主节点选举机制,优化了基本Paxos的效率,减少了网络通信次数,提高了系统的性能和可靠性。文中还简要讨论了数据复制的安全性和一致性保障措施。
18 1
|
12天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
26 8
|
8天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
2月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
2月前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
2月前
|
存储 安全 API
单元化架构,分布式系统的新王!
【10月更文挑战第9天】
150 0
单元化架构,分布式系统的新王!
|
4月前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)