Skip to content
This repository has been archived by the owner on Jun 23, 2022. It is now read-only.

apps/simple_kv: some refactor #195

Merged
merged 1 commit into from
Nov 19, 2018
Merged

apps/simple_kv: some refactor #195

merged 1 commit into from
Nov 19, 2018

Conversation

shengofsun
Copy link
Contributor

  1. move it to storage_engine dir
  2. remove some useless scripts
  3. do some renaming

@neverchanje
Copy link
Contributor

storage_engine 还是不要放在 replication 下面吧,目录太深,虽然确实有依赖关系

@shengofsun
Copy link
Contributor Author

storage_engine 还是不要放在 replication 下面吧,目录太深,虽然确实有依赖关系

有依赖关系还是放进去吧,感觉问题不大 :-)

@neverchanje
Copy link
Contributor

neverchanje commented Nov 19, 2018

咱商量一下吧,沟通看看你希望整成啥样的

  • src/, include/ 这个可以不变

  • src/core => 后面看你的意思是准备拆成 aio, rpc, concurrent 这三个是吧,其实这三个也是依赖关系,replication 跟这三个也是依赖关系,分模块即使相互依赖也是用并列的方式我感觉好管理点,不然都是相互依赖关系,很难整,我个人其实倾向 dist 和 replication 底下几个模块都直接放到 src 下面

  • src/dist

  • src/dist/replication

  • src/dist/nfs

  • src/dist/cli

  • src/dist/block_service

  • src/dist/failure_detector

像这里有问题是,dist 这几个模块当初为啥不都放在 replication 底下,或者 replication 底下的为啥不直接放在 dist 里?哪些代码该放 replication 哪些该放 dist 作为新人可能会觉得很困惑的,我个人倾向是这样


  • src/utils: core 里的 utilities

  • src/concurrent 或者 src/task

  • src/aio

  • src/rpc

  • src/nfs

  • src/block_service

  • src/failure_detector

  • src/cli

  • src/rsever => replica server,照道理 pacifica 和 log 应该拆出来的,可是现在做不到就算了

    • src/rserver/store => 这里确实是一个强父子关系,不这么放反而让人有疑惑
    • src/rserver/store/simple_kv
    • src/rserver/store/rocksdb
  • src/mserver => meta server

  • src/zookeeper => zk 相关代码也可以放在 mserver 下面,讨论一下

  • src/duplication => 作为功能点,可以单独放一个目录下,meta 和 replica 的代码都可以放

  • src/security => 同上

  • src/backup => 后面有时间可以考虑把 backup 的代码整一下

  • src/client 这里放我们的 ddl client,后面两个项目整合可以一起放 pegasus client

  • src/server => 放一些类似像 fs_manager 之类的

  • src/tools => 放一些类似像 mutation_log_tools 之类的

这个模块划分会比较像 kudu,不过不管怎么说,
整体的模块管理我希望还是能讨论一下为好,方案讨论出来后面的重构按这就一步一步来 🤓

@shengofsun
Copy link
Contributor Author

  1. dist的原则其实是这样的:只要有client-server的模式,就放dist下面。replication,单独指的是一致性协议这一堆。

  2. 完全拍扁其实也不太好,但我觉得现在层级的确有点深。我觉得是分成两级最合适:core这一层就是一个server框架,什么rpc,task,aio全在这里;service就是基于core构建的一些服务,nfs、cli、fd,像replication什么的拍平放这一级我觉得是ok的。只是阴差阳错,service这一层,名字被叫为了dist。

  3. 目录重整一次改太多了不太好。因为还有没merge的feature,比如热备、split。

  4. 这次我先稍微整了下simple_kv, 原因还是在于"apps"这个名字太诡异了、以及里面各种带"2"的模块名。另一个原因是,后面想整下uri-resolver,这个和simple_kv有关联。而这个整理也是尽量能和现在的结构保持一致:它是replication里带的一个功能,所以就放replication里了。

  5. include和src分开,我其实也觉得不太好。只不过改动太大,就这样吧……

@neverchanje
Copy link
Contributor

neverchanje commented Nov 19, 2018

不管目录重整多不多,可以先合议一个最终目标出来,后面一步一步改。你可能时间有限没法改,我可以在你 branch 上改。本来确实是不想在这个 commit 里讨论的,但是你毕竟加了 storage engine 这个目录,我的本意还是让你改的目录结构大家提前有一个共识

我按照你意思再改一版你看看:#141

如果没问题的话我们就简化 storage_engine 叫 store,暂放在 replication 下面,后面等功能定了我把目录整一下。

@neverchanje
Copy link
Contributor

这个现在也能过,可以后面再改

@qinzuoyan qinzuoyan merged commit faa8bf0 into XiaoMi:master Nov 19, 2018
@neverchanje neverchanje mentioned this pull request Dec 7, 2018
28 tasks
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants