前些天在研究分布式锁的方案,突发奇想,在云原生时代,像 php、c、go、java 这种原来用特定编程语言开发的程序,已经通过打包、编排,变成了云原生操作系统里的一个工作进程。而像是网络这种原本的操作系统基础设施,也在云原生操作系统里面有了实现(从微服务发展到 service mesh)。
那么,锁是不是也可以看作是基础设施,提供给云原生操作系统的工作进程使用呢?
云原生开发者在编写工作进程逻辑的时候,无需考虑引入哪个分布式锁的包/库,就像是调用系统调用一样,将资源锁住,读写资源,然后再调用系统调用进行解锁。而云原生操作系统负责调度容器进行资源的访问,防止容器争抢资源。这样做的好处是,可以屏蔽掉不同语言的分布式锁之间的实现差异,让业务逻辑开发者专注业务逻辑的优化、思考业务应该使用哪种锁,以及锁的粒度等业务相关的工作。
其实不止是锁,也许还可以思考一下,原生操作系统的基础设施有哪些可以对应到云原生操作系统上的。
且不论叫它 lock mesh 是否合理吧:)
有这个想法后,我在 github、google 和 CNCF landscape 上搜索了一番,没有找到相关的项目或者资料。后续我会再进行一些搜索,确定我是不是想别人已经想到的东西。
如果你也觉得这个想法可行,不妨跟我联系哦:)
有了想法,然后呢?
我列了一些 todo 项: