高可用分布式架构系统架构师

架构思维学习总结(一)

2022-05-30  本文已影响0人  奋斗的韭菜汪

2-1 互联网架构演变进程

一、架构认知升级:从高并发/秒杀=架构学习中跳出来

  1. 高并发系统不一定是分布式系统:
    单机redis多路复用可以支撑10wQPS;
    单机nginx可以支持10w并发;
  2. 高并发说法是中国特色,
    国内(高并发架构)high concurrency Architecture:从技术出发
    国外:(高\color{red}{可伸缩架构})high scalable Architecture:出发点是从业务出发
    技术是服务业务的,\color{red}{做架构要从业务出发}
    秒杀系统(seckill system)也是中国特色
    \color{red}{高并发/秒杀系统 -> 可伸缩系统 -> 可扩展系统 }
    企业的核心业务逻辑是不可能平凡变动的(如,电商是一个下单系统,打车是一个排单系统)架构设计过程中要充分考虑核心业务,保证核心业务系统模块的架构不变动,比如订单表不要出现orderExt,设计初期充分考虑系统可伸缩。

二、架构定义:从理论上重新认识何为软件架构

软件系统架构设计 ->互联网应用软件系统架构设计
软件系统架构设计方法
工具:CMMI、ITIL
\color{red}{对特定行业的软件架构可以去参考国外已经成熟系统的架构}
比如电信行业、电商行业、外卖行业、打车行业。
架构的定义是一个复杂问题,例如人是什么,需要结合具体业务场景
Stacey matrix

Ralph Stacey model
对于软件系统研发管理:
\color{red}{确定性高、一致性高的:(服从)外部驱动、问责制;模块化、流程化、信息化。}
\color{red}{确定性低、一致性低低:(主人公意识)内部驱动、自我责任感;}
架构设计最终是把人和机器联系起来
为何架构设计很重要?
  1. 架构是系统的骨架(对系统进行业务建模,数据建模,抽象关键内容)
  2. 架构影响系统的非功能性属性(性能、可扩展性、兼容性、安全性、可测试性、可移植性)(定义软件的非功能性属性)
  3. 架构建模的过程是提前决策的过程,有利于发现技术问题。(发挥群体智慧,为架构决策提供流畅和方法)
  4. 统一了统一的通讯机制(系统相关规范)
  5. 提供了可重用的系统建模(总结复盘为后期系统架构提供经营)
  6. 与利益相关者进行沟通,可以为系统修改提供理由,从而得到资源(让非技术部门领导了解系统关键部分)
  7. 有利于评估系统开发成本(能为系统提供复杂的评估)
  8. 影响企业组织架构划分(能力模型)
    ...

三、单体架构及其演变

1、单体架构
2、面向服务架构SOA
3、微服务架构
当前服务架构主流是微服务,微服务架构更通用
微服务可以实现一个单体架构:使用一个数据库
微服务架构要求各个服务拥有自己的独立数据库
\color{red}{思考:公司从零开始的项目考虑到业务情况和资源限制,早期可以使用微服务实现soa架构,}
\color{red}{同时严格要求开发者模块之间调用使用rpc,方便后期微服务拆分}

service mesh与kuberneters关系

  1. 对于系统的整体架构(包含java/python/go等语言的后端应用在内),绝大多数情况企业项目,在当前环境下使用微服务更好,如果使用云服务,优势更明显。
  2. serverless、脚手架、和servicemesh等都是为了提高微服务开发交付的整体效率,最终还是微服务架构

四、分布式架构和微服务架构的关系

分布式架构及可以是单体架构也可以是微服务架构;
单体架构可以多实例;
\color{red}{分布式是一种部署方式}

  1. 延伸
    \color{red}{分布式数据库}(微服务是为了避免分布式数据库,因为分布式数据库曾在很多问题)
    单台数据库tps可以达到5千,一分钟可以插入订单表30万单;
    比如下单系统,足够支撑日千万单。
    \color{red}{分布式消息中间件:}部署多个服务
上一篇 下一篇

猜你喜欢

热点阅读