大型网站系统与中间件总结(一)

为什么要有分布式系统:

  • 升级单机处理能力的性价越来越低
  • 单机处理能力存在瓶颈
  • 出于稳定性和可用性的考虑

单机处理能力:

  • 处理器Cpu,内存,磁盘和网路。

我们都知道摩尔定律:

  • 当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍
  • 性能也将会提升一倍,单颗处理器有自己的性能瓶颈,即使你花更多的钱,去 买计算能力也买不到的。

强调分布系统的稳定性,可用性的提升:

  • 如果采用单机系统,那么这台机器正常的时候一切ok,一旦出问题,系统就不能使用了。当然,可以考虑容灾备份等方案,而这些方案就会让你的单机系统演变成分布式系统了。
  • 计算机断电时,内存中的数据会丢失,外存中仍然能够保持存储的数据。

这里所说的多线程,指的是单进程内的多线程

分布式系统的缺点:

  • 缺乏全局时钟
  • 面对故障独立性
  • 处理单点故障
  • 事务的挑战(两阶段提交2pc,最终一致,BASE,CAP,PAXOS)

如何判断一个网站是否为大型网站:

  • 数据量,访问量,业务的复杂度

读写分离带来两个问题:

  • 数据复制问题(数据库系统的自身机制,数据复制时延时问题,以及复制过程中数据的源和目标之间的映射关系及过滤条件的支持,短期数据不一致,5.5之前的版本支持异步的数据复制,会有延迟,完全镜像方式的复制,保证备库和主库的数据一致。5.5中加入了semi-sync的支持,数据安全性上来说比异步好,还是存在着复制的延时)
  • 应用对于数据源的选择问题

搜索引擎的倒排表方式,他能够大大提升检索速度,对搜索出来的数据进行排序都是很重要的:

  • 引入了搜索引擎后,什么数据应该走数据库。构建搜索用的索引的过程就是一个数据复制的过程,只不过是一个简单复制对应的数据。构建索引的过程需要自己来实现。

构建索引的过程可以两个维度:

  • 全量/增量划分
  • 实时/非实时划分
  • 全量方式用于第一次建索引(可能是新建,也可是重建)
  • 而增量方式是在全量的基础上持续更新索引。

* 搜索引擎解决了什么:

  • 站内搜索时某些场景下读的问题,提供了更好的查询效率。我们可以把搜索引擎当成一个读库。

  • 分布式存储系统通过集群提供了一个高容量,高并发访问,数据冗余容灾的支持。

你可能感兴趣的:(大型网站系统与中间件)