【1-1:读懂-互联网架构】

基本概念

  1. 业务架构
  • 定义:业务战略,治理,组织和关键业务流程。从企业视角来看,重在价值、信息、协作,关联多部门。
  • 从业务角度描述系统承载的功能集合、领域边界、各组成部分的逻辑关系。区别于技术架构,业务架构图里避免出现技术类的术语,如 DB、MySQL、CMQ、同步、异步、并发等。
  1. 应用架构
  • 定义:要部署的各个应用程序的蓝图,其交互以及与组织核心业务流程的关系。
  1. 数据架构
  • 定义:一个组织的逻辑和物理数据资产和数据管理资源的结构。
  1. 技术架构
  • 定义:支持部署业务,数据和应用程序服务所需的逻辑软件和硬件功能。这包括IT基础设施,中间件,网络,通信,处理和标准。
  • 技术架构体现的要具有技术特色,例如同步、异步、消息等

互联网架构

图1 分层

  • 业务层:与访问连接的桥梁
  • 应用层:代码、项目
  • 数据层:数据
  • 部署层:环境(硬件、云平台)

一、业务层

1.1 单体模式

单体模式就是以单业务为主,逐个业务线扩张,系统也呈现为多个MVC独立运行状态,每个业务一套系统,会带来很多问题:

技术架构上

  • 相同的功能需要重复性的投资
  • 业务系统间的集成和协作成本高
  • 不利于基础性业务的沉淀和持续发展

组织架构上

  • 部门在单体模式往往每一个项目团队跟随项目疯狂扩展,项目利用率低

1.2 中台战略

中台是一种企业架构,实际上是共享理念在业务、系统、组织架构上的落地实施
图2

二、数据层

2.1 主从读写

  • 连接多个数据库,数据之间形成主从关系,从库上读,读写压力被分散。
  • 数据库集群:一主多从、双主单写
  • 但是这个不能解决一个表过大的问题,就要考虑拆表的问题

2.2 分库分表

  • 主从库的写入依然是有一个统一的主库入口。随着业务量的提升,继续细粒度化拆分业务分库:订单库,产品库,活动库,会员库
  • 横向分表:(拆记录)3个月内订单,半年内订单,更多订单
  • 纵向分表:(拆字段)name、phone-张表,info、address一张表,俩表id一致(根据活跃度拆表,通过字段关联起来)

2.3 高速缓存

  • 一些热点数据放到redis中
  • redis性能可靠,纯内存,子带分片,集群,哨兵,支持持久化
    存在的问题
  • 缓存策略:冷热数据的存放,缓存与db的边界需要架构师去把控,重度依赖可能引发问题8XU(memcache造成db高压案例; redis短信平台故障案例)
  • 缓存陷阱: 击穿(单- key过期),穿透(不存在的 key),雪崩(多个 key 同时过期)
  • 数据一致性:缓存和 db 之间因为同一份数据保存了两份,自然带来了一致性问题

2.4 数据多样化

  • 分类
    搜索引擎(ES)、缓存集群(mysql)、mysql集群、分布式文件、nosql

  • 开发框架支持:
    存储的数据多样化,要求开发框架架构层面要提供多样化的支撑,并确保访问易用性
    数据运维:多种数据服务器对运维的要求提升,机器的数据维护与灾备工作量加大
    数据安全:多种数据存储的权限,授权与访问隔离需要注意

三、应用层

3.1 动静分离

3.2 SOA

解决服务之间的通信问题

3.3 微服务

  • 方案
    微服务是基于SOA的思想,将系统粒度进一步细化而诞生的一种手段,中台化得以实现,各个中心以及前端业务拆解为多个小的服务单元
  • 技术
    微服务经历了从1.0(cloud)到2.0的演化(service mesh),目前企业中主流的解决方案依然是cloud全家桶Spring Cloud(课题:Spring Cloud微服务前沿技术栈,Spring、Spring Boot源码剖析)
  • 特点
    服务拆分:粒度并非越小越好。太小会带来部署维护等一系列成本的上升。
    接口约束:系统增多,各个服务接口的规范化日益重要,要求有统一的服务接口规范,推动企业消息总线的建设
    权限约束:接口不是任意想调就可以调的,做好权限控制,借助oauth2等手段,实现服务之间的权限认证

四、部署层

4.1 角色划分

把数据据、缓存、消息等中间件剥离出去,单独机器部署

4.2 应用集群

图3

  • 方案
    • apache:早期负载均衡方案,性能一般
    • Nginx:7层代理,性能强悍,配置简洁,当前不二之选
    • haproxy:性能同样可靠,可做7层或4层代理
    • Ivs:4层代理,性能最强,linux集成,配置麻烦
    • f5:4层,硬件负载,财大气粗的不二选择
  • 特点
    • session保持:集群环境下,用户登陆需要分布式session做支撑
    • 分布式协同:分布式环境下对资源的加锁要超出线程锁的范畴,上升为分布式锁
    • 调度问题:调度程序不能多台部署,容易跑重复,除非使用分布式调度,如elastic-job
    • 机器状态管理:多台应用机的状态检测与替换需要做到及时性,一般niginx层做故障转移
    • 服务升级:滚动升级成为可能,灰度发布
    • 日志管理:日志文件分散在各个机器,促进集中式日志平台的产生

4.3 多层代理

常见的代理工具:52528

4.4 异地访问

将相同的系统部署多份,分散到异地多个机房,或者电信、移动多个网络中
不同地点,不同网络接入的用户,有了不同的访问入口和选择
在这里插入图片描述

4.4 云平台

当部署数量增加时,出现了云平台,

  • 方案

    • 虚拟化:Vmware
    • 容器化:docker
    • 容器编排工具:k8s
    • 云化解决了资源的快速伸缩,但仍需要企业自备大量机器资源,推动私有云到企业云进化
  • 特点

    • 注意资源的回收,降低资源闲置和浪费,例如大促结束后要及时回收
    • 运维要求:需要运维层面的高度支撑,门槛比较高
    • 预估风险:云瘫痪的故障造成的损失不可估量
  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lweiwei@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值