架构初探|青训营笔记

91 阅读4分钟

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

架构定义解析

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

单机架构:所有功能实现在,一个进程里并部署在一台机器上,但运维需要停服、可能出现C10K问题。

C10K问题的本质上是操作系统的问题。对于Web 1.0/2.0时代的操作系统,传统的同步阻塞I/O模型处理方式都是requests per second。当创建的进程或线程多了,数据拷贝频繁(缓存I/O、内核将数据拷贝到用户进程空间、阻塞,进程/线程上下文切换消耗大, 导致操作系统崩溃。

分布式部署单机架构:按应用垂直切分单体,可以水平扩容,运维不需要停服,开发效率不高,爆炸半径大。

SOA架构:将应用的不同单元抽象为服务,定义服务之间的通信标准,去中心化。

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。 接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。 这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

企业级后端架构剖析

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

云计算应用:虚拟化基础、编排方案。

云计算架构:IaaS(使用基础设施)、PaaS(使用平台)、SaaS(使用硬件)、FaaS(使用功能)。

云原生:为组织再公有云、自由云、混合云等动态环境中构建和运行可弹性扩展的应用提供了可能性。

云原生构成:弹性资源、微服务架构、DevOps、服务网络。

弹性资源:虚拟化容器、快速扩缩器。

微服务架构:业务功能解耦、统一通信标准。

DevOps:敏捷开发、CI/CD。

服务网络:业务与治理结构、异构系统的统一化、复杂治理能力。

弹性计算资源类型:服务资源调度(微服务、大服务)、计算资源调度(在线、离线)、信息队列(在线、离线)。

弹性存储资源类型:经典、关系型数据库、元数据、NoSQL。

DevOps会贯穿整个软件开发周期,能结合自动化流程、提高软件开发、交付效率。

软件生命周期

微服务架构通信标准:HTTP、RPC。

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

业内后端架构面临的挑战

基础设施层面挑战:物理资源有限,资源利用率受限于部署服务。

用户层面挑战:网络通信开销大,网络抖动导致运维成本提高,异构环境下,不同实例资源水位不均。

离在线资源并池核心收益:降低物理资源成本,提供更多的弹性资源,增加收入。

在线业务特点:IO密集型,潮汐型,实时性。

离线业务特点:计算密集型,非实时性。

自动扩缩容核心收益:降低业务成本。

微服务亲合性部署核心收益:降低业务成本,提高服务可用性。

流量治理核心收益:提高微服务调用容错性,防止容灾,提高开发效率,更好发挥DevOps的作用。

CPU水位负载均衡核心收益:打平异构环境算力差距,为自动扩容提供正向输入。

后端架构实战

输入:服务网络数据面、注册中心存储的权重信息、宿主机提供。

输入的关键:紧急回滚能力、大规模、极端场景。

应用方案:自适应静态权重、自适应动态权重Alpha、自适应动态权重Beta。

自适应静态权重:采集宿主机物理资源信息,调整容器注册的权重。

自适应静态权重优势:复杂度低、完全分布式、可用性高、微服务中间件无适配成本。

自适应静态权重缺点:无紧急回滚能力,缺乏运行时自适应能力。

自适应动态权重Alpha:容器动态权重的自适应调整,服务网络的服务发现,流量调度能力。

自适应动态权重Alpha缺点:过度流量倾斜可能会有异常情况。

自适应动态权重Beta:服务网络上报RPC指标。

自适应动态权重Beta缺点:时序数据库压力大,动态权重决策中心指责变多。

演进方向:微服务化、引入消息队列削峰解耦、离在线链路切分、梳理强弱依赖。