这一章我或许没有办法写出一些实例代码,由于经验有限。我会结合以往运维的一些系统举出部分例子共读者参考,详情力荐阅读原文。linux
异常时什么,何时发生,提供哪些好处?咱们须要明确如下信息:git
异常一般被咱们分为两类:github
正如上一章错误处理中所说咱们须要将错误视为一等公民存在,我的认为 Golang 错误处理机制的特立独行,让我从新审视系统中可能存在的错误。数据库
超时:对于建立一个已于理解的系统是相当重要的,例如:TCP 连接中,咱们能够利用超时避免连接占用太久;etcd 中利用超时,规避全局时钟一致性问题缓存
咱们为何但愿并发程序支持超时呢?这里有几个缘由:安全
并发进程可能被取消的缘由有不少:服务器
在分布式系统中很是常见的,心跳是并发进程向外界发出信号的一种方式。书中讨论了两种心跳:网络
当一个请求到达咱们的服务,咱们可使用 Nginx ,HAproxy 等分发到多个节点上,但这会消耗过多的计算资源,空间资源(服务器机柜),维护成本。若是咱们都在进程内,或进程间通讯,咱们仅仅多消耗了一部份内存资源。最为典型的案例就是利用 Golang 重写了负载层的中间件,例如:并发
笔者最近刚刚到一家网络安全公司就任运维工程师,了解到不少关于网络攻击的信息,最为明显的就是 DDoS,CC攻击。DDoS 的攻击多是利用 udp服务反射, 或残缺报文形成流量洪峰,可能比较已于识别。可是 CC 攻击,就是正常的访问,大量的正常访问,致使网站不可用。对于这样的场景咱们不仅仅须要在负载层添加速率限制,在后台内部调用层也须要添加。运维
特别是在容器化的环境中,弹性扩缩虽然美好。可是有一句至理名言,同样东西有多光鲜,背后就有多阴暗。我曾经经历过,服务疯狂扩容致使运行在小机上的 Oracle 数据库不堪重负的场景。在访问 Oracke 也须要速率限制。
做者最后又再次强调了,治愈异常的 goroutine ,看来并发安全一直是一个很是值得关注的问题。
本次连载到此就要画上句号了。至于原书的最后一章 goroutine 和 Go 语言进行时,我相信中文集里面没有人比刘丹冰讲的更加透彻,但愿各位给与做者三连支持。附上 B 站连接 GPM 模型
2021 让咱们共同启航,在十四五开局之年,金牛聚福,身体健康,驱疫避害。