构建一个应对高并发的分布式系统并不是很容易,别人的架构不一定适合你。但也不是很复杂,因为很多场景问题都有成熟的解决方案。系统是不断优化演变的,不需要一开始就搭建多么完美的架构。搜索一下“架构演变”会有很多文章,比如:
大型网站架构演变和知识体系
大型网站系统架构的演化
浅谈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培训-产品架构及基础知识-孙亮
掌握计算机硬软件与网络的基础知识; 熟悉信息系统开发过程; 理解信息系统开发标准、常用信息技术标准; 熟悉主流的中间件和应用服务器平台; 掌握软件系统建模、系统架构设计基本技术; 熟悉掌握信息技术安全、...
LTE资料大全TD-LTE基础知识史上最强悍的LTE知识集锦LTE-EPC原理LTE原理及系统架构资料合集(40个): 4G核心网介绍-LTE和EPC介绍.pptx EPC技术原理.pptx EPC核心网培训.pptx LTE-EMM过程一-初始化.pdf LTE-EPC原理....
云计算基础架构应用
系统架构师(软考)----系统开发基础知识.pdf
IMS基础知识和架构
云计算基础架构应用
「安全资讯」魔高一尺,道高一丈:工业控制系统的内生安全观 - 基础架构安全 安全运维 安全测试 应用安全 WEB应用防火墙 访问管理
云计算基础架构应用
课程采用《系统架构设计师教程第四版》教程,对涉及考试的考点进行讲解,主要内容包括:软件架构设计、软件工程、项目...本课程适合准备参加系统架构设计师考试的学员,特别是基础知识掌握不牢,不知道复习重点的考生。
云计算基础架构应用
本人学习C#过程中的笔记,很多实例代码,基础知识讲解。良心笔记,本着自己回顾查阅材料用,分享出来,希望新入坑的小伙伴快速进入状态,用vs快速实现一些功能。
系统架构方法基础知识,有大量图片说明. 解开架构的神秘面纱 列举众多的示例,供大家参考 希望人人了解架构,人人都可以从架构师的高度开展工作
目前,服务器的CPU仍按CPU的指令系统来区分,通常分为CISC型CPU和RISC型CPU两类,后来又出现了一种64位的VLIM(Very Long Instruction Word超长指令集架构)指令系统的CPU。 一、CISC型CPU CISC是英文"Complex ...
内容涵盖了最新的系统架构设计师考试大纲的所有知识点,对 系统架构设计师所必须掌握的基础理论知识做了详细的介绍,重在培养系统架构设计师所必须具备的专 业技能和方法。 本书内 容既是对系统架构设计师考试的总体...
信息系统基础知识 架构师 软考 pdf 教程
Allen-Bradley控制系统架构概述, 简明的介绍了ContrlLogix控制器建构控制系统的基础知识
本文介绍了FPGA的基础知识和FPGA架构模块,包括I / O焊盘,逻辑块和开关矩阵。FPGA是VLSI的一些新兴趋势领域。 FPGA架构 通用FPGA架构由三种类型的模块组成。它们是I / O块或焊盘,开关矩阵/互连线和可配置逻辑块...
第十三部分 多媒体基础知识 13.1多媒体技术基本概念 13.1.1音频相关概念 13.1.2图像相关概念 13.1.3媒体的种类 13.2多媒体相关计算问题 13.2.1图像容量计算 13.2.2音频容量计算 13.2.3视频容量计算 13.3常见多媒体...