构架初探-谁动了我的蛋糕|青训营笔记

143 阅读5分钟

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

本篇文章介绍了构架的相关基础知识,主要从什么是构架、企业级后端架剖析、企业级后端构架的挑战、后端构架实战四个方面进行介绍。

1.构架的基本内容

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

对于架构,这边通过一个背景知识来对架构问题进行理解:

问题为:兰师傅蛋糕坊要开张了,亟需解决如下问题:

  • 如何做蛋糕,独家秘方,还是亲自做比较好

  • 如何卖蛋糕,刚开始客流量应该不大,边做边卖

于是,从该问题的背景进行出发,对架构问题进行充分的理解和学习。

1.1 单机

软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上

它的优点主要是:简单;对于架构的问题主要是:C10K problem;运维需要停服。

1.2 单体、垂直应用|垂直切分

单体架构:分布式部署

垂直应用架构:按应用垂直切分的单体;其主要优点是:水平扩容、运维不需要停服。

存在的问题主要是:职责太多,开发效率不高;爆炸半径大

1.3 SOA、微服务|水平切分

SOA(Service-Oriented Architecture):将应用的不同功能单元抽象为服务、定义服务之间的通信标准

微服务架构:SOA的去中心化演进方向

存在的问题主要是:数据一致性,其对应到背景知识,即:装货台共交付了多少蛋糕?

  • 高可用,其对应到背景知识,即:这么多师傅,如何合作?

  • 治理,其对应到背景知识,即:烤箱坏了,怎么容灾?

  • 解耦vs过微,其对应到背景知识,即:运维成本高了,值当吗?

总结关于架构的内容,主要是:

  • 架构的演进初衷:好比做蛋糕。

  • 需求量越来越大,终归要增加人手;越做越复杂,终归要分工合作

  • 架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分:竖着切(垂直切分)、横着切(水平切分)

2.企业级后端架构剖析

首先从做蛋糕的背景知识进行分析,引出问题:

问题一:店面怎么盘:买or租

问题二:师傅怎么招:兰师傅全家出马or招培训班出身的

问题三:是否继续坚持纯手工制作?

问题四:规模大了之后,工作重心应该是?精进蛋糕制作收益or蛋糕店重点方向梳理&未来规划

2.1 云计算

云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。

从技术问题与实际背景问题进行对比理解:

基础:虚拟化技术-整租vs合租;编排方案-业主vs租赁平台

架构

  • Iaas(Infrastructure as a Service) 买房子 vs 房屋租赁平台

  • PaaS(Platform as a Service) 清包 vs 全包

  • SaaS(Software as a Service) 从零培训 vs 雇佣培训过的师傅

  • FassS(Function as a Service) 纯手工制作 vs 蛋糕机批量生产

2.2 云原生

云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

云原生主要包括四个方面,如下:

弹性资源:虚拟化容器、快速扩缩容;微服务架构:业务功能单元解耦、统一的通信标准;DevOps:敏捷开发、CI/CD;服务网络:业务与治理解构、业务与治理统一化、复杂治理能力

2.2.1 云原生之弹性计算资源

弹性计算资源类型:

  • 服务资源调度

    • 微服务:和面、雕花;大服务:烤箱
  • 计算资源调度

    • 在线:热销榜单;离线:热销榜单更新
  • 消息队列

    • 在线:削峰、解耦;离线:大数据分析

2.2.2 云原生之弹性存储资源

弹性存储资源类型:

  1. 经典:对象:宣传视频;大数据:用户消费记录

  2. 关系型数据库:收银记录

  3. 元数据:服务发现:蛋糕店通讯录

  4. NoSQL:KV:来个xx蛋糕

2.2.3 云原生之微服务架构

通信标准:HTTP(RESTful API)

RPC(Thrift,gRPC)

微服务中间件RPC vs HTTP:性能、服务治理、协议可解释性

云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做

2.2.4 云原生之服务网格

  • 服务网格:

微服务之间通讯的中间层;高性能网络代理;业务代码与治理解耦

  • 相比较RPC/HTTP框架:

异构系统治理统一化;与业务进程解耦,生命周期易管理

2.2.5 云原生蛋糕店

企业级蛋糕店架构:售卖、蛋糕制作(肉松、慕斯)、会员激励、满意度分析、研发新品。

3.总结

本文通过各方面根据蛋糕房的例子为背景,更加简单易懂的了解了架构的基础知识。架构对于计算服务有很重要的作用,因此需要更加的理解。

4.引用

本文的主要内容来自于字节内部课程。