摘要:
编译 代码地址:https://github.com/balena-io/etcher branch:master tag:v1.5.121 commit id:8b3f37102d2c86b111ee1d21449be8de15280644 内部开源代码地址:https://codehub-y.h 阅读全文
posted @ 2023-01-05 20:06
易先讯
阅读(273)
评论(0)
推荐(0)
摘要:
第一步:切换到待上库分支 第二步:点击Git --> rebase 第三步:选择需要上库的分支以及rebase参数,点击REBASE: 第四步:squash多次修改成一次,全选多次修改-->点击SQUASH-->修改commit信息-->Ctrl+Enter应用SQUASH: 第五步:开始REBAS 阅读全文
posted @ 2023-01-05 19:00
易先讯
阅读(560)
评论(0)
推荐(0)
摘要:
在上一节课中,我们讲到,要具备编写高质量代码的能力,你需要学习一些编程方法论,其中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、重构技巧等。而我们整个专栏的内容也是围绕着这几块展开讲解的。所以,今天我就先来简单介绍一下这几个概念,并且说一说它们之间的联系。 今天的内容 阅读全文
posted @ 2023-01-05 10:03
易先讯
阅读(19)
评论(0)
推荐(0)
摘要:
在我的工作经历中,每当同事评论起项目代码质量的时候,听到的最多的评语就是:“代码写得很烂”或者“代码写得很好”。用“好”“烂”这样的字眼来描述,非常地笼统。当我具体问到底如何烂、如何好的时候,尽管大部分同事都能简单地罗列上几个点,但往往都不够全面、非常零碎,也切不中要害。 当然,也有一些工程师对如何 阅读全文
posted @ 2023-01-05 10:02
易先讯
阅读(15)
评论(0)
推荐(0)
摘要:
我相信,很多程序员都已经意识到基础知识的重要性,觉得要夯实基础,才能走得更远,但同时对于如何将基础知识转化成开发“生产力”仍然有些疑惑。所以,你可能看了很多基础的书籍,比如操作系统、组成原理、编译原理等,但还是觉得很迷茫,觉得在开发中用不上,起码在平时的CRUD业务开发中用不上。实际上,这些基础的知 阅读全文
posted @ 2023-01-05 10:01
易先讯
阅读(21)
评论(0)
推荐(0)
摘要:
你好,我是王争,是“数据结构与算法之美”专栏的作者。“数据结构与算法之美”专栏在今年2月底全部更新完毕。时隔8个月,我又给你带来了一个新的专栏“设计模式之美”。如果说“数据结构与算法之美”是教你写出高效的代码,那这个设计模式专栏就是教你写出高质量的代码。 程序员的看家本领你得练好 研究生毕业后我就加 阅读全文
posted @ 2023-01-05 09:59
易先讯
阅读(32)
评论(0)
推荐(0)
摘要:
“从0开始学架构”专栏历经4个月的时间,现在到了跟你说再见的时候了。一路走来,非常感谢你的坚持。看到专栏的内容能够帮助你理解架构设计这个看起来高大上的技术,我非常欣慰,也算完成了自己3年前的一个心愿:帮助更多同学更快更好地掌握架构设计的技术。 专栏的结束意味着你已经完成整套架构设计方法论的学习,但这 阅读全文
posted @ 2023-01-05 09:42
易先讯
阅读(35)
评论(0)
推荐(0)
摘要:
你好,我是华仔。 2018年,我在极客时间开设了《从0开始学架构》这门课。我和你分享了自己多年研究和实践积累得到的一套完整的架构设计方法论,来帮助你提升架构设计的能力。 为什么架构设计能力这么重要呢?因为它是技术人员晋升到高级别必备的能力,所以后来我也在QCon等场合分享了架构师怎么成长等内容。不出 阅读全文
posted @ 2023-01-05 09:42
易先讯
阅读(93)
评论(0)
推荐(0)
摘要:
你好,我是华仔。 在专栏更新的时候,很多同学留言希望我推荐一些书籍可以课后继续学习,正好我自己也是一个爱读书的人,最近7 ~ 8年,平均每年读书超过50本,因此今天就从我读过的书籍中选择一些让我印象非常深刻的推荐给你。我把这些书分为成长、技术和业务三个方面,因为架构师本身就是一个比较综合的职位,对综 阅读全文
posted @ 2023-01-05 09:41
易先讯
阅读(28)
评论(0)
推荐(0)
摘要:
你好,我是华仔。《从0开始学架构》专栏已经全部更新完毕,我在专栏里给你讲述了我的完整架构设计方法论,包括架构设计的概念、原则、步骤、技巧、模式等,这些内容是我融合多年来的学习、实践、思考总结得出来的精华。“王婆自夸”一下,专栏就相当于一部《九阳真经》,你按照武功秘籍的方法去修炼,自然能够比站在村口大 阅读全文
posted @ 2023-01-05 09:40
易先讯
阅读(51)
评论(0)
推荐(0)
摘要:
你好,我是华仔。今天这期“特别放送”,我想和你聊聊如何高效地学习开源项目,一方面澄清开源项目学习过程中的几个误区,另一方面谈谈我自己具体实践时的一套方法论。 得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展,另 阅读全文
posted @ 2023-01-05 09:40
易先讯
阅读(43)
评论(0)
推荐(0)
摘要:
各位同学,晚上好,我是架构专栏的编辑Shawn。今天又到周五啦,没错,我又出来送福利了[捂脸]。 “华仔,放学别走”第1期不知道你看了没有,华仔回答了关于知识分享、理论与实践、专栏学习方法、推荐的参考书等几个问题,希望你从中能够有所收获。今天是“华仔,放学别走”第2期,继续回答你所关注的问题,然后展 阅读全文
posted @ 2023-01-05 09:39
易先讯
阅读(26)
评论(0)
推荐(0)
摘要:
各位同学,晚上好,我就是那位在每期专栏最后都会乱入进来的编辑Shawn[捂脸],对,我是来送福利的。 “从0开始学架构”专栏已经更新了9期,概念和基础已经讲了不少,不知道你掌握的如何呢?每期华仔都会在最后提出一个思考题,希望能让你在学习后有一个思考提升的过程,既可以记下心得体会,也许还能碰撞出新的想 阅读全文
posted @ 2023-01-05 09:39
易先讯
阅读(26)
评论(0)
推荐(0)
摘要:
你好,我是华仔。你现在看到的这篇文章,是我在2022年新写的。《从0开始学架构》这门课更新结束后,我又探索了很多和架构相关的事情。这期间新的经历和尝试,也让我有了更多的思考。所以,有了今天这篇文章,把我在软件系统架构图上的实践分享给你。 很多同学技术能力很强,架构设计也做得很好,但是在给别人讲解的时 阅读全文
posted @ 2023-01-05 09:38
易先讯
阅读(80)
评论(0)
推荐(0)
摘要:
在前面的专栏里,有同学留言说想看看具体的架构设计文档。由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例。但我认为提供一个架构设计文档模板还是很有必要的,可以方便你在实际进行架构设计的时候更好地编写相关文档。我还以前面讲过的“前浪微博”消息队列为例,给出 阅读全文
posted @ 2023-01-05 09:37
易先讯
阅读(72)
评论(0)
推荐(0)
摘要:
专栏截止到上一期,架构设计相关的理念、技术、实践已经基本讲完,相信你一路学习过来会有一种感觉,这些内容主要都是讲后端系统的架构设计,例如存储高可用、微服务、异地多活等,都是后端系统才会涉及。事实上确实也是如此,通常情况下我们讲架构设计,主要聚焦在后端系统,但这并不意味着App、前端就没有架构设计了, 阅读全文
posted @ 2023-01-05 09:37
易先讯
阅读(39)
评论(0)
推荐(0)
摘要:
我在专栏特别放送第3期谈了如何高效地学习开源项目,主要聊了我在学习开源项目的一些看法和步骤。今天我们再聊开源项目,谈谈如何选择、使用以及二次开发。 软件开发领域有一个流行的原则:DRY,Don’t repeat yourself。翻译过来更通俗易懂:不要重复造轮子。开源项目的主要目的是共享,其实就是 阅读全文
posted @ 2023-01-05 09:37
易先讯
阅读(31)
评论(0)
推荐(0)
摘要:
在前面的架构重构内功心法“有的放矢”和“合纵连横”中,我提到架构师需要从一大堆问题中识别关键的复杂度问题,然后有的放矢地通过架构重构来解决。但是通常情况下,需要架构重构的系统,基本上都是因为各种历史原因和历史问题没有及时处理,遗留下来逐渐积累,然后到了一个临界点,各种问题开始互相作用,集中爆发!到了 阅读全文
posted @ 2023-01-05 09:36
易先讯
阅读(58)
评论(0)
推荐(0)
摘要:
上一期我给你讲了我的架构重构内功心法的第一式:有的放矢,需要架构师透过问题表象看到问题本质,找出真正需要通过架构重构解决的核心问题,而不是想着通过一次重构解决所有问题。 今天我来传授架构重构内功心法的第二式:合纵连横。 合纵 架构重构是大动作,持续时间比较长,而且会占用一定的研发资源,包括开发和测试 阅读全文
posted @ 2023-01-05 09:36
易先讯
阅读(23)
评论(0)
推荐(0)
摘要:
在专栏第8期“架构设计三原则”中的演化原则部分,我提到了系统的架构是不断演化的,少部分架构演化可能需要推倒重来进行重写,但绝大部分的架构演化都是通过架构重构来实现的。相比全新的架构设计来说,架构重构对架构师的要求更高,主要体现在: 业务已经上线,不能停下来 架构重构时,业务已经上线运行了,重构既需要 阅读全文
posted @ 2023-01-05 09:36
易先讯
阅读(7)
评论(0)
推荐(0)
摘要:
当业务规模比较小、系统复杂度不高时,运维、测试、数据分析、管理等支撑功能主要由各系统或者团队独立完成。随着业务规模越来越大,系统复杂度越来越高,子系统数量越来越多,如果继续采取各自为政的方式来实现这些支撑功能,会发现重复工作非常多。因此我们自然而然就会想到将这些支撑功能做成平台,避免重复造轮子,减少 阅读全文
posted @ 2023-01-05 09:35
易先讯
阅读(21)
评论(0)
推荐(0)
摘要:
上一期,我从计算机网络层的角度谈了应对“高性能”和“高可用”的整体架构设计。今天,我将从“用户层”和“业务层”的角度谈谈常见的应用场景和关键技术。 用户层技术 1.用户管理 互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。 稍微大一点的互联网 阅读全文
posted @ 2023-01-05 09:35
易先讯
阅读(2)
评论(0)
推荐(0)
摘要:
除了复杂度,互联网业务发展的另外两个关键特点是“高性能”和“高可用”。通常情况下,我们在设计高可用和高性能系统的时候,主要关注点在系统本身的复杂度,然后通过各种手段来实现高可用和高性能的要求,例如我前面介绍的计算高性能架构模式、存储高可用架构模式等。但是当我们站在一个公司的的角度来思考架构的时候,单 阅读全文
posted @ 2023-01-05 09:35
易先讯
阅读(5)
评论(0)
推荐(0)
摘要:
上一期,我介绍了互联网架构模板中的存储层技术。关于这部分内容,我将逐层介绍每个技术点的产生背景、应用场景和关键技术,希望让你可以对整体的技术架构有一个全貌认知。 今天我们来聊聊互联网架构模板的“开发层”和“服务层”技术。 开发层技术 1.开发框架 在专栏第38、39期中,我们深入分析了互联网业务发展 阅读全文
posted @ 2023-01-05 09:34
易先讯
阅读(3)
评论(0)
推荐(0)
摘要:
很多人对于BAT的技术有一种莫名的崇拜感,觉得只有天才才能做出这样的系统,但经过前面对架构的本质、架构的设计原则、架构的设计模式、架构演进等多方位的探讨和阐述,你可以看到,其实并没有什么神秘的力量和魔力融合在技术里面,而是业务的不断发展推动了技术的发展,这样一步一个脚印,持续几年甚至十几年的发展,才 阅读全文
posted @ 2023-01-05 09:34
易先讯
阅读(4)
评论(0)
推荐(0)
摘要:
由于各行业的业务发展轨迹并不完全相同,无法给出一个统一的模板让所有的架构师拿来就套用,因此我以互联网的业务发展为案例,谈谈互联网技术演进的模式,其他行业可以参考分析方法对自己的行业进行分析。 互联网业务千差万别,但由于它们具有“规模决定一切”的相同点,其发展路径也基本上是一致的。互联网业务发展一般分 阅读全文
posted @ 2023-01-05 09:34
易先讯
阅读(14)
评论(0)
推荐(0)
摘要:
互联网的出现不但改变了普通人的生活方式,同时也促进了技术圈的快速发展和开放。在开源和分享两股力量的推动下,最近10多年的技术发展可以说是目不暇接,你方唱罢我登场,大的方面有大数据、云计算、人工智能等,细分的领域有NoSQL、Node.js、Docker容器化等。各个大公司也乐于将自己的技术分享出来, 阅读全文
posted @ 2023-01-05 09:33
易先讯
阅读(5)
评论(0)
推荐(0)
摘要:
微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品(原文为product-based,指存在多个版本、需要下载安装才能使用,与web-based相对应)的应用。例如 阅读全文
posted @ 2023-01-05 09:33
易先讯
阅读(12)
评论(0)
推荐(0)
摘要:
每项微服务基础设施都是一个平台、一个系统、一个解决方案,如果要自己实现,其过程和做业务系统类似,都需要经过需求分析、架构设计、开发、测试、部署上线等步骤,专栏里我来简单介绍一下每个基础设施的主要作用,更多详细设计你可以参考Spring Cloud的相关资料(https://projects.spri 阅读全文
posted @ 2023-01-05 09:32
易先讯
阅读(3)
评论(0)
推荐(0)
摘要:
专栏上一期,我谈了实施微服务需要避免踩的陷阱,简单提炼为: 微服务拆分过细,过分强调“small”。 微服务基础设施不健全,忽略了“automated”。 微服务并不轻量级,规模大了后,“lightweight”不再适应。 针对这些问题,今天我们看看微服务最佳实践应该如何去做。我会分两期介绍这部分内 阅读全文
posted @ 2023-01-05 09:32
易先讯
阅读(3)
评论(0)
推荐(0)
摘要:
微服务是近几年非常火热的架构设计理念,大部分人认为是Martin Fowler提出了微服务概念,但事实上微服务概念的历史要早得多,也不是Martin Fowler创造出来的,Martin只是将微服务进行了系统的阐述(原文链接:https://martinfowler.com/articles/mic 阅读全文
posted @ 2023-01-05 09:32
易先讯
阅读(13)
评论(0)
推荐(0)
摘要:
相比于高性能、高可用架构模式在最近几十年的迅猛发展来说,可扩展架构模式的发展可以说是步履蹒跚,最近几年火热的微服务模式算是可扩展模式发展历史中为数不多的亮点,但这也导致了现在谈可扩展的时候必谈微服务,甚至微服务架构都成了架构设计的银弹,高性能也用微服务、高可用也用微服务,很多时候这样的架构设计看起来 阅读全文
posted @ 2023-01-05 09:31
易先讯
阅读(9)
评论(0)
推荐(0)
摘要:
软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构。例如,一颗CPU生产出来后装到一台PC机上,不会再返回工厂进行加工以增加新的功能;金字塔矗立千年历经风吹雨打,但其现在的结构和当时建成完工时的结构并无两样。相比之下,软件系 阅读全文
posted @ 2023-01-05 09:31
易先讯
阅读(4)
评论(0)
推荐(0)
摘要:
你好,我是华仔。 前几讲我介绍了异地多活方案。它主要用来应对系统级的故障,例如机器宕机、机房故障和网络故障等问题。这些系统级的故障虽然影响很大,但发生概率较小。在实际业务运行过程中,还有另外一种故障影响可能没有那么大,但发生的概率较高,这就是今天我要跟你聊的接口级的故障。 接口级故障的典型表现就是, 阅读全文
posted @ 2023-01-05 09:30
易先讯
阅读(9)
评论(0)
推荐(0)
摘要:
上一期,基于异地多活架构设计复杂度最高的“跨城异地”,我结合自己的经验总结了异地多活设计的4个技巧及其核心思想,我认为掌握这些技巧是进入具体设计步骤的前提。 今天,在掌握这4大技巧的基础上,我来讲讲跨城异地多活架构设计的4个步骤。 第1步:业务分级 按照一定的标准将业务进行分级,挑选出核心的业务,只 阅读全文
posted @ 2023-01-05 09:30
易先讯
阅读(8)
评论(0)
推荐(0)
摘要:
专栏上一期我介绍了三种不同类型的异地多活架构,复习一下每个架构的关键点: 同城异区 关键在于搭建高速网络将两个机房连接起来,达到近似一个本地机房的效果。架构设计上可以将两个机房当作本地机房来设计,无须额外考虑。 跨城异地 关键在于数据不一致的情况下,业务不受影响或者影响很小,这从逻辑的角度上来说其实 阅读全文
posted @ 2023-01-05 09:30
易先讯
阅读(4)
评论(0)
推荐(0)
摘要:
无论是高可用计算架构,还是高可用存储架构,其本质的设计目的都是为了解决部分服务器故障的场景下,如何保证系统能够继续提供服务。但在一些极端场景下,有可能所有服务器都出现故障。例如,典型的有机房断电、机房火灾、地震、水灾……这些极端情况会导致某个系统所有服务器都故障,或者业务整体瘫痪,而且即使有其他地区 阅读全文
posted @ 2023-01-05 09:29
易先讯
阅读(10)
评论(0)
推荐(0)
摘要:
计算高可用的主要设计目标是当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可用。 计算高可用架构的设计复杂度主要体现在任务管理方面,即当任务在某台 阅读全文
posted @ 2023-01-05 09:29
易先讯
阅读(9)
评论(0)
推荐(0)
摘要:
上一期我讲了高可用存储架构中常见的双机架构,分别为主备复制、主从复制、双机切换和主主复制,并分析了每类架构的优缺点以及适应场景。 今天我们一起来看看另外两种常见的高可用存储架构:数据集群和数据分区。 数据集群 主备、主从、主主架构本质上都有一个隐含的假设:主机能够存储所有数据,但主机本身的存储和处理 阅读全文
posted @ 2023-01-05 09:25
易先讯
阅读(13)
评论(0)
推荐(0)

浙公网安备 33010602011771号