1. 想法

前些天在研究分布式锁的方案,突发奇想,在云原生时代,像 php、c、go、java 这种原来用特定编程语言开发的程序,已经通过打包、编排,变成了云原生操作系统里的一个工作进程。而像是网络这种原本的操作系统基础设施,也在云原生操作系统里面有了实现(从微服务发展到 service mesh)。

那么,锁是不是也可以看作是基础设施,提供给云原生操作系统的工作进程使用呢?

云原生开发者在编写工作进程逻辑的时候,无需考虑引入哪个分布式锁的包/库,就像是调用系统调用一样,将资源锁住,读写资源,然后再调用系统调用进行解锁。而云原生操作系统负责调度容器进行资源的访问,防止容器争抢资源。这样做的好处是,可以屏蔽掉不同语言的分布式锁之间的实现差异,让业务逻辑开发者专注业务逻辑的优化、思考业务应该使用哪种锁,以及锁的粒度等业务相关的工作。

其实不止是锁,也许还可以思考一下,原生操作系统的基础设施有哪些可以对应到云原生操作系统上的。

且不论叫它 lock mesh 是否合理吧:)

有这个想法后,我在 github、google 和 CNCF landscape 上搜索了一番,没有找到相关的项目或者资料。后续我会再进行一些搜索,确定我是不是想别人已经想到的东西。

如果你也觉得这个想法可行,不妨跟我联系哦:)

2. 怎么办

有了想法,然后呢?

我列了一些 todo 项:

  • 再搜索一下是否已经存在相关的资料、项目
  • 思考这个方案是否有必要,是否可行
    • 有没有必要做这一层抽象,编写容器逻辑的开发者,其实是不是按照原来的方式,调用库就好了
    • 如果要做,怎么基于云原生平台(像是 kubernetes)去实现这种基础设施
  • 如果可行,根据具体方案,给出架构图
  • 立项,做项目规划
  • 写demo
  • 开源出去,让更多的开发者接触到项目,并参与代码贡献
  • 建立社区,完善文档(微信群、钉钉群(国内)、slack(国外))