构建一个应对高并发的分布式系统并不是很容易,别人的架构不一定适合你。但也不是很复杂,因为很多场景问题都有成熟的解决方案。系统是不断优化演变的,不需要一开始就搭建多么完美的架构。搜索一下“架构演变”会有很多文章,比如:
大型网站架构演变和知识体系
大型网站系统架构的演化
浅谈web网站架构演变过程
大型网站架构演化历程
从100PV到1亿级PV网站架构演变
各大互联网公司架构演进之路汇总
图片服务架构演进
等等
各种词汇:
高可用High-Availability、高可扩展性(高可伸缩性)High-Scalability
解耦LooselyCoupled
吞吐量Throughput(QPS/TPS)、并发量C10K
冗余Redundancy、分区Partitions、缓存Caches、代理Proxies、索引Indexes、队列Queues
集群Cluster、主从Master-Slave、水平/垂直切分Sharding
请求负载均衡LoadBalancing、请求路由Route、状态复制Replication
故障转移Failover、故障回复Failback、心跳检测Healthcheck/Heartbeat
纵向扩展Scale-up、横向扩展Scale-out
自动升降级Auto-upgrade/downgrade
AWS – Design for Failure
发展趋势:
集中式 -> 分布式 -> 广义集中式(云服务)
根据系统拆分方法:
单体式 -> 分布式 -> SOA -> 微服务
(1)运维角度
网上的文章大多都是站在运维的角度,大致是以下这样的优化过程:
1)单机(Web、DB、File)
2)服务器分离 Web/DB/File
3)DB服务器优化
缓存
读写分离
分库分表
全文索引
NoSQL
4)Web服务器优化
负载均衡(硬负载、软负载L4/L7、DNS负载)
动静分离
CDN和反向代理
应用拆分
5)服务化
消息队列
6)云服务
(2)开发角度
1)分层架构Layered Architecture(N-Tier Architecture)
MVC(Model-View-Controller)
展示层Presentation Layer、业务层Business Layer、持久层Persistence Layer、数据库层Database Layer
也有按功能分包:
Feature1(Controller、Service、Repository)
Feature2(Controller、Service、Repository)
Feature3(Controller、Service、Repository)
2)事件驱动架构Event-Driven Architecture
消息队列
Publish-subscribe
Broadcast
Point-to-point
3)微内核架构Microkernel Architecture(Plug-in Architecture)
核心系统core system、插件模块plug-in modules
4)微服务架构Microservices Architecture
相比单块架构(Monolithic Architecture)更轻量化
5)基于空间的架构Space-Based Architecture(Cloud Architecture)
处理单元processing unit、虚拟化中间件virtualized middleware
(3)Web Service
1)SOA(Service Oriented Architecture)面向服务的架构
ESB(Enterprise Service Bus,企业服务总线)
RPC(Remote Procedure Call Protocol)远程过程调用协议 CORBA/RMI/Thrift
SOAP(Simple Object Access Protocol)简单对象访问协议 UDDI/WSDL
REST(REpresentational State Transfer)表述性状态传递
2)MSA(Micro Service Architecture,微服务架构)
(4)架构应该考虑的问题
全局设置、安全设置、权限管理***、会话管理***、排他控制、异常处理、日志输出、计划任务***、页面模板、数据校验、上传下载***、数据分页、重复提交、消息通知、邀请码验证码、浏览器识别、个性化网址、保留字敏感词、国际化、数据库迁移、第三方登录、单点登录等
***的部分是分布式环境下需要注意的问题。
(5)其他
系统环境:
- Development
- Testing/QA
- Staging/Pre-production
- Production/Live
系统部署:
- Blue Green Deployment
- A/B Testing
- Canary Release
参考:
http://colobu.com/2015/04/08/software-architecture-patterns/
http://www.infoq.com/articles/scalability-principles
http://www.infoq.com/cn/news/2015/04/micro-service-architecture
分享到:
相关推荐
Informatica培训-产品架构及基础知识-孙亮
ARMv6-M 体系架构参考手册中详尽地介绍了ARM处理器的核心模块设计与工作原理,这些信息对嵌入式工程师来说极其重要,因为它们需要理解处理器的基础结构,以便更好地进行软件编程和硬件集成。 手册中提到了几个关键...
学习资料中的“指定教材”是系统架构师考试的核心,其内容通常涵盖了从基础知识到高级概念的广泛领域。例如,体系结构模式的讨论、性能优化的方法、安全性设计的策略、分布式系统和云计算架构的实现等。这些教材通过...
本卷涵盖了Intel 64及IA-32架构的基础知识,包括但不限于: - **处理器架构概述**:介绍Intel 64与IA-32架构的历史演变及其设计理念。 - **体系结构特性**:详细解释了Intel 64架构的关键特性,如64位地址空间的支持...
系统架构知识-前端架构知识分享 本文将详细讲述前端架构知识,涵盖为什么需要规范、基础架构、模块化、换肤模式、组件管理等方面的内容。 一、为什么需要规范 在前端开发中,规范是非常重要的。以前,没有规范的...
总的来说,这个大作业不仅提供了实际操作的机会,还涵盖了计算机组成原理的重要知识点,如指令集设计、硬件描述语言的应用、微架构设计以及系统验证。通过完成这个项目,学生不仅可以提升自己的编程技能,还能增强对...
- **基本架构(Volume 1)**:这部分内容主要介绍Intel 64和IA-32架构的基本概念和技术特性,包括处理器体系结构、寻址模式、指令集等基础理论知识。 - **指令集参考(Volume 2)**:这部分详细列举了所有Intel 64和...
这些内容构成了软件开发人员在进行系统级编程时所必须掌握的基础知识。 在系统架构概况章节中,提到了系统级架构的各种关键组成,例如全局和局部描述符表、系统段、段描述符和门、任务状态段和任务门、中断和异常...
1. **系统架构基础**:这部分内容可能涵盖计算机硬件、操作系统原理、网络通信协议、数据库系统、中间件技术等基础知识,这些都是系统架构师必须掌握的基础。 2. **软件设计与开发方法**:包括面向对象设计、敏捷...
例如,第一卷《基础架构》涵盖了处理器的基础技术细节,第二卷《指令集参考》列出了处理器支持的所有指令及其用法,第三卷是本文档关注的焦点,《系统编程指南》,它主要讲述了如何在系统级别上进行编程,第四卷...
1. **系统架构设计基础**:这部分会涵盖系统架构的基本概念,包括系统架构的定义、分类、角色和任务。考生需要理解不同类型的架构(如分布式、并行、网络等)以及它们的特点和应用场景。 2. **系统需求分析与建模**...
4. **安全性设计**:掌握信息安全的基础知识,包括数据加密、防火墙、入侵检测、访问控制等,能够设计出安全的系统架构。 5. **项目管理**:了解项目管理的基本流程,包括需求分析、项目计划、风险管理、质量管理等...
2. 操作系统:进程管理、内存管理、文件系统、网络通信等基础知识。 3. 数据库管理:数据库模型、SQL语言、事务处理、数据备份与恢复等。 4. 网络技术:TCP/IP协议栈、网络拓扑、网络安全、云计算等。 5. 软件工程:...
"电化学基础知识-双电层知识架构汇总" ...电化学基础知识的双电层知识架构汇总对我们理解电化学系统的工作机理非常重要。它可以帮助我们设计和优化电化学系统的性能,提高电化学系统的能量密度和循环寿命。
选择题主要考察基础知识的理解,案例分析题则要求考生结合实际场景进行问题解决,而综合应用题通常是对整个系统设计能力的全面测试,包括需求分析、架构设计、性能优化等方面。 对于选择题,考生需要掌握的基础知识...
在系统架构设计中,以下几个关键知识点不容忽视: 1. 架构模式:系统架构设计通常基于一系列经过验证的架构模式,如微服务架构、SOA(面向服务架构)、事件驱动架构等,这些模式能解决特定场景下的设计问题。 2. ...
这要求架构师具备跨领域的知识与经验。 #### 三、系统架构的时间性与复杂性 - **时间性**:随着技术的发展和业务的变化,系统架构也需要不断迭代优化。架构师应具备前瞻性,预见未来可能的变化,并据此调整架构...