这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、本章重要知识点
规则引擎的设计与实现
-
1.什么是架构
- 围绕架构的定义和演进两部分内容展开
-
2.企业级后端架构剖析
- 详细介绍企业级后端架构的形态
-
3.企业级后端架构的挑战
- 企业级架构都面临着哪些挑战,如何解决
-
4.后端架构实战
- 结合前三部分的知识点,以第三部分中的一个挑战为例,讲解如何做架构设计
二、详细知识介绍
什么是架构
定义
架构,又称软件架构,
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
单机
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
优点:简单
单体、垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
优点:
- 水平扩容
- 运维不需要停服
SOA、微服务|水平切分
SOA(Service Oriented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
微服务架构:SOA 的去中心化演进方向、
企业级后端架构剖析
云计算
是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石
基础
-
虚拟化技术:
硬件层面(VM 虚拟机)- KVM/Xen/VMware
操作系统层面(Container 容器)- LCX/Docker/Kata Container
网络层面 - Linux Bridge/Open v Switch
-
编排方案:
VM - OpenStack/VMWare Workstation
Container - Kubernetes/Docker Swarm
架构
云服务
- IaaS 云基础设施,对底层硬件资源池的抽象
- PaaS 基于资源池抽象,对上层提供的弹性资源平台
- SaaS 基于弹性资源平台构建的云服务
- FaaS 更轻量级的函数服务。好比 LeetCode 等 OJ,刷题时只需要实现函数,不需要关注输入输出流
云部署模式(拓展)
- 私有云 - 企业自用
- 公有云 - AWS/Azure/Google Cloud/Huawei
- 混合云
云原生
- 弹性资源
- 微服务架构
- DevOps
- 服务网格
- 弹性计算资源
计算资源调度
- 在线计算 - 互联网后端服务
- 离线计算 - 大数据分析。Map-Reduce/Spark/Flinnk
消息队列
- 在线队列 - 削峰、解耦
- 离线队列 - 结合数据分析的一整套方案,如 ELK
- 弹性存储资源
-
经典存储
-
对象存储
视频、图片等。结合 CDN 等技术,可以为应用提供丰富的多媒体能力 -
大数据存储
应用日志、用户数据等。结合数据挖掘、机器学习等技术,提高应用的体验
-
-
关系型数据库
-
元数据
-
服务发现
-
NoSQL
- KV 存储 - Redis
- 文档存储 - Mongo
- DevOps
DevOps 是云原生时代软件交付的利器,贯穿整个软件开发周期。 结合自动化流程,提高软件开发、交付效率
- 微服务架构
通信标准:
-
HTTP(RESTful API)
-
RPC(Thrift gRPC) 微服务中间件 RPC vs HTTP:
-
性能
-
服务治理
-
协议可解释性
云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做。
- 服务网格
服务网格(Service Mesh):
- 微服务之间通讯的中间层
- 高性能网格代理
- 业务代码与治理解耦 相比较于RPC/HTTP框架:
- 异构系统治理统一化
- 与业务进程解耦,生命周期容易管理