Go Web编程GET /domains/example/ HTTP/1.1 //请求行: 请求方法 请求URI HTTP协议/协议版本 Host:www.iana.org //服务端的主机名 User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229 ParseMultipartForm调用一次之后,后面再次调用不会再有效果。 通过上面的实例我们可以看到我们上传文件主要三步处理: 111 1. 表单中增加enctype="multipart/form-data" 2. 服务端调用r.ParseMultipartForm,把上传的文件存储在内存和临时文件中 3. 使用r.FormFile获取文件句柄,然后对文件进行存储等处理。 文件handler是multipart.FileHeader id,如果已经包含一个session id则说明以前已经为此客户创建过session,服务器就按 照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了 该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含 session id,则为此客户创建一个session并且同时生成一0 码力 | 295 页 | 5.91 MB | 1 年前3
微服务容灾治理微服务容灾治理 1. go-zero稳定性能⼒概览 经过这么多年⼤流量服务端架构设计的沉淀,go-zero在保护服务的稳定性上下⾜了功夫,不管是 CPU密集型还是IO密集型服务,go-zero都能很好的保护服务在如下场景不被拖垮或卡死: • 远超服务容量的突发⼤流量 • CPU打满 • 上下游故障或者超时 • MySQL、MongoDB、Redis等中间件故 障或者超负载(典型的是CPU飙⾼) 如图,我们从三个⽅⾯来保护系统的稳定性: • 服务端⾃适应过载保护 • 服务端⾃适应熔断 • 客⼾端⾃适应熔断 当然,我们还有⾃动适配后端服务能⼒的负载均衡算法,对稳定性进⼀步保驾护航。本⽂主要讲解⾃ 适应过载保护的原理、场景和表现。 2. ⾃适应过载保护压测 ⽤过Windows的同学对这个界⾯应该都不陌⽣,这就是典型CPU打满服务不可⽤的表现。此时,我 benchmarkCPU-103303600743ns/op 从 benchmark 结果可以看出单个请求的逻辑处理需要3.6msCPU资源(不包括服务端中间件处理 消耗)。对于两核的容器来说,qps上限约为550(2000/3.6)。但是我们是⼀个HTTPserver,肯定 还有接受请求、解析请求、返回结果等开销,实际上是达不到550qps的。0 码力 | 13 页 | 1.68 MB | 1 年前3
2.游戏战中陪伴助手微服务架构设计与应用) // 自动通过北极星名字服务寻址并发起 RPC 调用 rsp, err := client.GetFeedList(ctx, req) // ---------------- // 服务端业务代码 type feedsRerankImpl struct{} func (feedsRerankImpl) GetFeedList(ctx context.Context, req *GetFeedRequest) 的适配很简单,改一句就可以了 单体化适配——client 端的适配 Server 端需额外 register 一个 proxy // ---------------- // 服务端业务代码 package rerank //各微服务不要将服务端实现放在 main 包中 type feedsRerankImpl struct{} func (feedsRerankImpl) GetFeedList(ctx0 码力 | 47 页 | 11.10 MB | 1 年前3
如何用GO支撑海外电商的快速发展-吕梦楼架构演变过程 架构演变 03. 单体应用 演变 仅PC站,页面通过服务端渲染 新增M站,核心服务抽离到Core 架构演变 04. 为什么用GO? 架构演变 05. 混合模式 新增GO商城服务,迁移下单流程中的订单结算、收银台等功能 PC和M站相关功能,请求下发到GO商城服务,页面仍通过PHP服务端渲染 架构演变 06. 前后端分离 核心流程全部迁移到GO商城服务,包括购物车、订单、商品和地址等0 码力 | 33 页 | 3.80 MB | 1 年前3
Go vs. GoPlus(Go+)Go • 对 C 语言的完美支持,是 Go 快速崛起的关键支撑 Go 语言小结 • 少就是指数级的多 -最精简 -学习门槛低 -心智负担低 • 关注焦点 -服务端开发 -大型软件工程 Go 语言的发展瓶颈 • 服务端开发不是一个大市场 -成也云计算,败也云计算 • Go 语言需要开辟新战场 -桌面开发(程序员最多的市场) • PC桌面开发 • Mobile开发 • Web开发(含小程序及轻应用)0 码力 | 54 页 | 1.82 MB | 1 年前3
1.1 Go语言游戏项目应用情况汇报2015年,仙侠道⺴⽹网⻚页版,使⽤用Go语⾔言替代神仙 道时期的Erlang,开发流程和主要架构不变 • 2014年 - 2015年,仙侠道⼿手机版,在原有架构基础上拆分 游戏逻辑服务器,分离互动功能 游戏服务端的挑战 • 请求频繁 • 实时性要求⾼高(百毫秒的延迟便可被感知) • 开发效率要求⾼高(每周⼀一更) • 运维效率要求⾼高(最好是别运维。。。) 我们做了哪些事情 • 通讯层:协议描述语⾔言以及代码⾃自动⽣生成0 码力 | 21 页 | 1.63 MB | 1 年前3
NSQ - 陈冶redistributeRDY() NSQLookupd Handler incomingMessages maybeUpdateRDY() MaxInFlight 总结 • 将复杂度集中在服务端,客户端易⽤ • 数据⽆冗余 • 数据⼴播空间复杂度是 O(N) • 内存队列与磁盘队列混⽤,时序性⽆法预估 • Topic -> Channel 消耗太⾼ • ⼤量Fin包导致系统调⽤/⼩数据包过多0 码力 | 37 页 | 2.49 MB | 1 年前3
Golang在接入层长连接服务中的实践-黄欣心得 目录 • 架构 • 心得 背景—why 长连接? • 业务场景 – 大量实时计算 • 司机乘客撮合 • 实时计价 – 高频度的数据交互 • 坐标数据 • 计价数据 – App和服务端双向可达 • 上行(抢单) • 下行(派单) 背景—why golang? • 开发效率 • 异步模型,同步原语 – C:代码上各种回调、思维中保持冷静 – Go:代码上同步,思维自然 •0 码力 | 31 页 | 1.67 MB | 1 年前3
1.3 七牛如何做HTTP服务测试– 基于客户端SDK写测试案例(Test Case) • 问题 – 客户端SDK修改导致测试案例编不过 – 客户端SDK通常是使用方友好,而不是测试方友好 – 让服务端与客户端SDK耦合,容易过早陷入客户端SDK如何抽象 更合理的细节,而不能专注于测试服务逻辑本身 换个角度 • 直接基于协议测试呢? – 比如,基于 http.Client0 码力 | 27 页 | 422.11 KB | 1 年前3
GoFrame框架介绍及设计经典MVC • 三层架构模式 • 项目代码结构 代码分层设计-经典MVC 痛点: • 视图展示与数据操作方式的进一步剥离,特别是移动端的发展, 前端MVVM框架的发展,我们大多数场景下已不再需要服务端 渲染View • Model层级的代码既维护着数据,也封装着业务逻辑,随着业 务逻辑变得越来越复杂,这一层功能逻辑会变得越来越臃肿不 易维护 • Controller和Model的职责边界模糊,对于开发人员写好代码的0 码力 | 37 页 | 8.84 MB | 1 年前3
共 13 条
- 1
- 2













