后端开发流程与架构 | 青训营笔记

117 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第11天

一、本堂课重点内容:

复杂的软件项目通常有两个明显的特征:需求不确定和技术复杂。这些技术的复杂性,会导致软件开发变得复杂,开发成本很高,架构设计恰恰可以很好解决技术复杂的问题。首先,架构可以降低满足需求和需求变化的开发成本。其次,架构可以帮助组织人员一起高效协作。再次,架构可以帮助组织好各种技术。最后,架构可以保障服务稳定运行。

二、详细知识点介绍:

1.什么是架构

1.1架构,又称软件架构, 是有关软件整体结构与组件的抽象描述·用于指导软件系统各个方面的设计

1.2通俗地说:实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用

1.3架构的重要性: 地基没打好,大厦容易倒地基坚实了,大厦才能盖得高站在巨人肩膀上,才能看得远

1.4 什么是架构–单机 软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上 优点: ·简单问题: 运维需要停服 演进:如何卖更多的蛋糕?多雇几个蛋糕师傅

1.5单体、垂直业务、垂直切分 我们把进程部署在多个机器上,并引入负载均衡层,经过这样的垂直切分,就来到了单休架构。多个机器就好比招蛋糕切成几大块,负载均衡层负责引导用户去事先切好的几块蛋糕处在单体架构基础上,进一步地,再把不同应用的代码从之前一个大的进程中拆分出来,就来到了垂直应用架构。按应用拆分进程,就好比墓斯、威风等蛋糕在不同的点发配。

这种经过垂直切分的架构,尝试解决了单机服务的水平扩容、运维停服问题。

虽然它们解决了单机服务的两个最重要的问题,但也面临着很多挑战。这其中,有两个问题使得我们不得不放弃单体和垂直应用架构;

随着业务场景越来越复杂,服务的职责也越来越多,但是单一职责的重要性不言而喻。 一旦出问题,影响面不可估量

1.6 SOA、微服务|水平切分

SOA(Service-Oriented Architecture) 1.将应用的不同功能单元抽象为服务 2.定义服务之间的通信标准 微服务架构: SOA的去中心化演进方向 问题: 数据一致性 ·装货台共交付了多少蛋糕?·高可用 ·这么多师傅,如何合作?·治理 ·烤箱坏了,怎么容灾?解耦vs 过微 ·运维成本高了,值当么?

四、课后个人总结:

01.什么是架构-小结

架构的演进初衷:好比做蛋糕。 ·需求量越来越大,终归要增加人手

·越做越复杂,终归要分工合作 架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分。

竖着切(垂直切分)

横着切(水平切分)