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

简介: 笔记内容较为提纲挈领,课程帮助我们开阔了后端架构的视野,但这部分的知识也着实需要结合实践去消化,目前于我来说难度较大,确实只能说是初探架构。

前言

最近的课程涉及的知识比较庞杂、又是临近期末,前面网络相关的笔记都尚未完成写作,后续会尽力补上。

课程资料

课程视频:https://live.juejin.cn/4354/yc_cake

课程手册:https://juejin.cn/post/7098182433941651492#heading-0

课程PPT:https://bytedance.feishu.cn/file/boxcne8xf0JBAiXgPJ08Vf0IdJg?from=auth_notice&hash=d3d3a460879da375f28cee06d470b5aa

架构演进

单机架构

问题:C10K problem(如何处理10k个客户端的连接,单机瓶颈),运维需要停服

基于C10K问题,从纯网络编程技术的角度处理单机高并发访问的问题的方案经历了(阻塞IO、select(IO多路复用)、pollepoll的演进),这里给出知乎的系列章讲述epoll的大致原理:https://zhuanlan.zhihu.com/p/64746509

关于sokcet编程,在大致了解流程之后,推荐阅读 《Linux-UNIX系统编程手册》 下册中讲socket通信的部分(意外的适合小白阅读)、 《TCP/IP网络编程》 这本书也可以大致浏览,比起大黑书来说,更适合入门网络编程。

单体架构 & 垂直应用架构

单体架构将单机架构做了水平扩容,部署在多台机器上;垂直扩容则在单体架构的基础上,先将其按照业务拆分,以业务为单位,部署在多台机器上(先垂直拆,再水平扩)。

SOA(Service Oriented Architecture)& 微服务

将进程按照的不同功能单元抽象为服务,进一步拆分,定义服务之间的通信标准

问题:数据一致性、服务之间通信、容灾、运维成本高

企业级后端架构剖析

云计算

  • 基础

    • 虚拟化(Docker)
    • 编排(k8s)
  • 云服务

    • IaaS - 云基础设施,对底层硬件资源池的抽象
    • PaaS - 基于资源池抽象,对上层提供的弹性资源平台
    • SaaS - 基于弹性资源平台构建的云服务
    • FaaS - 更轻量级的函数服务。好比 LeetCode 等 OJ,刷题时只需要实现函数,不需要关注输入输出流

云原生

弹性资源(可扩容缩容)

  • 弹性计算资源调度:

    • 在线计算—互联网后端服务
    • 离线计算—大数据分析
  • 弹性存储资源:

    • 经典

      • 对象存储(视频、图片、CDN技术)
      • 大数据存储(日志、数据挖掘)
    • 关系型数据库
    • 元数据(数据量不大,但是应用场景很多)
    • NoSQL(KV存储Redis、文档存储 Mongo

微服务架构

  • 业务功能单元解耦
  • 统一的通信标准

    HTTP通信协议往往选择JSON其可读性更好,方便调试,所以下图中服务的接入都是从HTTP请求发起,来源可能是各种客户端,而经过Gateway之后则使用rpc通信,因为其序列化协议往往有着更好的压缩率,如pbthrift。并且rpc中间件往往集成了丰富的服务治理能力:熔断、降级、超时等

image-20220522152818355

DevOps(更快驱动软件开发生命周期轮转)

  • 敏捷开发
  • CI/CD(可以了解一下jenkis

image-20220522113426613

服务网格

被称为微服务架构2.0,这里放一篇文章作为了解:https://juejin.cn/post/7016612522115465252#comment

企业级后端架构的挑战

基础设施

  • 物理资源有限
  • 资源利用率

用户层面

  • 微服务之间网络通信开销大
  • 网络抖动导致运维成本高
  • 异构环境下,不同实例资源水位不均,如何合理分配资源

一些解决方案

  • 离/在线资源并池(在线业务分时潮汐特性)
  • 微服务亲和性部署(调用关系紧密的服务部署在一台机器上,使用IPC代替RPC
  • 流量治理(微服务中间件&服务网格的流量治理)
  • 屏蔽异构环境的算力差距(CPU水位负载均衡)

image-20220522161824110

小结

笔记内容较为提纲挈领,课程帮助我们开阔了后端架构的视野,但这部分的知识也着实需要结合实践去消化,目前于我来说难度较大,确实只能说是初探架构。

相关文章
|
2月前
|
监控 负载均衡 Dubbo
|
4月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
66 0
|
2月前
|
存储 传感器 网络协议
《物联网技术》课程笔记——第二章 物联网技术架构
《物联网技术》课程笔记——第二章 物联网技术架构
|
3月前
|
达摩院 Java Apache
惊动“达摩院”的分布式架构笔记:火于互联网,据说来自于清华
一个星期前,一本Java架构笔记突然在互联网上爆火。因为内容的深度和广度,甚至连阿里最牛的研发中心都被惊动了,而且作者一周后直接被阿里挖走后定级P8,据说作者来自于清华。
|
3月前
|
安全 数据挖掘 定位技术
笔记 - 《业务架构解构与实践》
《业务架构解构与实践》的笔记
|
3月前
|
运维 Cloud Native 安全
笔记 - 《阿里云云原生架构实践》
《阿里云云原生架构实践》的笔记
|
3月前
|
NoSQL Java 程序员
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
提起阿里,行外人联想到的关键词无非是“交易”、“淘宝”、“支付宝”,但对于程序员来说,阿里庞大的技术体系才是最吸引人的。实际上阿里作为国内一线互联网公司的头把交椅,内部的技术体系和发展都是备受关注的,对于程序员来说,能够进到阿里工作,就是对自己的技术水平进行一个提升和学习。
阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈
|
3月前
|
消息中间件 架构师 Java
Java架构速成笔记:七大专题,1425页考点,挑战P8岗
我们都知道,在程序员的职业生涯中,有多个发展方向,不过就数据表明,近年来选择架构师方向的开发人员也越来越多。
|
3月前
|
SQL 存储 关系型数据库
华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
MySQL不用多说,大家都知道它是目前最为活跃热门的开源数据库,由于成本低,操作简易的特点,所以在互联网企业中被广泛使用,即使是头部的BATJ。由此可见,想要在互联网行业混得风生水起,或者说想要进入BATJ等一线互联网公司,那么熟练掌握MySQL必定是一块必要的敲门砖。
|
4月前
|
存储 前端开发 JavaScript
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(1)
9 图片社交网站 本章新涉及的Python包:Flask-Dropzone, Pillow, Flask-Avatars, Whoosh, Flask-Whooshee。 9.1 项目组织架构 1、功能式架构
53 0