12 2021 档案
摘要:极客时间:《从 0 开始学架构》:高性能负载均衡:分类及架构 ####1、引言 高性能集群的*i本质就是通过增加更多的服务器来提升系统整体的计算能力。*i高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的任务分配算法。对于任务分配器,现在更流行的通用叫法是“负载均衡器”。任
阅读全文
摘要:极客时间:《从 0 开始学架构》:单服务器高性能模式:Reactor 与Proactor ####1、引言 单服务器高性能的 PPC 和 TPC 模式,它们的优点是实现简单,缺点是都**无法支撑高并发的场景,**尤其是互联网发展到现在,各种海量用户业务的出现,PPC 和 TPC 完全无能为力。本节讲
阅读全文
摘要:极客时间:《从 0 开始学架构》:单服务器高性能模式:PPC与TPC ####1、引言 高性能是系统中最复杂的一环,其中磁盘、操作系统、CPU、内存、缓存、网络、编程语言、架构等,每个都有可能影响系统达到高性能,因此,要做到高性能计算是一件很复杂很有挑战的事情,软件系统开发过程中的不同阶段都关系着高
阅读全文
摘要:极客时间:《从 0 开始学架构》:高性能缓存架构 ####1、引言 前几章节分别从读写分离、分库分表以及数据库的选择等方面来提升系统的性能,但在某些复杂的业务场景下,单纯的提高存储系统的性能是不够的,典型的场景如下: 需要经过复杂运算后得出的数据,存储系统无能为力 读多写少的数据,存储系统有心无力。
阅读全文
摘要:极客时间:《从 0 开始学架构》:高性能NoSQL ####1、引言 关系型数据库凭借着SQL功能和ACID的属性,活跃于各种各样的系统中,但它并不是完美的,其存在以下缺点: 关系数据库存储的是行记录,无法存储数据结构 关系数据库的 schema 扩展很不方便 关系数据库的表结构 schema 是强
阅读全文
摘要:极客时间:《从 0 开始学架构》:高性能数据库集群:分库分表 ###1、引言 上节讲到了数据库的读写分离,但读写分离仅分散了读写操作的压力,但没有分散存储的压力,当数据量达到成千上万条时,单台数据库服务器的存储能力就会称为系统的瓶颈。主要体现在以下几个方面: 数据量太大,读写的性能会下降,即使有索引
阅读全文
摘要:极客时间:《从 0 开始学架构》:高性能数据库集群:读写分离 ####1、引言 前面几个章节分别介绍了架构设计的目的、常见架构复杂度分析、架构设计原则、架构设计流程,这些只是架构设计的基础。 在具体的实践过程中,架构设计都是基于已有的成熟的模式,结合业务和团队的具体情况,进行一定的优化和调整;即使少
阅读全文
摘要:极客时间:《从 0 开始学架构》:架构设计流程:详细方案设计 ####1、引言 上一章节完成了备选方案的设计和选择,接下来便是对备选方案进行细化,使得备选方案变成一个可以落地的设计方案。 ####2、架构设计第四步:详细方案设计 详细方案设计就是将方案涉及的关键技术细节确定下来 Nginx 的负载均
阅读全文
摘要:极客时间:《从 0 开始学架构》:架构设计流程:评估和选择备选方案 1、引言 上一章节提出针对技术选型尽量提出3~5种备选方案,采用什么方法来评估和选择备选方案呢? 作者的答案是“360度环评”。 2、具体做法 列出我们需要关注的质量属性点,然后分别从这些质量属性的维度去评估每个方案,再综合挑选适合
阅读全文
摘要:极客时间:《从 0 开始学架构》:架构设计流程:设计备选方案 ###1、引言 经过上一章节关于识别复杂度,从而确定了当前系统面临的主要复杂问题后,方案设计就有了明确的目标,便可以进行架构方案的设计。 ###2、架构设计第 2 步:设计备选方案 成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证
阅读全文
摘要:极客时间:《从 0 开始学架构》架构设计流程:识别复杂度 架构设计第 1 步:识别复杂度 **架构设计的本质目的是为了解决软件系统的复杂性,所以在我们设计架构时,首先就要分析系统的复杂性。只有正确分析出了系统的复杂性,后续的架构设计方案才不会偏离方向;否则,如果对系统的复杂性判断错误,即使后续的架构
阅读全文
摘要:极客时间:《从 0 开始学架构》架构设计三原则 ###引言 合适原则、简单原则、演化原则 ###合适原则 合适原则宣言:“合适优于业界领先”。 再好的梦想,也需要脚踏实地实现!这里的“脚踏实地”主要体现在下面几个方面。 将军难打无兵之仗 没那么多人,却想干那么多活,是失败的第一个主要原因。 罗马不是
阅读全文
摘要:参考:https://github.com/liuchengxu/blockchain-tutorial ####引言 在比特币中,没有用户账户,不需要也不会在任何地方存储个人数据(比如姓名,护照号码或者 SSN),但总要有某种途径识别出你是交易输出的所有者(也就是说,你拥有在这些输出上锁定的币),
阅读全文
摘要:极客时间:《从 0 开始学架构》复杂度来源: 低成本、安全、规模 ###一、低成本 低成本本质上是与高性能和高可用冲突的,所以低成本很多时候不会是架构设计的首要目标,而是架构设计的附加约束。 低成本给架构设计带来的主要复杂度体现在,往往只有“创新”才能达到低成本目标。 ###二、安全 从技术的角度来
阅读全文
摘要:极客时间:《从 0 开始学架构》复杂度来源:可扩展性 ###引言 可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。 在软件开发领域,面向对象思想的提出,就是为了解决可扩展性带来的问题;后来的设计模式,更是将
阅读全文
摘要:极客时间:《从 0 开始学架构》复杂度来源: 高可用 ###引言 维基百科上的定义:系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 “无中断”是重点也是难点,软件会出bug,硬件会逐渐老化,更别提复杂的外部环境更是难以预测和避免,使得很难做到真正意义上的“无中断”。
阅读全文
摘要:极客时间:《从 0 开始学架构》复杂度的来源:高性能 ###引言 只有那些并不是用来取代旧技术,而是开辟了一个全新领域的技术,才会给软件系统带来复杂度,因为软件系统在设计的时候就需要在这些技术之间进行判断选择或者组合。就像汽车的发明无法取代火车,飞机的出现也并不能完全取代火车,所以我们在出行的时候,
阅读全文
摘要:极客时间:《从 0 开始学架构》软件设计的目的 ###关于架构设计的目的,常见的误区: 因为架构很重要,所以要做架构设计 不是每个系统都要做架构设计吗 公司流程要求系统开发过程中必须有架构设计 为了高性能、高可用、可扩展,所以要做架构设计 ###架构设计的真正目的 软件架构的出现有其历史必然性。20
阅读全文
摘要:##系统与子系统、模块与组件、框架与架构的关系 极客时间:《从 0 开始学架构》到底什么是架构 ###系统与子系统 维基百科定义的“系统”。 系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。 子系统也是由一群有关联的个体
阅读全文
摘要:##构建一个通过命令终端创建创世区块、转账交易以及查询等功能的区块链应用 ####几个数据结构 区块结构: type Block struct { //时间戳,创建区块的时间 TimeStamp int64 //上个区块的hash PrevBlockHash []byte //Data 交易数据 T
阅读全文