架构初探 | 青训营笔记

364 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,今天学习了架构的基本知识,以及解决挑战的相关手段,偏高层的设计,还需要在实践里慢慢理解。

第一课:基本概念

什么是架构:软件结构与组件的抽象描述

分类

  1. 单机:简单,但面临C10K
  2. 单体:进程部署到多机,可水平扩容,但职责太多开发效率低
  3. SOA: 应用的不同功能单元抽象为服务;服务之间需要通信标准

SOA的去中心化演进:微服务

问题:数据一致性、高可用、治理

思路

  1. 垂直切分:分布式
  2. 水平切分:分层/模块化

第二课:架构剖析

虚拟化技术&&编排

云计算:关注业务

架构:

  1. IaaS 买房子
  2. PaaS 全包
  3. SaaS 弹性资源平台构建的云服务
  4. FaaS 类似OJ平台,实现函数即可

云原生:可弹性扩展的应用

  1. 弹性资源
  • 服务资源
  • 计算资源:在线&&离线
  • 消息队列:在线:消峰&&离线:数据分析
  • 存储资源:对象存储
  1. DevOps:提高软件开发交付效率开发运营 自动化测试、回滚
  2. 服务网格:微服务之间通讯的中间层,网络代理,业务与治理解耦

实现了异构系统治理统一
service mesh数据面进行通信

微服务

通信标准:RPC(Thrift,gRPC),HTTP image.png

  1. RPC性能高:有压缩
  2. RPC自带服务治理:eg超时、熔断
  3. 可解释性:HTTP用JSON,解释性好

第三课:后端架构挑战

物理资源有限

  1. 离线&&在线资源并池:
    在线:IO密集、实时性;离线:计算密集、非实时
    可用cgroup做隔离
  2. 自动扩容:
    在线业务潮汐性自动扩容
    指标:CPU、内存等,注:IO暂不可行、QPS难量化
  3. 微服务亲和性:
    AB两个微服务有紧密通信关系,但网络RPC序列化、反序列化成本较高
    可转为本地IPC,共享内存

第四课:CPU水位负载均衡

输入:带权重的负载均衡策略

作业

  1. 多端支持:统一为HTTP接口调用
  2. 云原生基础设施: 资源池,实现线上线下动态扩容
  3. 用户分析服务线下任务可提供用户画像等,用户活动(积分)是线上服务

image.png