关于系统架构

构建一个应对高并发的分布式系统并不是很容易,别人的架构不一定适合你。但也不是很复杂,因为很多场景问题都有成熟的解决方案。系统是不断优化演变的,不需要一开始就搭建多么完美的架构。搜索一下“架构演变”会有很多文章,比如:
大型网站架构演变和知识体系
大型网站系统架构的演化
浅谈web网站架构演变过程
大型网站架构演化历程
从100PV到1亿级PV网站架构演变
各大互联网公司架构演进之路汇总
图片服务架构演进
等等

各种词汇:
高可用High-Availability、高可扩展性(高可伸缩性)High-Scalability
吞吐量Throughput(QPS/TPS)、并发量C10K
解耦LooselyCoupled、冗余Redundancy、分区Partitions、缓存Caches、代理Proxies、索引Indexes
集群Cluster、主从Master-Slave、水平/垂直切分Sharding
请求负载均衡LoadBalancing、请求路由Route、状态复制Replication
故障转移Failover、故障回复Failback、心跳检测Healthcheck/Heartbeat
纵向扩展Scale-up、横向扩展Scale-out
自动升降级Auto-upgrade/downgrade
AWS – Design for Failure

发展趋势:
集中式 -> 分布式 -> 集中式

(1)运维角度
网上的文章大多都是站在运维的角度,大致是以下这样的优化过程:
1)单机(Web、DB、File)
2)服务器分离 DB/Web/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

2)事件驱动架构Event-Driven Architecture
消息队列

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)架构应该考虑的问题
  • 全局设置
  • 安全设置
  • 权限管理***
  • 会话管理***
  • 排他控制
  • 异常处理
  • 日志输出
  • 计划任务***
  • 页面模板
  • 数据校验
  • 上传下载***
  • 数据分页
  • 重复提交
  • 消息通知
  • 邀请码验证码
  • 浏览器识别
  • 个性化网址
  • 保留字敏感词
  • 国际化
  • 数据库迁移
  • 第三方登录
  • 单点登录
***的部分是分布式环境下需要注意的问题。

参考:
http://colobu.com/2015/04/08/software-architecture-patterns/

你可能感兴趣的:(关于系统架构)