从0开始学架构
cloudera manager
程序员学习圈
值得去的地方,没有捷径;难走的路,才更值得开始!
展开
-
架构设计文档模板
1.备选方案模板1.1 需求介绍 • [需求介绍主要描述需求的背景、目标、范围等] • 随着XX微博业务的不断发展,业务上拆分的子系统越来越多,目前系统间的调用都是同步调用,存在如下问题: • 性能问题:当用户发布了一条微博后,微博发布子系统需要同步调用“统计子系统”“审核子系统”“奖励子系统”等共8个子系统,性能很低。 • 耦合问题:当新增一个子系统...原创 2019-11-24 23:57:44 · 524 阅读 · 0 评论 -
App架构的演进
1.Web App App 架构又叫包壳架构,简单来说就是在 Web 的业务上包装一个 App 的壳,业务逻辑完全还是 Web 实现,App 壳完成安装的功能,让用户看起来像是在使用 App,实际上和用浏览器访问 PC 网站没有太大差别。2.原生App 优点:用户体验好 缺点:开发成本高;不同平台重复开发3.Hybrid App 优点:根据不同的业务...原创 2019-11-24 22:50:18 · 397 阅读 · 0 评论 -
架构重构
1.有的放矢 只有少部分架构演化可能需要推到重来,绝大部分的架构演化都是通过架构重构来实现的。1.1 架构重构的难点 • 业务已经上线,不能停下来 • 关联方众多,牵一发动全身 • 旧架构的约束1.2 架构重构案例 架构师的首要任务是从一大堆纷繁复杂的问题中识别出真正要通过架构重构来解决的问题,集中力量快速解决,而不是想着通过架构重构来解决...原创 2019-11-24 22:33:57 · 1090 阅读 · 0 评论 -
互联网架构模板
互联网的标准技术架构如下图所示,这张图基本涵盖了互联网技术公司的大部分技术点,不同的公司只是在具体的技术实现上稍有差异,但不会跳出这个框架的范围。1.存储层1.1 SQL层1.2 NOSQL层1.3 小文件存储 开源的,HBase,Hadoop,Hypertable,FastDFS等都可以作为小文件存储的底层平台。如果使用了阿里云,有存储系统OSS。1.4 大文件...原创 2019-11-24 22:24:10 · 1248 阅读 · 0 评论 -
技术演进的方向
1.技术演进的方向?1.1 判断方向的3大派别 • 潮流派 特点:热衷新技术,紧跟技术潮流,迫切想将新技术应用起来 问题:新技术未成熟,可能遇到坑;掌握新技术后才知不适合,成本很高 • 保守派 特点:戒备新技术,稳定压倒一切,一种技术打遍天下 问题:无法享受到新技术带来的收益 • 跟风派 特点:跟紧竞争对手,对方用...原创 2019-11-24 22:07:18 · 734 阅读 · 0 评论 -
可拓展架构模式
1.可扩展架构的基本思想 拆。就是将原本大一统的系统拆分成多个规模小的部分,扩展时只修改其中一部分即可,无须整个系统到处都改。1.1 3种拆分思路 日常生活中的『拆』是破坏性的,而软件系统的『拆』是建设性的。 • 面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分 • 面向服务拆分:将系统提供的服务拆分,每个服务作为一部分 • 面向...原创 2019-11-24 21:37:07 · 1209 阅读 · 0 评论 -
高可用架构模式
1.CAP 理论 CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是回加州大学伯克得分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的ACM PODC上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公...原创 2019-11-24 20:39:48 · 616 阅读 · 0 评论 -
高性能架构模式
1.高性能数据库集群:读写分离1.1 读写分离原理 读写分离的基本原理是将数据库读写操作分散到不同的节点上,下面是其基本架构图。读写分离的基本实现是: • 数据库服务器搭建主从集群,一主一从、一主多从都可以。 • 数据库主机负责读写操作,从机只负责读操作。 • 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。 ...原创 2019-11-24 20:31:41 · 579 阅读 · 0 评论 -
架构设计流程
1.架构设计流程:识别复杂度 • 架构的复杂度主要来源于“高性能”“高可用”“可扩展”等几个方面,但架构师在具体判断复杂性的时候,不能生搬硬套,认为任何时候架构都必须同时满足这三方面的要求。实际上大部分场景下,复杂度只是其中的某一个,少数情况下包含其中两个,如果真的出现同时需要解决三个或者三个以上的复杂度,要么说明这个系统之前设计的有问题,要么可能就是架构师的判断出现了失误,即使真的认为...原创 2019-11-24 20:31:06 · 696 阅读 · 0 评论 -
架构设计三原则
架构即决策。架构需要面向业务需求,并在各种资源(人、财、物、时、事)约束条件下去做权衡、取舍。而决策就会存在不确定性。采用一些高屋建瓴的设计原则有助于去消除不确定,去逼近解决问题的最优解。 • 合适原则(合适优于业界领先) 架构无优劣,但存合适性。“汝之蜜糖,吾之砒霜”;架构一定要匹配企业所在的业务阶段;不要面向简历去设计架构,高大上的架构不等于适用;削足适履与打肿充胖...原创 2019-11-15 00:37:23 · 193 阅读 · 0 评论 -
复杂度来源
1.复杂度来源:高性能 软件系统中高性能带来的复杂度主要体现在两方面,一方面是单台计算机内部为了高性能带来的复杂度;另一方面是多台计算机集群为了高性能带来的复杂度。1.1 单机复杂度 计算机内部复杂度最关键的地方:操作系统 操作系统和性能最相关的是:进程和线程 分时调度,本质上仍然是串行任务 多cpu才能做到真正的同时执行计算任务 常...原创 2019-11-14 00:31:56 · 418 阅读 · 0 评论 -
架构设计的目的
1.架构设计的误区 • 因为架构很重要,所以要做架构设计 • 不是每个系统都要做架构设计吗 • 公司流程要求系统开发过程中必须有架构设计 • 为了高性能、高可用、可扩展,所以要做架构设计2.架构设计的真正目的 通过分享的架构设计的历史背景,可以看到,整个软件技术发展的历史,其实就是一部与“复杂度”斗争的历史,架构的出现也不例外。简而言之,...原创 2019-10-30 00:07:22 · 1136 阅读 · 0 评论 -
架构设计的历史背景
理解了架构的有关概念和定义之后,今天,我会给你讲讲架构设计的历史背景。我认为,如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现的历史背景和推动因素。我们先来简单梳理一下软件开发进化的历史,探索一下软件架构出现的历史背景。1.机器语言(1940 年之前) 最早的软件开发使用的是“机器语言”,直接使用二进制码 0 和 1 来表示机器可以识别的指令和数据。例如,在 ...原创 2019-10-21 13:01:22 · 739 阅读 · 0 评论 -
什么是架构
架构”这个词常见,但如果深究一下“架构”到底指什么,大部分人也许并不一定能够准确地回答。例如:架构和框架是什么关系?有什么区别?Linux 有架构,MySQL 有架构,JVM 也有架构,使用 Java 开发、MySQL 存储、跑在 Linux 上的业务系统也有架构,应该关注哪个架构呢?微信有架构,微信的登录系统也有架构,微信的支付系统也有架构,当我们谈微信架构时,到底是在谈什么架...原创 2019-10-19 16:19:59 · 1812 阅读 · 0 评论