架构入门文章记录

2018-10-22  本文已影响0人  CMPEAX

全文搜索解决方案:Elasticsearch

代码层扩展
架构层扩展

设计具备良好可扩展性的系统,有两个思考角度:

复杂度第二个来源:高可用

稍微看一下高可用的定义

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。
系统的高可用方案本质上通过“冗余”来实现高可用。

组成双机热备的方案主要的三种方式分别为:基于共享存储(磁盘阵列)的方式,全冗余方式和复制方式。

计算高可用:指的是无论在哪台机器上进行计算,同样的算法和输入数据,产出的结果都是一样的。(单机变双机)
存储高可用:将数据从一台机器搬到另一台机器,需要经过线路传输。(银行账户存钱余额中不同机房传输存在延迟,可能会导致用户体验下降)

存储高可用不可能同时满足“一致性、可用性、分区容错性”。

高可用常见的决策方式:
1、独裁式
存在一个独立的决策主体,负责收集信息然后进行决策。
所有冗余的个体,为上报者,将状态信息发送给决策者。
2、协商式
两个独立的个体通过交流信息,根据规则进行决策。
3、民主式
多个独立的个体通过投票的方式来进行状态决策。(如ZooKeeper集群在选举leader Paxos)

架构预测变化的复杂性在于:

架构设计三原则:

架构设计步骤

Nginx负载均衡策略:

读写分离原理

读写分离基本实现

分配机制

分配机制两种方式:程序代码封装中间件封装
程序封装特点:

高性能数据库集群:分库分表
读写分离只分散了数据库读写操作的压力,但没有分散存储压力。

上一篇 下一篇

猜你喜欢

热点阅读