Coursepages Linked From Github
Our first cloud computing book in tex.
Code related to our first cloud computing book
HNU-cloudcomputing 是湖南大学计算机学院云计算课程组维护的开放教学资源平台,主要服务于本科专业选修课《云计算技术》。平台集中发布课程主页、教材、课件、教学视频、示例代码、课程实验。
《云计算技术》面向希望系统学习云计算基本原理、核心机制和工程方法的本科生。课程的学习主线是从问题走向机制,再回到工程取舍。学生需要理解一项技术为什么出现、受到哪些约束、解决了什么问题,以及为此付出了什么代价。
这门课会手把手带学生做一件事:从零写一个能真人对战的在线游戏,再亲手把它一路撑上云。
学生将依次闯过五关—— 双雄对决 :先写出双人对战的最小版本,搞定网络通信与状态同步,消息怎么切、延迟怎么压、TCP 和 UDP 怎么选; 英雄集结 :玩家多起来了,把一台机器的并发榨干,协程、锁、I/O 多路复用、连接池,每优化一步都拿延迟和吞吐说话; 切分世界 :单机撑不住了,把系统拆到多台机器,分片、复制、共识、容错,亲手按下一致性与可用性的取舍开关; 飞升入定 :机器多到管不过来了,交给平台,容器化、Kubernetes 编排、弹性伸缩、故障自愈; 穷理尽微 :最后沉到机制深处,看清容器、网络与调度的本来面目,学习核心原理,一直摸到容器加速和网络虚拟化的研究前沿。
这里没有要背的概念清单。每项技术出场,都是上一轮亲手捅出的麻烦把它逼出来的;每个优化,都要跑出数字才算数。游戏跑起来就能真人对战,系统做得好不好,当场见分晓。
每个教学阶段均配有代码演示和递进式实验。学生需要运行系统,记录延迟、吞吐和资源占用,修改关键机制并比较结果。课程结束时,学生能够分析云计算系统中的规模、状态、故障和资源问题,选择合适的机制,并通过实验验证设计方案。本课程适合具备基本编程能力和数据结构知识的学习者;接触过计算机网络和操作系统则更佳。
注意: 在线游戏只是教学载体 ,形式可以变化,规模、状态、故障和资源问题具有共通性。课程所讲的云计算机制和系统工程方法同样适用于在线协作、电商平台和大模型服务等其他在线系统。
云计算系统把计算、存储和网络组织为共享资源池,并提供按需扩容与故障恢复能力。
课程团队包括一位授课教师和六位课程助教。授课教师负责确定课程目标和内容体系,承担课堂讲授,并统筹教材、课件、实验、代码和视频的整体安排;课程助教分别参与教材整理、实验验证、代码维护、视频制作和课程答疑。
|
陈果 湖南大学计算机学院教授,国家超算长沙中心常务副主任。 长期承担本科生《云计算技术》《编译原理》《互联网技术与网络安全》等课程教学,出版教材3部,获全国计算机专业优秀教师、华为ICT大赛中国总决赛特等奖、华为全球最有价值教师、湖南省本科教学成果一等奖、湖南省信息化教学竞赛一等奖等奖项。科研方面长期聚焦高性能网络、云计算系统和人工智能系统,其中RDMA高性能网络协议栈相关研究在国际上得到广泛认可,发表论文近百篇,成果应用于华为、腾讯、字节跳动等企业产品,主持国家自然科学基金企业联合重点项目、工信部揭榜挂帅项目、国家重点研发计划课题、国家级青年人才项目。 guochen@hnu.edu.cn · 个人主页 · 课程团队介绍 |
| 成员 | 分工 | 具体工作 | 联系方式 |
|---|---|---|---|
| 徐方林 | 内容与教材 | 参与课程内容与教材编写,负责云原生核心原理与前沿研究内容,并承担终稿核定。 | xfl825@hnu.edu.cn |
| 胡文举 | 实验验证 | 负责课程实验内容的验证与复核,并参与指导教材配图的视觉修订。 | 957278980@qq.com |
| 陈俊杰 | 代码与文档 | 参与在线游戏案例代码、实验文档和自动测试用例的建设。 | 843515223@qq.com |
| 王煌 | 代码与测试 | 参与游戏案例实现、实验材料与测试用例的完善。 | 1292659693@qq.com |
| 刘筱芊 | 视频制作 | 参与课程视频录制、剪辑与后期整理,使视频内容与教学进度对应。 | 2498646125@qq.com |
| 赵思程 | 教学支持 | 参与课程实验、日常答疑与教学组织支持。 | 1146184921@qq.com |
为了帮助学生深入理解云计算系统中的网络通信、并发控制、分布式协同和云原生部署,我们设计了四组逐步递进的实验。学生在完成实验的过程中,会逐步构建一个从双人对战扩展到 Kubernetes 部署的在线游戏系统。
对于每组实验,我们都提供可运行的程序骨架、实验说明和自动测试。学生在预留的 TODO 位置补充核心逻辑,通过测试、运行日志和故障模拟观察系统行为,再将运行结果与教材中的机制对应起来。
四组实验的目标和主要内容如下。
| 实验 | 实验目标 | 主要内容 |
|---|---|---|
| Lab 1 | 建立客户端与服务器之间的双人在线对战 | TCP、JSON 消息、客户端/服务器架构、服务器权威裁决 |
| Lab 2 | 扩展为支持多人实时交互的游戏世界 | Goroutine、共享状态、锁、数据竞争与性能分析 |
| Lab 3 | 拆分为多地图、多节点的分布式系统 | 数据分层、一致性哈希、Gossip、2PC、Raft 与故障恢复 |
| Lab 4 | 部署到 Kubernetes 并实现弹性运行 | 容器、Deployment、Service、RBAC、HPA、弹性与资源成本 |
| 项目 | 内容 |
|---|---|
| 课程主页 | 课程介绍、团队、实验、视频与资料入口 |
| 教材 Markdown 在线阅读 | 在线阅读 Markdown 版教材 |
| 教材 PDF 在线阅读 | 在线阅读 PDF 版教材 |
| 课程示例代码与实验 | 教材示例、课程实验、运行说明与自动测试 |
| 课程课件 | 课堂讲授课件 |
| 教学视频 | 课程讲授与助教带做视频 |
发现教材、课件、代码或实验中的问题,可以在对应仓库提交 Issue。文档修订、代码改进和测试补充可以通过 Pull Request 提交。