richardissuperman / WHUT_CS_CLASS_09

计科09级分享知识的地方
10 stars 4 forks source link

美团云架构相关问题 #9

Closed richardissuperman closed 7 years ago

richardissuperman commented 7 years ago

感谢仔仔分享,对这方面虽然陌生但是非常感兴趣!美团在这方面肯定也是有优势, 问一些不专业的问题,希望可以尽量耐心解答,哈哈(同时仔仔也不能泄露太多美团的非开源技术。。。)

1.你在文章里面提到的每个云主机,一般来说在实现的方面,是物理机还是说是像Docker这样的虚拟机实现呢?

  1. 文章提到写节点在业务量上涨时需要拓展,就需要分布式锁,以前学过分布式数据库的课程,在云计算的范畴里面对写节点加锁其实是不是就是对数据库加锁呢?如果是的话,加锁的代码/实现 是直接在数据库层上面完成(比如 Oracle数据库自己有自己的同步机制系统) 还是需要在Tornado的框架里面实现。

谢谢!

HusterWan commented 7 years ago

庆哥,提问速度真快。。。其实这个分享还没写完,这周还会继续补充。对于你提的两个问题的回答: 1、文中所有提的云主机都是虚拟机,宿主机指的是实实在在的物理机。而这里的虚拟机是一个抽象的概念,既可以是KVM的虚拟机,也可以是docker虚拟机,还可以是物理机(baremental),即美团云现在是一套框架管理了3种类型的“虚拟机”,它们共用一套API,只是接口具体实现不同而已。 2、分布式锁既不是基于tornado架构,也不是使用数据库的加锁机制。其实,简单分析下就知道这两种层次的锁机制是无法实现分布式的:本地锁只能对一个进程下的多个线程有效,对同一台宿主机上的其它进程,或者不同宿主机的进程肯定是不生效的,原因很简单,你在你的进程空间定义的锁,对其它进程是不可见的。所以分布式锁就需要是一个独立的服务,所有控制节点在收到API请求之后就会向分布式锁集群服务请求锁,只有拿到了锁才能进行后面的操作。

richardissuperman commented 7 years ago

ok,我懂了! 所以这个所谓的"分布式锁"也可以是单独一个云主机host的一个服务,每次有API请求是写操作的话就会先向这个云主机的服务拿“锁”,拿不到的就得等待。 是这样吧? 😃