天道酬勤
编码能力很重要,但是技术视野、技术洞察力,以及我们如何用技术解决问题的能力更为重要
【架构设计】16-高性能缓存 【架构设计】16-高性能缓存
前言虽然我们可以通过很多方式增加存储系统的性能,但某些场景下,只通过存储系统提升性能是不够的: 需要通过复杂的运算得出结果的数据 读多写少的数据:比如明星微博,只要一次Insert,但是却可能需要几千万次的select,对数据库的压力很大
2019-05-30
【架构设计】15-高性能NoSQL 【架构设计】15-高性能NoSQL
关系型数据库的缺点关系型数据库已经非常成熟,但是并不是完美的,仍然有以下缺点: 关系型数据库存储的是行记录,无法存储数据结构。 关系型数据库的Schema扩展非常不方便。 关系型数据库的Schema是强约束,无法操作不存在的列。当要扩
2019-05-30
【架构设计】14-高性能数据库集群:分库分表 【架构设计】14-高性能数据库集群:分库分表
前言读写分离分散了数据库的读写压力,但并没有降低数据库的存储压力。当数据量达到上亿的时候,单台数据库就会成为瓶颈。 单表数据量太大的话,读写性能会很差。增加索引,索引也会很大。 数据库文件太大的话,备份和恢复都要花费很多时间。 数据库文件
2019-05-30
【架构设计】13-高性能数据库集群:读写分离 【架构设计】13-高性能数据库集群:读写分离
前言读写分离就是将数据库的读写操作分配到不同的机器,原理图如下: 读写分离的基本实现: 数据库服务器搭建集群模式,一主一从或一主多从。 数据库主机负责写,数据库从机负责读。 数据库主机通过复制将数据同步到从机,每个数据库服务器都保存所有的
2019-05-30
【架构设计】12-架构设计流程:详细方案设计 【架构设计】12-架构设计流程:详细方案设计
前言在完成备选方案的设计和选择后,我们需要将备选方案进行细化,使得备选方案变成一个可以落地的方案。这就是我们要讲的详细方案的设计。 架构设计第4步:详细方案设计简单的来说,详细方案设计就是将方案涉及到的关键细节给确认下来。详细方案里也有一些
2019-05-30
【架构设计】11-架构设计流程:评估和选择备选方案 【架构设计】11-架构设计流程:评估和选择备选方案
引言在完成备选方案的设计后,如何挑选一个最终方案也是一个很大的挑战,主要是由于: 每个方案都是可行的,如果不可行的话就不可能成为备选方案。 没有哪个方案是完美的。每个方案都可能有缺陷。 评价标准比较主观,因此很容易的评审会议上出现架构师争
2019-05-30
【架构设计】10-架构设计流程:设计备选方案 【架构设计】10-架构设计流程:设计备选方案
架构设计第 2 步:设计备选方案成熟的架构师需要对已经存在的技术非常熟悉,对已经验证过的架构模式烂熟于心。然后根据自己对业务的理解,挑选合适的架构模型进行组合,再对组合的架构模型进行修改和优化。 经过时间的考验,已经被验证的架构模型有很多。
2019-05-30
【架构设计】09-架构设计流程:识别复杂度 【架构设计】09-架构设计流程:识别复杂度
架构设计第一步:识别复杂度前文讲过,架构设计的本质目的是为了解决软件系统的复杂性,所以我们在设计架构时首先要的就是识别系统的复杂性。只有正确分析出软件系统的复杂性,后续的架构才不会偏离方向。如果一个系统的复杂性是功能耦合严重,逻辑复杂,而架
2019-05-30
【架构设计】07-复杂度来源:低成本、安全、规模 【架构设计】07-复杂度来源:低成本、安全、规模
低成本简介通常情况下,我们会通过增加机器来实现高性能和高可用,而低成本是需要我们减少机器来达到低成本的要求。这与高性能和高可用产生了天然的矛盾。所以一般情况下,低成本是架构设计中的附加约束条件,而不是主要目标。比如说老板说这个项目最多只能提
2019-05-30
【架构设计】08-架构设计三原则 【架构设计】08-架构设计三原则
前言成为架构师是每个程序员的梦想,但是程序员和架构师之间有一个巨大的鸿沟,需要程序员去跨域方能成为架构师,那就是“不确认性”。 对于编程而言,其结果是确定的,但是对于架构是不确定的。架构没有编程那么的的约束,可以使用这种方式去实现,而对各种
2019-05-30
1 / 4