这是我参与「第五届青训营 」伴学笔记创作活动的第 5天
1.架构初探
概念
又称软件架构,是有关软件整体结构与组件的抽象描述用于指导软件系统各个方面的设计
实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用
2.单机架构
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程,并部署在一台机器上
但是,服务量一多,效率就低了。
所以对单体架构进行分布式部署,由一个主process进行分发数据和分发任务,具体数据的处理交给其他process
缺点
但是对于单个process责任太多,什么数据都能处理,导致开发process的效率降低。运维也需要停服。
虽然它们解决了单机服务的两个最重要的问题,但也面临着很多挑战。这其中,有两个问题使得我们不得不放弃单体和垂直应用架构:
随着业务场景越来越复杂,服务的职责也越来越务,【面向对象编程中单一职责的重要性】,在软件架构里也是一样的。开发者不仅要关心Web 后端业务逻辑,还要关心缓存、持久化存储,其至跟机器打交道。长此以往,很难分出精力专注于业务能力的开发业务发展需要上线、变更,将会影响所有其他不涉及的场景。一旦出问题,影响面不可估量
再次进行拆分
SOA(Service-0riented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准微服务架构: SOA 的去中心化演进方向 后续可以了解微服务和SOA之间的关系和异同
但是需要考虑的问题:
- 数据的一致性
- 高可用(如何合作)
- 治理(容灾)
- 解耦 vs 过微(运维成本高)
架构的演进初衷:
- 需求量越来越大,终归要增加人手
- 越做越复杂,终归要分工合作
3.企业级后端架构剖析
提问:架构规模大了之后,工作重心放在哪里?
云计算的概念
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。四大架构:
- Iaas
- Paas
- Saas
- Faas
4.后端架构实战
如何设计?
- 需要哪些输入
- 设计时需要考虑哪些关键点
后续继续增加。。。。