从零开始学架构 01-架构基础【笔记】

从零开始学架构(李运华) pdf下载地址
https://pan.baidu.com/s/1cZJOR3cfpmS1BDfp6gJaBQ
提取码:u2ou

说明:对从零开始学架构这本书看时所做的记录,对具体的功能点可以自行百度

  • 模块,逻辑角度拆分,如注册模块、登录模块
  • 组件,物理角度来分,如web服务器,nginx

框架是标准的,有规范的产品,关注规范

架构关注结构

软件架构指软件系统的顶层结构,为了高性能、高可用、可扩展、所以要做架构设计,但盲目的这样做会消耗很多额外的时间。

架构设计的目的是为了解决复杂度带来的问题

  • 单机复杂度
  • 集群复杂度
简单的系统更容易做到高性能,因为简单功能点越少,越好优化。
高可用指系统无中断地执行其功能,本质通过冗余来实现。加服务器,加机房,加厂家,如联通。
存储高可用的难点不在于如何备份数据,而在于如何减少或规避数据不一致,对业务造成的影响。

各种数据库出现解决的问题

  • nosql:为了解决关系型数据库,无法对应高并发访问带来的访问压力
    • mencache、redis只是把数据库的索引独立出来,做成了一个缓存系统
  • 全文检索引擎:为了解决关系型数据库,耐like搜索的低效的问题
    • solr+lucene
    • elasticsearch
  • hadoop:为了解决传统文件系统,无法对应海量数据存储和计算的问题
    • hadoop基础其实是集群方案+数据复制方案
架构设计原则
  • 合适原则,合适由于业界领先
  • 简单原则,简单优于复杂(结构复杂性,逻辑复杂性)
  • 演化原则,演化优于一步到位,类似于生物演化
为何备选方案
  1. 设计备选方案,备选阶段,关注的是技术选型,而不是技术细节,一般3-5个备选方案
  2. 评估和选择备选方案,备选方案,每个都是可行的,否则也不能叫备选方案
  3. 指导思想,最简单派,最牛派,最熟派,领导派
  • 横向扩展是web集群
  • 纵向扩展拆分为子系统
  • 从性能,复杂度,成本,可扩展,可用性进行对比,按优先级选择对比的属性
总结

首先分析出系统的复杂性,在挑选合适的架构模式进行组合

没有更多推荐了,返回首页