Go Web概述

1.什么是Web应用
Web应用是为了通过HTTP向用户发送定制的动态内容而诞生的。
狭义来看,Web应用对客户端发送的HTTP请求做出响应,并通过HTTP响应将HTML传回客户端。

如果一个程序不是向用户渲染并展示HTML,而是向其他程序返回某种非HTML格式的数据,那么这个程序就是一个为其他程序提供服务的Web服务。

2.HTTP简介
在HTTP协议中,客户端被称作用户代理(user-agent),而服务器被称为Web服务器。大多数情况下,HTTP客户端是Web浏览器。

HTTP是一种无状态协议,后续发生的请求并不知道之前发生的请求。相对的,FTP、Telnet这类面向连接的协议会在客户端和服务器之间创建一个持续存在的通信通道(其中Telnet在进行通信时使用的也是请求-响应的方式以及客户端-服务器计算模型)。注意,HTTP1.1也可以通过持久化连接来提升性能。

3.SSI技术
服务器端包含技术,这种技术允许开发者在文件里包含一些指令:当客户端请求HTML文件时,服务器返回之前会先执行文件中的指令,并将指令替换成结果。SSI常用在整个网站都会出现的页面首部、尾部和HTML文件包含的频繁使用的文件。
SSI技术最终演化更复杂的代码,使用更强大解释器,这一模式衍生出了PHP、ASP、JSP和ClodFusion等一系列非常成功的引擎。这一模式也是Mustache、ERB、Velocity等一系列Web模板引擎的基础。

4.大规模web应用的特征
大规模可扩展的web应用通常有以下特征:
可扩展
模块化
可维护
高性能

4.1可扩展:
添加更过的硬件来获得更强的请求处理能力
垂直扩展:提升单台设备性能
水平扩展:提高设备的数量
Go可以通过多个Go Web应用之上架设代理进行高效的水平扩展。

4.2模块化:
通过复用模块化的组件降低软件开发所需费用。尽管Go是一门静态类型语言,通过它的接口机制对行为进行描述,以此来实现动态类型匹配。Go语言经常会被用于创建微服务。在微服务架构中,大型应用由多个较小的独立服务组成,这个独立服务可以相互替换,并根据它们的功能进行组织。

4.3可维护:
拥有一个易于维护的代码库对大规模Web应用很重要。
Go有简洁且可读性强的语法和清晰的包管理系统,并有一套优秀工具
Go代码和文档一同演进
Go内置了对测试的支持,包括功能测试、性能测试和Web应用测试

4.4高性能:
go的goroutine对并发编程提供了非常好的支持

5.HTTP版本
HTTP至今只进行了3次迭代修改,HTTP0.9、HTTP1.1、HTTP2.0。
目前使用最广泛的是HTTP1.1。

HTTP2.0这一版本对性能非常关注,跟以前版本每次只能发送单个请求的做法不同,其是完全多路复用,这意味着多个请求和响应可以在同一时间内使用同一个连接。此外还有首部压缩减少传输数据量和允许服务器将响应推送至客户端。

猜你喜欢

转载自blog.csdn.net/weixin_42506905/article/details/81636665