go web 读书笔记 (go 与 web 应用)

 

一.为什么使用go编写web应用?

1.1 大规模的web应用通常具备以下几点特征:

  • 可拓展
  • 模块化
  • 高性能
  • 可维护

1.1.1 go与可拓展的web

两种方法可以对性能进行拓展:

  • 垂直扩展  (即提升单台设备的CPU数量或者性能)
  • 水平扩展  (即增加设备的数量来提高性能)

go 在垂直扩展拥有不俗的表现: 可以通过调度进行10W个goroutine

go web可以编译成不包含任何依赖的静态二进制文件,可以安装到没有任何go环境的系统中,以一种简单一致的方式部署。

 

1.1.2 go与模块化的web

go 经常用于创建微服务

 

1.1.3 go与可维护的web

 

1.1.4 go与高性能的web

go 语言设计目标就是接近C语言的性能,并发编程。

 

1.2 Web应用的工作原理

1.2.1 http 简介

无状态,由文本构成的响应-请求协议,使用的是cs计算模型。

1.2.2  幂等的请求

put delete

1.2.3  http2

http2是二进制协议,多路复用,多个请求响应可以在同一时间共用一条连接,从而提高性能

go 1.6之后使用https自动使用http2

 

1.3 hello-world 第一个go web 应用

package main

import (
	"fmt"
	"net/http"
)

func handler(writer http.ResponseWriter,request *http.Request)  {
	fmt.Fprintf(writer,"Hello world ,%s",request.URL.Path[1:])
}

func main()  {
	http.HandleFunc("/",handler)
	http.ListenAndServe(":8081",nil)
}

  

posted @ 2020-08-28 11:55  Ethan.Sun  阅读(145)  评论(0编辑  收藏  举报