从零开始学架构(李运华) pdf下载地址
https://pan.baidu.com/s/1cZJOR3cfpmS1BDfp6gJaBQ
提取码:u2ou
说明:对从零开始学架构这本书看时所做的记录,对具体的功能点可以自行百度
- 模块,逻辑角度拆分,如注册模块、登录模块
- 组件,物理角度来分,如web服务器,nginx
框架是标准的,有规范的产品,关注规范
架构关注结构
软件架构指软件系统的顶层结构,为了高性能、高可用、可扩展、所以要做架构设计,但盲目的这样做会消耗很多额外的时间。
架构设计的目的是为了解决复杂度带来的问题
- 单机复杂度
- 集群复杂度
简单的系统更容易做到高性能,因为简单功能点越少,越好优化。
高可用指系统无中断地执行其功能,本质通过冗余来实现。加服务器,加机房,加厂家,如联通。
存储高可用的难点不在于如何备份数据,而在于如何减少或规避数据不一致,对业务造成的影响。
各种数据库出现解决的问题
- nosql:为了解决关系型数据库,无法对应高并发访问带来的访问压力
- mencache、redis只是把数据库的索引独立出来,做成了一个缓存系统
- 全文检索引擎:为了解决关系型数据库,耐like搜索的低效的问题
- solr+lucene
- elasticsearch
- hadoop:为了解决传统文件系统,无法对应海量数据存储和计算的问题
- hadoop基础其实是集群方案+数据复制方案
架构设计原则
- 合适原则,合适由于业界领先
- 简单原则,简单优于复杂(结构复杂性,逻辑复杂性)
- 演化原则,演化优于一步到位,类似于生物演化
为何备选方案
- 设计备选方案,备选阶段,关注的是技术选型,而不是技术细节,一般3-5个备选方案
- 评估和选择备选方案,备选方案,每个都是可行的,否则也不能叫备选方案
- 指导思想,最简单派,最牛派,最熟派,领导派
- 横向扩展是web集群
- 纵向扩展拆分为子系统
- 从性能,复杂度,成本,可扩展,可用性进行对比,按优先级选择对比的属性
总结
首先分析出系统的复杂性,在挑选合适的架构模式进行组合