一个软件实现方法有很多种,架构在方法选择上十分重要。
1、架构:
单机:简单,缺点;C10K问题,运维需要停服
单体&垂直切分:分布式部署,按应用垂直切分。水平扩容,运维与不用停服。缺点;职责太多,开发效率不高,爆炸半径大
SOA,微服务架构:
- SOA:将应用的不同功能单元抽象为服务;定义服务之间的通信标准。
- 微服务架构:SOA的去中心化演进。
- 问题:数据一致性,高可用(互相协调),治理(某工序停工如何容灾),解耦过微(划分太细运维成本太高)
架构演进:
需要+,人手+&分工+,切分的两个方向--垂直(同功能水平扩容),水平(功能分步分工如微服务)
2、企业级后端架构
云计算:Iaas,Paas,Saas,Faas
云原生:公有云,私有云,混合云中弹性管理
弹性计算资源类型:服务资源调度(微服务&大服务),计算资源(在线&离线),消息队列(在线削峰解耦,离线大数据分析)
弹性存储资源类型:对象&大数据,关系型数据库,元数据,Nosql ---- 将存储资源当成服务
Devops:贯穿整个软件开发周期
通信框架:HTTP&RPC 云原生可以交给框架去做
服务网格:微服务之间的通讯中间层,与HTTP/RPC框架对比,异构系统治理统一化,生命周期容易管理
3、企业后端的挑战
基础层面&用户层面
离在线资源并池:降低物理资源成本,实现弹性(利用在线业务潮汐性自动扩缩容)
解决思路:微服务亲合性部署
流量治理(容错容灾+Devops效率提升):微服务中间件&服务网格的流量治理
CPU水位负载均衡:Iaas+服务网格