SpringBoot Web(上)

微服务

微服务:是一种现代的软件SOA架构,用于建立分布式系统,主要是解决单体应用(Monolithic Application)规模增加时所带来的问题

分布式系统主要是分布式计算

什么是SOA?面向服务的体系结构,任何资源都是服务

面向服务架构(SOA) VS 微服务
相同点:面向服务、松耦合、模块化、分布式计算、平台无关性
差异:原子性、领域驱动设计、开发运维体系

微服务面临挑战:
注册与发现、路由、可靠性、延迟、热点、短路、伸缩、异步、监控、配置、数据同步、安全

快速开始建立一个spring-boot项目
https://start.spring.io/

静态web内容

静态web内容:如HTML、CSS、JS、JPEG、Flash等
特点:
计算类型I/O类型、交互方式单一、资源内容基本相同、资源路径都是物理路径(文件、目录)、请求方法主要是GET
使用场景:

  • 信息展示
  • 样式文件(CSS)
  • 脚本文件(JS)
  • 图片(JPEG、GIF)
  • 多媒体(Flash、Movie)
  • 文件下载
    常见Web服务
  • Apache Http Server
  • Nginx
  • Microsoft IIS
  • GWS (Google Web Server)

静态Web 内容 为什么 Java Web Server 不是常用 WebServer?

  • 内存占用:Java类型byte和short其实在JVM当中都是Int类型,所以说在资源上需要分配更大空间
  • 垃圾回收:通过System.gc()也是只被动的告诉JVM需要回收,具体什么时候回收还要等,会出现停顿的现象(stop word)线程和程序都会停下来当出现Full GC的时候
  • 并发处理:线程池与线程的开销,所以需要将静态服务和动态服务器要进行分离
标准优化技术

资源变化:当第一次请求的时候会相应回最后修改的时间并返回200,但第二次的时候会把请求头带过去If-Modified-Since并返回304 Not Modified 说明此资源没有改变不需要重复请求

  • 响应头:Last-Modified Fri, 27 Oct 2017 04:08:11 GMT
  • 请求头:If-Modified-Since Fri, 27 Oct 2017 04:08:11 GMT

资源缓存:ETag在第一次请求返回的响应头,相当于直接访问缓存
-响应头:ETag “59f2b12b-0”
-请求头:If-None-Match “59f2b12b-0”

动态Web内容

请求内容通过服务器计算

特点:
  1. 计算类型:混合类型(I/O、CPU、内存)
  2. 交互方式:丰富(用户输入、客户端特征等)
  3. 资源内容:多样性
  4. 资源路径:逻辑路径(虚拟)
  5. 请求方法:GET、HEAD、PUT、POST等
常见使用场景:
  1. 页面渲染
  2. 表单交互(Form)
  3. AJAX
  4. XML
  5. JSON/JSONP(跨域)
  6. Web Services(SOAP、WSDL)
  7. WebSocket
流行Java Web服务器
  1. Servlet容器(Tomcat、Jetty)
  2. 非Servlet容器(Undertow)

请求:包括资源定位(URI)、请求协议(Protocol)、请求方法(Method)、请求参数(Parameter)、请求主题(Body)、请求头(Header)、Cookie用于保存用户会话
响应:响应头(Head)、响应主体(Body)

技术/架构演变:

CGI(Common Gateway Interface)
Servlet
JSP(Java Server Page)
Model1(JSP+Servlet+JavaBeans):发送请求经过Servlet处理然后在经过jsp进行返回,一般一个Servlet对应一个jsp页面
在这里插入图片描述

Model2(MVC)M:数据和数据处理 V:试图渲染返回 C:控制访问
在这里插入图片描述
Struts Web MVC:Http请求到,前端控制器Front Controller,转发给Action,在经过模型处理最后到视图渲染然后返回给客户端
在这里插入图片描述
Spring Web MVC:
在这里插入图片描述

Model2 与 MVC的细微差异
  • Model2为面向Web 服务的架构,MVC 则是面向所有应用场景(PC应用、无线应用)
  • 相对于MVC,Model2中Controller 细化为 Front Controller(FC)和Application Controller(AC),前者(FC)负责路由后者(AC),后者(AC)负责跳转视图(View)

模板引擎

JSP:是翻译式语言,JSP->.java->.class,JSP可以用Java代码

Velocity:velocity->解释执行,AST解析

Thymeleaf

从性能而言,JSP > Velocity >Thymeleaf
从可读性,Thymeleaf>Velocity >JSP

XXXProperties

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值