架构师第五周
这次通过用代码实现一致性hash算法, 让我直接领悟到一致性hash的含义, 之前只是懵懵懂懂的理解, 直到写出来才真的学到了.
收获最深的还是老师讲解的负载均衡这块, 以前对这方面接触不深, 仅仅学过Nginx的使用, 当时还觉得负载均衡就是Nginx, 其他的都不好使, 现在来看是很天真无知了.
负载均衡方面, 需要在掌握7层通讯协议下才能理解在各个层做负载均衡的区别, 以及优势点.
就拿Nginx来说, 这是典型的在HTTP应用层做的负载均衡, 用的也是反向代理负载均衡的方式.优势是使用上方面, 门槛低, 但劣势也很明显, 就是服务器的性能上限, 阻碍了集群负载的上限.
因为Nginx本身相当于HTTP服务器, 需要代理HTTP的收发, 针对HTTP这种数据量很大的协议是有很大性能开销, 服务器即决定上限, 能代理十几个服务器的体量.
再往上是IP层(传输层)做负载均衡, 服务器只需对TCP包做IP转换即可, 这时的上限变为了带宽, 负载均衡服务器需要响应回传的TCP包, 再传到用户, 所以带宽成了限制.
解决带宽限制的办法是让服务器集群自身去响应, IP负载均衡需要改变响应IP地址, 所以必须自身响应, 这时就需要再往上走, 在数据链路层做负载均衡, 集群的IP都与负载均衡服务器一致, 是虚拟IP, 负载均衡服务器会为请求分配不同MAC的网卡, 集群集体响应并判断是否与本机MAC一致, 当响应请求时直接从集群服务器去响应用户即可, 因为响应IP没有变动过.
评论