架构思维学习总结(一)
2022-05-30 本文已影响0人
奋斗的韭菜汪
2-1 互联网架构演变进程
一、架构认知升级:从高并发/秒杀=架构学习中跳出来
- 高并发系统不一定是分布式系统:
单机redis多路复用可以支撑10wQPS;
单机nginx可以支持10w并发; - 高并发说法是中国特色,
国内(高并发架构)high concurrency Architecture:从技术出发
国外:(高)high scalable Architecture:出发点是从业务出发
技术是服务业务的,
秒杀系统(seckill system)也是中国特色
企业的核心业务逻辑是不可能平凡变动的(如,电商是一个下单系统,打车是一个排单系统)架构设计过程中要充分考虑核心业务,保证核心业务系统模块的架构不变动,比如订单表不要出现orderExt,设计初期充分考虑系统可伸缩。
二、架构定义:从理论上重新认识何为软件架构
软件系统架构设计 ->互联网应用软件系统架构设计
软件系统架构设计方法
工具:CMMI、ITIL
比如电信行业、电商行业、外卖行业、打车行业。
架构的定义是一个复杂问题,例如人是什么,需要结合具体业务场景
Stacey matrix
对于软件系统研发管理:
架构设计最终是把人和机器联系起来
- 架构是系统的骨架(对系统进行业务建模,数据建模,抽象关键内容)
- 架构影响系统的非功能性属性(性能、可扩展性、兼容性、安全性、可测试性、可移植性)(定义软件的非功能性属性)
- 架构建模的过程是提前决策的过程,有利于发现技术问题。(发挥群体智慧,为架构决策提供流畅和方法)
- 统一了统一的通讯机制(系统相关规范)
- 提供了可重用的系统建模(总结复盘为后期系统架构提供经营)
- 与利益相关者进行沟通,可以为系统修改提供理由,从而得到资源(让非技术部门领导了解系统关键部分)
- 有利于评估系统开发成本(能为系统提供复杂的评估)
- 影响企业组织架构划分(能力模型)
...
三、单体架构及其演变
1、单体架构
2、面向服务架构SOA
3、微服务架构
当前服务架构主流是微服务,微服务架构更通用
- 对于系统的整体架构(包含java/python/go等语言的后端应用在内),绝大多数情况企业项目,在当前环境下使用微服务更好,如果使用云服务,优势更明显。
- serverless、脚手架、和servicemesh等都是为了提高微服务开发交付的整体效率,最终还是微服务架构
四、分布式架构和微服务架构的关系
分布式架构及可以是单体架构也可以是微服务架构;
单体架构可以多实例;
- 延伸
(微服务是为了避免分布式数据库,因为分布式数据库曾在很多问题)
单台数据库tps可以达到5千,一分钟可以插入订单表30万单;
比如下单系统,足够支撑日千万单。
部署多个服务