IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 互联网架构演变过程 :应用架构 -> 正文阅读

[Java知识库]互联网架构演变过程 :应用架构

目录

应用架构

一、单机调优

二、动静分离

三、分布式

四、微服务

五、总结与思考


应用架构

一、单机调优

早年间的项目大多采用 mvc 开发。

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

二、动静分离

早年间的 Apache+tomcat ,后被 nginx 几乎一统江山。( 前后端开发模式的演进: mvc 页面嵌套 接口化)

?

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

?

三、分布式

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

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

四、微服务

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

五、总结与思考

  • 如何理解微服务与SOA,分布式的关系?
  • 常用的分布式服务框架有哪些?
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:04:09  更:2022-05-05 11:08:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:31:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码