架构定义解析
架构的定义
架构,又称软件架构 ,是有关软件整体结构和组件的抽象描述,用户知道软件系统各个方面的设计。
什么是架构
单机
优点: 简单 问题: C10K problem ,运维需要停服
单体、垂直应用 | 垂直切分
优点:分布式部署
垂直应用架构:按应用垂直切分
优点:水平扩容,不需要停服
问题:职责多,开发效率低,爆炸半径大
SOA,微服务 | 水平切分
将不同的功能单元抽象为服务,定义服务之间的通信标准。 微服务架构:SOA的去中心化演进方向
架构剖析
云计算是指通过软件自动化管理,提供计算资源的服务网络
云原生
云原生技术为组织在公有云,自由云,混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供可能
弹性资源:提供虚拟资源,可以弹性扩容缩容,并不用关注底层资源形态。不需要自己去买机器,装系统,自己去扩容。
微服务架构:云原生领域微服务架构可以是业务单元解耦,划分清晰。具有统一的通信标准,使得服务之间可以通畅地通信。
DevOps:在已经部署的云服务进行开发的相关技术栈,提高软件开发,交付效率
服务网格:使用服务网格,业务可以再做进一步的松耦合,可以把服务和网络通信做解耦合。为不同的业务层系统提供统一的解决方案(例如不同的编程语言实现)。
弹性资源:
- 服务资源调度 微服务,大服务(根据占用资源的量区分
- 计算资源调度 在线:热销榜单 离线:热销榜单更新
- 消息队列 在线:削峰,解耦 离线:大数据分析
弹性存储:
- 经典: 对象:宣传视频 大数据:用户消费记录
- 关系型数据库 收银记录
- 元数据 服务发现:蛋糕店通讯录,方便定位服务
- NoSQL
DevOps
提高软件开发,交付效率
微服务架构
通信标准:HTTP,RPC
微服务中间件 RPC vs HTTP RPC性能强,有很多很多压缩方案 很多RPC中间件自然存在服务治理的能力 RPC协议可解释性相对HTTP的JSON的可解释性要弱
挑战
基础设置:
物理资源是有限的,机器和带宽 资源利用率受制于部署服务
用户层面
网络通信开销较大 网络抖动导致运维成本提高 异构环境下,不同实例资源水位不均
方法:离在线资源并池 降低物理资源成本,提供更多弹性资源,增加收入
在线业务特点:
- io密集型为主
- 潮汐性,实时性
离线业务特点
- 计算密集型占多数
- 非实时性
方法: 自动扩缩容
降低业务成本
思路:自动扩缩容,利用在线业务潮汐性自动扩缩容