• UID12
  • 登录2016-06-14
  • 粉丝110
  • 关注50
  • 发帖1415
  • 主页
  • 金币8528枚
社区居民
最爱沙发
忠实会员
喜欢达人
原创写手
极分享 发布于2015-10-17 22:09
0/1032

如何实现Docker与分布式数据库结合

楼层直达
随着如今开源软件以及开源项目的热潮,Docker作为如今在技术圈非常火爆的一款开源软件产品,除了开源项目的贡献非常活跃,目前应用也十分的广泛,包括Redhat在内的多个操作系统都已经能支持Docker,而更是无数的软件已经在使用Docker镜像进行安装部署。

来自重庆慧谷科技的蒋勇先生,作为SequoiaDB社区的“骨灰级成员”,于最近分享了主题为“Dockerizing SequoiaDB”的技术专题,分享主要介绍了他们公司如何使用Docker制作国内领先的NoSQL数据库SequoiaDB的镜像的过程,以及有关Docker和Core OS一些介绍和使用心得,那么笔者就将对他的演讲进行归纳总结,顺便谈一谈Docker与分布式数据库结合的必要性。

技术新潮流 - Docker


随着如今开源软件以及开源项目的热潮,Docker作为如今在技术圈非常火爆的一款开源软件产品,除了开源项目的贡献非常活跃,目前应用也十分的广泛,包括Redhat在内的多个操作系统都已经能支持Docker,而更是无数的软件已经在使用Docker镜像进行安装部署。


么Docker是什么呢?


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

这是对Docker的一个官方解释,简单说,有两个部分:

1) 对于应用程序,曾经我们需要为了不同的系统专门的调整应用程序的代码或者是构造相应的依赖包驱动等等,大大增加了开发量以及开发的难度。现在,Docker向不同的应用程序,提供了一个统一的环境。

2) 对于服务器,为了支持不同版本的应用,曾经可能需要在物理机上安装多个版本或者不同的GuestOS或者说虚拟机。这就大大占用了物理机的性能,影响了最终程序的表现,提高了资源的成本。




使用Docker容器的方式,对于应用程序,不需要开发多种多样的版本或者是针对OS每个版本的升级再进行代码方面的调整,实现了广泛的兼容性和开发的最简性。同时对于物理机,部署的环境“瘦身”也节约了更多的资源,将更多的资源用于提高应用程序本身的性能。


CoreOS是Docker的不二之选?


之前大概介绍了Docker,那么服务器上面还是需要最基本的应操作系统才能支撑Docker容器,那么这么多中的Linux内核OS究竟哪一个好呢?笔者和很多Docker技术专家的的观点就是Core OS。
CoreOS是一个基于Linux 内核的轻量级操作系统,为了计算机集群的基础设施建设而生,专注于自动化,轻松部署,安全,可靠,规模化。作为一个操作系统,CoreOS 提供了在应用容器内部署应用所需要的基础功能环境以及一系列用于服务发现和配置共享的内建工具。

简单说,CoreOS去掉了大量的非必要的功能,只保留了Server端需要的最基本功能,真正意义做到了“轻量化”。
此外,CoreOS还做到了:整体系统升级/回滚方案;容器化所有非系统应用、无包管理器;集群化调度器Fleet;分布式高可靠的KV存储系统ETCD


这些特性都让它成为Docker生态的首选操作系统。不过最新的消息是,CoreOS不满足于做Docker生态下的一环,它正在推出自己的容器AppC计划,想对Docker来一招“釜底抽薪”。当然,现阶段并没有出现完全的两者 “分手”,所以对于普通使用者,并没有太大影响。

Docker+分布式数据库

数据库是每一个软件项目必须的一个部分,作为这样的一类底层基础软件,兼容性、通用性、易用度都是需要考虑的重点。非常遗憾的是,现在的操作系统以及数据库都没有完全的实现完全的通用。特别对于NoSQL数据库这样的分布式系统,需要部署在多台物理机时,对于通用性要求就更高了。


目前,像SequoiaDB已经实现了自动化的安装,大大提升了部署的效率,但是考虑到部署之后的配置以及不同环境下的调试问题,仍然可能会耗费不小的人力物力。所以基于刚刚提到的Docker的优点,作为一个通用的基础软件,NoSQL数据库的Docker化就成了必须。











一个简单的例子,你可以用docker把数据库的数据与数据库程序本身分离开:用一个container A作为数据存储,然后另一个container B运行数据库。当你想升级数据库时,用新的container C替换掉container B即可。


Docker+分布式数据库的结合,带来诸多的好处:


