这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,今天学习了架构的基本知识,以及解决挑战的相关手段,偏高层的设计,还需要在实践里慢慢理解。
第一课:基本概念
什么是架构:软件结构与组件的抽象描述
分类
- 单机:简单,但面临C10K
- 单体:进程部署到多机,可水平扩容,但职责太多开发效率低
- SOA: 应用的不同功能单元抽象为服务;服务之间需要通信标准
SOA的去中心化演进:微服务
问题:数据一致性、高可用、治理
思路
- 垂直切分:分布式
- 水平切分:分层/模块化
第二课:架构剖析
虚拟化技术&&编排
云计算:关注业务
架构:
- IaaS 买房子
- PaaS 全包
- SaaS 弹性资源平台构建的云服务
- FaaS 类似OJ平台,实现函数即可
云原生:可弹性扩展的应用
- 弹性资源
- 服务资源
- 计算资源:在线&&离线
- 消息队列:在线:消峰&&离线:数据分析
- 存储资源:对象存储
- DevOps:提高软件开发交付效率开发运营 自动化测试、回滚
- 服务网格:微服务之间通讯的中间层,网络代理,业务与治理解耦
实现了异构系统治理统一
service mesh数据面进行通信
微服务
通信标准:RPC(Thrift,gRPC),HTTP
- RPC性能高:有压缩
- RPC自带服务治理:eg超时、熔断
- 可解释性:HTTP用JSON,解释性好
第三课:后端架构挑战
物理资源有限
- 离线&&在线资源并池:
在线:IO密集、实时性;离线:计算密集、非实时
可用cgroup做隔离 - 自动扩容:
在线业务潮汐性自动扩容
指标:CPU、内存等,注:IO暂不可行、QPS难量化 - 微服务亲和性:
AB两个微服务有紧密通信关系,但网络RPC序列化、反序列化成本较高
可转为本地IPC,共享内存
第四课:CPU水位负载均衡
输入:带权重的负载均衡策略
作业
- 多端支持:统一为HTTP接口调用
- 云原生基础设施: 资源池,实现线上线下动态扩容
- 用户分析服务线下任务可提供用户画像等,用户活动(积分)是线上服务