dao技术方案选择

dao技术方案选择

运行及部署环境

dao平台操作系统内核在freebsd及linux两者中选。从人力资源和未来发展空间看,Linux是最佳选择。不过不排除特定的应用也会在freebsd上跑,比如freenas。
dao定位是大规模分布式云计算平台,简单一致的运维管理和规模化部署能力是首要选择。这就决定了dao部署必然采用虚拟化技术。考虑到运行效率和dao所设计的体系结构,container技术最佳选择。freebsd的jail可以排除,openvz太旧,则只有LXC和docker两个选择。跟操作系统整合的最佳候选方案是CoreOS,采用的是docker技术。但是CoreOS操作系统太新,很多云主机提供商还不支持。因此云主机+docker是第二选择。

编程模式

因为有了编程模式的革新才有了dao项目,当然的选择是面向状态编程(state-oriented programming model)。不过sop模式太创新,还是先从理论完备、逼格高的actor model开始,然后平滑演进到sop。最终dao兼容这两种模式,actor与fsm和state等效。

编程语言

考虑到actor model的支持,内核编程语言有Erlang和Go两个选择。考虑到成熟度和平台化能力,Erlang是第一选择。不排除后期部分采用Go语言搭建特定功能的平台(比如需要支持go语言业务开发时)。
对计算性能要求高的模块,或者底层开发模块用C语言。不过尽量使用现成的编程库,尽最大可能压缩C语言的代码量。是的,C++语言因为面向对象的恶趣味而被排除。
业务逻辑及Web应用开发,没得选,就Javascript。
后端Web页面可选PHP和Django。从美学角度选Django。另一方面讲,dao平台就是取代PHP的。
Javascript语言引擎在Mozilla的SpiderMonkey和Google的V8两个里面选。SpiderMonkey有成熟的Erlang封装模块,可以直接拿来用。而V8则有一个大杀器:Node.js。直接使用SpiderMonkey或者V8采用开启并发引擎进程的模式来应对大量js调用是不可行的。而采用Node.js的异步事件驱动编程模式可以大大减少引擎并发数,实现js大并发的软实时调用。再加上node.js社区活跃、资源丰富,使其成为dao的必选。

数据层

考虑dao重度使用graph结构,也可以说dao是面向graph的架构。因此直接选择graph db作为数据层是非常必要的。比较糟糕的是,目前没有好的graph db可选择。现阶段考虑在digraph模块上进行优化开发,针对快速缓存层和持久化层分别设计。后期考虑使用neo4j作为慢速持久化层。riak堪用的话,也可以使用riak作为优化后的digraph分布式存储后端。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Actor系统的实体 在Actor系统中,actor之间具有树形的监管结构,并且actor可以跨多个网络节点进行透...
    JasonDing阅读 3,545评论 2 6
  • 背景 我们所有产品在初期的时候都使用的Java语言作为后端开发语言,整个架构在演进了几次之后形成了基于微服务的一个...
    墨弈阅读 2,658评论 1 49
  • dao第一阶段开发概要 Erlang/OTP平台版本 如果dao平台最近发布的话,按照版本选取原则,应该选择前一个...
    Gary阅读 399评论 0 1
  • 本文首发于 GitChat,现免费放出~感谢大家的支持。 我们都知道,大学几乎是没有 Web 前端课的。以我所在的...
    hylerrix阅读 5,234评论 6 60
  • 三千繁华,弹指刹那 百年过后,不过一捧黄沙 这山长水远的人生 终究是要自己走下去……
    一只胖子的小豆芽阅读 802评论 9 14

友情链接更多精彩内容