1) 部署简单,使用镜像部署非常简单,特别是对集群环境,使用Docker镜像的部署还可以再数据库上提前集成Hadoop、Spark等架构,真正实现“一步到位”。


2) 方便应用的更新,应用的更新只需要考虑制作一个新的镜像就可以与容器适配,无需重新再调整与底层的配置。数据和程序的分离,这样升级替换等等都不会影响到数据。


3) 操作简单方便,除了底层免除了复杂的与环境进行配置的工作,操作也更加方便,配置好的Docker镜像在部署时候只需要一条指令就可以了。


4) 开发、应用环境一致,Docker让数据库能做到 开发---测试---实施应用 三个阶段的环境是完全一致的。降低开发到应用过程中的工作量,开发出来就能保证实际应用环境上能同样的运行。


5) 系统稳定,因为Docker的隔离作用,将应用与OS独立开,这样能更好保证整个系统的稳定性。


6) 节省系统资源,系统只需要运行一个统一的环境就可以,不需要占用太多性能去支持运行环境本身,能将更多的系统资源投入到应用当中。


有了这些特性, Docker+数据库,将成为一个数据库发展的新方向,Docker这样的通用性和简单操作解决方案,大大提高了数据库使用的效率,帮助使用者节约了大量成本。
Docker是如今技术圈的新潮流,开发人员是最乐见于Docker的这种应用部署模式,因为应用的生命周期起始于开发人员的开发系统,经过开发,测试,压力测试,等过程,最终应用发布到生产系统,并可能在不同的生产系统中迁移。应用开发人员对此都会有切身的体会,任何微小的运行环境的错误都会导致应用出现问题,尤其在讲究快速敏捷的今天,应用模块,新的代码,新的配置,被快速的加入应用的环境中,可能还没等写入到文档,新特性就已经被推送到生产上了。作为一个新的技术,笔者也希望更多的产品能加强与Docker的结合,帮助产品更好的使用。

博文出处:http://segmentfault.com/a/1190000002930030

0人打赏
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 62705/348   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 35025/189   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 32937/142   省时省力的Android组件群来了,非常棒的原型参考

  • 31056/236   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 29067/0   Python爬虫:常用浏览器的useragent

  • 26769/2   超全!整理常用的iOS第三方资源

  • 25362/70   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 23919/138   2016抢红包软件及源码

  • 20367/29   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 20217/25   Android工程师面试题大全

  • 19724/27   2016程序员跳槽全攻略

  • 19573/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 18901/20   码魂:程序员的牛B漫画

  • 17966/151   Android版类似UC浏览器:非常赞,产品级的源码

  • 17131/3   吐槽那些程序员的搞笑牛逼注释

  • 16614/10   2016年最全的Android面试考题+答案 精编版

  • 16045/1   iOS 动画总结

  • 15807/41   一个绚丽的loading动效分析与实现!

  • 15477/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 15408/84   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 15009/44   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 14954/10   女程序员的梦,众网友的神回复

  • 14756/23   个人收集的Android 各类功能源代码

  • 14717/11   年会上现场review代码是怎么样的体验!

  • 14488/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 13845/23   珍藏多年的素材,灵感搜寻网站

  • 13733/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 13433/76   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 13409/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 13066/15   基于Android支付宝支付设计和开发方案

  • 12994/20   Android福利第三波【Android电子书】

  • 12985/94   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 12808/18   65条最常用正则表达式,你要的都在这里了

  • 12593/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 12575/72   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 12335/0   iOS中文版资源库,非常全

  • 12050/7   用程序员的姿势抢过年的火车票

  • 12009/7   一张图搞定iOS学习路线,非常全面

  • 12001/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 11490/10   成为Java顶尖程序员 ,看这11本书就够了

  • 11242/18   一张图搞定Android学习路线,非常全面

  • 11183/10   微信支付终于成功了(安卓,iOS),在此分享

  • 11059/44   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 10924/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 10807/0   GitHub iOS 库和框架Top100 

  • 10759/29   【持续更新中】Android福利贴(一):资料源码

  • 10258/4   46 个非常有用的 PHP 代码片段

  • 10202/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 10033/3   即时通信第三方库

  • 9779/8   流媒体视频直播方案

  • 9740/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 9651/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 9525/18   八个最优秀的Android Studio插件

  • 9424/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 9339/10   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 8890/6   开箱即用!Android四款系统架构工具

  • 8727/3   一张图看清Linux 内核运行原理

  • 8688/10   十大技巧快速提升Android应用开发性能

  • 8652/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 8352/1   Android性能优化视频,文档以及工具

  • 返回顶部