互联网架构演变过程 :应用架构

目录

应用架构

一、单机调优

二、动静分离

三、分布式

四、微服务

五、总结与思考


应用架构

一、单机调优

早年间的项目大多采用 mvc 开发。
互联网架构演变过程 :应用架构_第1张图片

1)特点
每个项目成一个 mvc 结构,部署在应用服务器上( tomcat jboss websphere weblogic )。
(课题: tomcat 源码剖析)
随着业务扩张,需求迭代,项目变得越来越大,一个 war 包动辄几百兆。
崇尚调优, jvm 单节点调优甚至接近于强迫症的地步。(课题: jvm 性能调优)

二、动静分离

早年间的 Apache+tomcat ,后被 nginx 几乎一统江山。( 前后端开发模式的演进: mvc 页面嵌套 接口化)
互联网架构演变过程 :应用架构_第2张图片

 

1)方案
  • 静态响应:tomcat对静态文件响应一般,提取静态文件,直接由nginx响应
  • 动态代理:后端api通过代理转发给tomcat应用机器
2)特点
  • 开发层面调整:项目结构要同步调整,由原来的一体化mvc转换为后端api+前端形式。
  • 前后协调:前后端的分工变得更明确,互相并行开发,独立部署,但也带来了接口协调与约定等沟通问题
  • 跨域问题:后段与前端如果域名不同,可能存在跨域问题(head头,jsonp等手段可以解决)。

 

三、分布式

单纯的动静分离只解决了自己服务的项目结构,跨项目接口调用时,必须经过 rest 请求,不利于服务之间的交互。
淘宝 V3.0 HSF 出现,服务化导向,架构师忙于 SOA 和系统关系的梳理。
互联网架构演变过程 :应用架构_第3张图片

1)方案
  • 公共服务:重复开发的基础服务提取出来,形成服务中心,避免重复造轮子,降低成本,架构团队出现。
  • 独立性:各自服务独立部署升级,粒度更细,低耦合,高内聚
  • SOA理念诞生:服务治理的范畴,重在服务之间的拆分与统一接口
2)技术手段
异步化
  • rabbitmq (课题:滴滴打车超时架构设计)
  • rocketmq(课题:滴滴打车排队原理与剖析)
  • kafka (课题:海量订单数据同步)
Rpc
  • dubbo (课题:dubbo核心源码剖析,zookeeper源码剖析)
  • Rpc框架(课题:Rpc核心源码与手写Rpcnetty通信与进阶)
3)特点
  • 界限把控:服务的粒度、拆分和公共服务提炼需要架构师的全局把控。设计不好容易引发混乱
  • 部署升级:服务数量增多,人工部署变的不现实,必须借助自动化运维
(课题:高效运维篇, docker k3s jenkins Apollo 应用发布实战)
  • 服务可用性:抽调的微服务因需要被多个上层业务共享,可用性等级变高,一旦down机就是灾难
  • 熔断和限流:做好服务熔断和限流,提防服务单点瓶颈造成整个系统瘫痪。短信提醒失败不要影响下单。
(课题: cloud alibaba sentinel 限流)

四、微服务

互联网架构演变过程 :应用架构_第4张图片

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

五、总结与思考

  • 如何理解微服务与SOA,分布式的关系?
  • 常用的分布式服务框架有哪些?

你可能感兴趣的:(架构,tomcat,java)