mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
finish gl
This commit is contained in:
parent
a882c6d119
commit
cb387d0c74
@ -15,14 +15,33 @@
|
||||
|
||||
假如服务部署在 15 个实例(可能是物理机,也可能是容器)上,我们把这 7 个实例分为三组,按照先后顺序,分别有 1-2-4-8 台机器,保证每次扩展时大概都是二倍的关系。
|
||||
|
||||
```
|
||||
┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐
|
||||
│ │ │ │ │ │ │┌─────┐│
|
||||
│ │ │ │ │ │ │└─────┘│
|
||||
│ │ │ │ │ │ │┌─────┐│
|
||||
│ │ │ │ │ │ │└─────┘│
|
||||
│ │ │ │ │ │ │┌─────┐│
|
||||
│ │ │ │ │ │ │└─────┘│
|
||||
│ │ │ │ │ │ │┌─────┐│
|
||||
│ │ │ │ │ │ │└─────┘│
|
||||
│ │ │ │ │┌─────┐│ │┌─────┐│
|
||||
│ │ │ │ │└─────┘│ │└─────┘│
|
||||
│ │ │ │ │┌─────┐│ │┌─────┐│
|
||||
│ │ │ │ │└─────┘│ │└─────┘│
|
||||
│ │ │┌─────┐│ │┌─────┐│ │┌─────┐│
|
||||
│ │ │└─────┘│ │└─────┘│ │└─────┘│
|
||||
│┌─────┐│ │┌─────┐│ │┌─────┐│ │┌─────┐│
|
||||
│└─────┘│ │└─────┘│ │└─────┘│ │└─────┘│
|
||||
└───────┘ └───────┘ └───────┘ └───────┘
|
||||
|
||||
TODO 这里有个图
|
||||
|
||||
group1 group2 group3 group4
|
||||
|
||||
```
|
||||
|
||||
为什么要用 2 倍?这样能够保证我们不管有多少台机器,都不会把组划分得太多。例如 1024 台机器,实际上也就只需要 1-2-4-8-16-32-64-128-256-512 部署十次就可以全部部署完毕。
|
||||
|
||||
|
||||
TODO 这里也有图
|
||||
|
||||
这样我们上线最开始影响到的用户在整体用户中占的比例也不大,比如 1000 台机器的服务,我们上线后如果出现问题,也只影响 1/1000 的用户。如果 10 组完全平均分,那一上线立刻就会影响 1/10 的用户,1/10 的业务出问题,那可能对于公司来说就已经是一场不可挽回的事故了。
|
||||
|
||||
在上线时,最有效的观察手法是查看程序的错误日志,如果较明显的逻辑错误,一般错误日志的滚动速度都会有肉眼可见的增加。这些错误也可以通过 metrics 一类的系统上报给公司内的监控系统,所以在上线过程中,也可以通过观察监控曲线,来判断是否有异常发生。
|
||||
|
Loading…
x
Reference in New Issue
Block a user