1. 想法 前些天在研究分布式锁的方案,突发奇想,在云原生时代,像 php、c、go、java 这种原来用特定编程语言开发的程序,已经通过打包、编排,变成了云原生操作系统里的一个工作进程。而像是网络这种原本的操作系统基础设施,也在云原生操作系统里面有了实现(从微服务发展到 service mesh)。 那么,锁是不是也可以看作是基础设施,提供给云原生操作系统的工作进程使用呢? 云原生开发者在编写工作进程逻辑的时候,无需考虑引入哪个分布式锁的包/库,就像是调用系统调用一样,将资源锁住,读写资源,然后再调用系统调用进行解锁。而云原生操作系统负责调度容器进行资源的访问,防止容器争抢资源。这样做的好处是,可以屏蔽掉不同语言的分布式锁之间的实现差异,让业务逻辑开发者专注业务逻辑的优化、思考业务应该使用哪种锁,以及锁的粒度等业务相关的工作。 其实不止是锁,也许还可以思考一下,原生操作系统的基础设施有哪些可以对应到云原生操作系统上的。 且不论叫它 lock mesh 是否合理吧:) 有这个想法后,我在 github、google 和 CNCF landscape 上搜索了一番,没有找到相关的项目或者资料。后续我会再进行一些搜索,确定我是不是想别人已经想到的东西。 如果你也觉得这个想法可行,不妨跟我联系哦:) 2. 怎么办 有了想法,然后呢? 我列了一些 todo 项: 再搜索一下是否已经存在相关的资料、项目 思考这个方案是否有必要,是否可行 有没有必要做这一层抽象,编写容器逻辑的开发者,其实是不是按照原来的方式,调用库就好了 如果要做,怎么基于云原生平台(像是 kubernetes)去实现这种基础设施 如果可行,根据具体方案,给出架构图 立项,做项目规划 写demo 开源出去,让更多的开发者接触到项目,并参与代码贡献 建立社区,完善文档(微信群、钉钉群(国内)、slack(国外))