单机版Mesos + Marathon + Deimos + Docker

最近关于Docker的Blog很多都提到了Mesos,确实是在复杂的应用环境下,如何管理集群是一个非常现实的问题。

本文就是参考各种资料,利用Vagrant+VirtualBox构建了一个单机版的Mesos环境。

1. 什么是Mesos?

Apache Mesos是一个分布式系统的集群管理软件,它能为我们需要执行的任务在复杂系统中进行资源分配等工作。

Mesos主要由4个模块组成。

  • 进行系统总体管理的Mesos master
  • 为集群提供资源的Mesos slave
  • 进行资源分配、调度(scheduling)的Framework
  • 在Mesos slave上执行具体命令的Executor

关于Mesos的架构,可以参考这里的官方说明

2. 什么是Marathon?

Marathon是Mesos的一个Framework,用来执行需要长时间运行的任务。如果把Mesos比喻成数据中心的Kernel的话,那么Marathon就是它的init活着upstart守护进程。

它还具备HA,Health Checks,服务发现等功能。

3. 什么是Deimos?

Deimos是一个Mesos的Docker接口(Plugin),Mesos的Executor,用来集成Docker容器,它是Mesos-Docker的替代产品。

4. 开始试验

4.1. 安装

如果你也用Vagrant的话,那么直接可以使用Provisioning脚本就可以了,我已经放到了GitHub上:https://github.com/liubin0329/mesos-marathon-deimos-vagrant

下载下来之后直接vagrant up就可以。

$ git clone git@github.com:liubin0329/mesos-marathon-deimos-vagrant.git
$ cd mesos-marathon-deimos-vagrant
$ vagrant up

如果是手工自己安装,可以参考install.sh脚本。

4.2. 测试

启动服务之后,就可以使用例子中的JOB测试了。

为了启动速度,我们预先pull镜像下来。

$ docker pull ubuntu

然后就可以提交Job了。

$ cd /vagrant
$ curl -X POST -H "Content-Type: application/json" localhost:8080/v2/apps -d@job.json

这个job.json很简单,其意义也很容易理解。主要是cmd这个参数,这是一个简单的理由nc命令实现的Web服务器,放8090端口的时候只是打印出Hello World而已。


{
  "container": {
    "image": "docker:///ubuntu:14 04",
    "options": ["-p", "8090:8090"]
  },
  "id": "ubuntu001",
  "instances": "1",
  "cpus": ".1",
  "mem": "256",
  "uris": [ ],
  "cmd": "while true; do echo 'HTTP/1 0 200 Ok'; echo; echo 'Hello World' | nc -l 8090; done"
}

值得注意的是如果你的机器硬件不是特别好,需要注意提交job的时候设施合适的CPU和内存使用量,否则很可能导致因为申请不到资源而不能启动任务。

5. 结束语

总的来说Mesos还是比较简单、容易上手,值得关注。

其实如果作为公司内部平台来说的话,如何在Flynn这样的PaaS或者Mesos之间选择应该也会令人头疼,可能对开发人员来说基于Git Flow的部署风格的PaaS更好一些。

不过Mesos的后台是Apache基金会和Twitter,甚至在Twitter来看,Mesos简直就是DataCenter的OS。

Posted in Docker, Tech

Google FlatBuffers 跨平台序列化工具

作者:Bin Liu

1. 什么是FlatBuffers

Google发布了FlatBuffers,一个跨平台,提供了C++/Java接口,注重性能和资源使用的序列化(Serialization)类库。
尤其是FlatBuffers更适用移动设备,他们要求更高的新能,更低的资源需求(内存、带宽、CPU等)。

1.1. 它的特点如下:

  • 不需要打包/解包。它的结构化数据都以二进制形式保存,不需要数据解析过程,数据也可以方便传递。
  • 省内存、性能好(见附录1
  • 强类型系统,在编译阶段就能预防一些bug的产生
  • 跨平台(C++11/Java)
  • 等等。

1.2. 和Protocol Buffers的不同之处

FlatBuffers和Protocol Buffers很像,他们的最大不同点是在使用具体的数据之前,FlatBuffers不需要解析/解包的过程。

1.3. 和JSON的不同之处

JSON作为数据交换格式,被广泛用户各种动态语言之间(当然也包括静态语言)。它的有点事易于理解(可读性好),同时它的最大的缺点那就是解析时的性能问题了。而且因为它的动态类型特点,你的代码可能还需要多写好多类型、数据检查逻辑。

2. FlatBuffers的使用方法

简单来说使用FlatBuffers需要遵循以下步骤。

  1. 编写一个用来定义数据结构的schema(IDL,接口定义)文件
  2. 使用FlatBuffer编译器flatc生成数据结构源代码(C++头文件或者Java类)
  3. 使用FlatBufferBuilder类创建flat的二进制buffer
  4. 保存或者发送buffer
  5. 接收并buffer并读取数据内容

这里是一个简单的例子。

// monster.fbs

namespace MyGame;

enum Color : byte { Red = 1, Green, Blue }

union Any { Monster, Weapon, Pickup }

struct Vec3 {
  x:float;
  y:float;
  z:float;
}

table Monster {
  pos:Vec3;
  mana:short = 150;
  hp:short = 100;
  name:string;
  friendly:bool = false (deprecated, priority: 1);
  inventory:[ubyte];
  color:Color = Blue;
  test:Any;
}

root_type Monster;

将上述代码保存为monster.fbs之后,即可使用flatc来“编译了”。

生成的Java文件有如下代码(Java的使用方法有点怪怪的,估计是作者的C++背景太强了?)。


// 从byte数组读取Monster结构的数据
ByteBuffer bb = ByteBuffer.wrap(data);
Monster monster = Monster.getRootAsMonster(bb);

short hp = monster.hp();
Vec3 pos = monster.pos();

// 这样创建Monster结构的数据
FlatBufferBuilder fbb = new FlatBufferBuilder();

// 创建字符串数据
int str = fbb.createString("MyMonster");

// 创建table结构的数据
Monster.startMonster(fbb);
Monster.addPos(fbb, Vec3.createVec3(fbb, 1.0f, 2.0f, 3.0f, 3.0, (byte)4, (short)5, (byte)6));
Monster.addHp(fbb, (short)80);
Monster.addName(fbb, str);
Monster.addInventory(fbb, inv);
Monster.addTest_type(fbb, (byte)1);
Monster.addTest(fbb, mon2);
Monster.addTest4(fbb, test4s);
int mon = Monster.endMonster(fbb);

// 增加各Vector结构的数据
Monster.startInventoryVector(fbb, 5);
for (byte i = 4; i >=0; i--) fbb.addByte(i);
int inv = fbb.endVector();

附录:

[1] 性能数据,来源于http://google.github.io/flatbuffers/md__benchmarks.html


FlatBuffers (binary)
Protocol Buffers LITE Rapid JSON FlatBuffers (JSON)
Decode + Traverse + Dealloc (1 million times, seconds) 0.08 305 583 105
Decode / Traverse / Dealloc (breakdown) 0 / 0.08 / 0 220 / 3.6 / 81 294 / 0.9 / 287 70 / 0.08 / 35
Encode (1 million times, seconds) 3.2 185 650 169
Wire format size (normal / zlib, bytes) 344 / 220 228 / 174 1475 / 322 1029 / 298
Memory needed to store decoded wire (bytes / blocks) 0 / 0 760 / 20 65689 / 40 328 / 1
Transient memory allocated during decode (KB) 0 1 131 4
Generated source code size (KB) 4 61 0 4
Field access in handwritten traversal code accessors accessors manual error checking accessors
Library source code (KB) 15 some subset of 3800 87 43

[2] 源代码在GitHub:https://github.com/google/flatbuffers

Posted in Tech Tagged with: , , ,

Long Vacation of 奈良

花了一个月,终于将在奈良的相片整理完了,这里再做个目录吧。

Long Vacation of 奈良- 興福寺、猿沢池:http://liubin.org/2014/06/17/long-vacation-of-nara-kohfukuji-sarusawaike/

Long Vacation of 奈良- 灯花会:http://liubin.org/2014/06/17/long-vacation-of-nara-toukae/

Long Vacation of 奈良- 般若寺:http://liubin.org/2014/06/04/long-vacation-of-nara-hannyaji/

Long Vacation of 奈良- 元興寺:http://liubin.org/2014/06/04/long-vacation-of-nara-gangoji/

Long Vacation of 奈良- 薬師寺:http://liubin.org/2014/06/04/long-vacation-of-nara-yakushiji/

Long Vacation of 奈良- 奈良的街道风景:http://liubin.org/2014/06/03/long-vacation-of-nara-street/

Long Vacation of 奈良- 可爱的鹿们:http://liubin.org/2014/06/03/long-vacation-of-nara-deer/

Long Vacation of 奈良- 唐招提寺:http://liubin.org/2014/06/03/long-vacation-of-nara-toshodaiji/

Long Vacation of 奈良- 平成宫迹:http://liubin.org/2014/05/15/long-vacation-of-nara-heijyoukyu/

Long Vacation of 奈良- guest house:http://liubin.org/2014/05/13/long-vacation-of-nara-guest-house/

Long Vacation of 奈良-东大寺/奈良公园/春日大社:http://liubin.org/2014/05/13/long-vacation-of-nara-day-1/

Long Vacation of 出发去奈良:http://liubin.org/2014/05/13/long-vacation-of-go-to-nara/

Posted in 生活 Tagged with:

Long Vacation of 奈良- 興福寺、猿沢池

興福寺(http://www.kohfukuji.com/)貌似前面已经发过了,这里再和猿沢池一块介绍下。

興福寺始建于669年,为世界遗产之一。其中五重塔为50米高的木塔,为仅次于京都东寺五重塔的日本第二高木塔。此外还有三重塔,南园堂,北园堂也都是非常重要的文物。

猿沢池在興福寺旁边,一周只有不到400米,池塘四周的柳树和兴福寺的五重塔交相辉映于池面,被称为「猿沢池月」,也是南都八景(奈良中東大寺・興福寺周边选出来的八处有特色的景观)之一。

猿沢池有七大不可思议的现象

  • 不清
  • 不浊
  • 不出
  • 不入
  • 没有青蛙
  • 不长水藻
  • 魚七分水三分

意思就是既没有流入的河水,池里的水也没有流向别的河流,水量一直保持固定;池里有很多乌龟,但是却从来不会有青蛙,也不会有水草。1959年池水的颜色变为红色,这打破了七大不可思议,甚至有人因此认为“世界末日”要到了。

从猿沢池看兴福寺五重塔

奈良 興福寺 猿沢池

猿沢池旁边写生的学生

 

奈良 興福寺 猿沢池

猿沢池的七大不可思议现象

奈良 興福寺 猿沢池

池里的乌龟

奈良 興福寺 猿沢池

奈良公园的小鹿

奈良 興福寺 猿沢池

奈良 興福寺 猿沢池

奈良 興福寺 猿沢池

五重塔,天气不好,效果不好。

奈良 興福寺 猿沢池

南园堂旁边的小店。

奈良 興福寺 猿沢池

奈良 興福寺 猿沢池

北园堂

奈良 興福寺 猿沢池

Posted in 生活 Tagged with: , ,

Long Vacation of 奈良- 灯花会

奈良灯花会(http://www.toukae.jp/tokae_s/index.html)是从1999年开始的以奈良公园、东大寺、兴福寺等区域为中心,每年8月举行的为期十天的活动。在这一带会装饰好各种灯饰,山上、湖里,每天晚上都会点灯,以及各种小摊,供有人欣赏。这一片区域面积较大,尤其是在公园大片草坪以及湖上的灯笼比较好看。

由于这是近期的人造景观,也没什么可以细说的,来了奈良,既然人家有这活动,权当参与一下热闹而已。

 

如果我没记错的话,这应该是兴福寺通往三重塔的地方的向上的台阶那里。

奈良灯花会

奈良灯花会

兴福寺的五重塔

奈良灯花会

汉字“情”

奈良灯花会

小鹿也出来凑热闹。

奈良灯花会

伏见堂那里

奈良灯花会

奈良灯花会

奈良灯花会

奈良灯花会

奈良灯花会

奈良灯花会

2013年事第15届了。

奈良灯花会

falling in love

奈良灯花会

在日本,什么活动都少不了屋台,即小吃摊。

奈良灯花会

Posted in 生活 Tagged with: , ,

Long Vacation of 奈良- 般若寺

在没来奈良之前,最向往的地方就是般若寺(主页http://www.hannyaji.com/)了,那就是因为cosmos了,即格桑花、或叫秋樱、大波斯菊。他们的主页也毫不谦虚的说自己是日本最古老的波斯菊名胜了。波斯菊很美,尤其是开在秋天,有一首歌也很美,就叫《コスモス》简易听一下坂本冬美和さだまさし的现场版的,非常动人。

不过我去的是8月,花还没开,更确切的说是,话还没栽。

我去的很早,还没开门,以至于我不得不在周围转了半天。而且这里只有一个国宝级文物,算不是繁盛的旅游胜地,所以人很少,到我回去,几乎也没见人进来,很多地方都荒草长得都很野蛮,蜘蛛网也很肆意,看的出大家都很随意。

虽然很早,但是天已经很热了,工人正在栽植波斯菊。寺里只有几朵还在开着的(貌似一年两季,春秋各一季,8月大概正在间歇期)。

般若寺

般若寺

算是钟楼?

般若寺

什么莲?

般若寺

花小路

般若寺

如来佛像

般若寺

发现一朵盛开的波斯菊,可惜跑焦了。

般若寺

菩萨像和波斯菊

般若寺

般若寺

楼门,这是般若寺唯一的国宝。

般若寺

十三重石塔

般若寺

 

波斯菊盛开的时候应该是这样的

般若寺

本堂

般若寺

楼门,这也是国宝,再感叹下天朝地大物博,但是也希望你们得珍惜才行。

般若寺

本堂

般若寺

本堂

般若寺

十三重石塔(右)和般若寺経蔵(左)

般若寺

Posted in 生活 Tagged with: , , , ,

Long Vacation of 奈良- 元興寺

元興寺也很古老,创建于公元590年左右。国宝有本堂(极乐堂),禅室和五重小塔,但是五重小塔在收藏室中,高只有5.5米,里面还有很多文物,不让照相,所以这里的图片都是室外的。

我住在近铁奈良附近,走过去也不远,不过我是租了自行车过去的。

 

东门,国家重要文化财产

元興寺

国宝极乐堂

元興寺

元興寺

极乐堂

元興寺

元興寺

桔梗花,非常漂亮,我也买了些种子回来,可惜今春种下后没发芽。

元興寺

极乐堂和禅室。日本最古老的,飞鸟时代的瓦。这也是元兴寺比较有名的看点了。确实和普通的瓦不一样,不过我只能看出颜色不太一样而已,呵呵。

元興寺

开放的工作区间

元興寺

庭院小装饰品

元興寺

禅室下的花

元興寺

元興寺

娃石

元興寺

石碑和桔梗

元興寺

元興寺

 

元興寺

Posted in 生活 Tagged with: , ,

Long Vacation of 奈良- 薬師寺

薬師寺在奈良算是比较大的一个寺院了。建筑物很多,东塔西塔,金堂讲堂,玄奘三蔵院等。其中东塔是现存寺院中历史最悠久的建筑物了,能追溯到奈良时代(天平年间)的最古老的建筑物。而且在江户时代之前建造的塔中,它是仅次于東寺五重塔、興福寺五重塔、醍醐寺五重塔的第四高的塔了,非常有幸去年遍览了这四座塔,不过药师寺的东塔一直在施工,被帆布包围着,没看见(这个塔要修十年,非常佩服日本人的效率和耐性)。。。

交通的话也很方便,在西ノ京,和药师寺很近,可以顺路一块过去。而且药师寺和药师寺真的让人感受到了奈良所蕴藏的浓厚的盛唐气息,在国内很难感受到,尤其是在就经济快速发展的当今。

进门处的石碑,世界遗产

药师寺

兴乐门

药师寺

忘了,这个建筑物叫什么名字。有可能是経蔵

药师寺

大讲堂(http://www.nara-yakushiji.com/guide/garan/garan_daikodo.html)里面的展览,很多和唐三藏有关的。

 

药师寺

药师寺

药师寺

药师寺

好粗的树。

药师寺

药师寺

药师寺

金堂 http://www.nara-yakushiji.com/guide/garan/garan_kondo.html

药师寺

药师寺

药师寺

药师寺

施工中的东塔

 

药师寺

西塔,阴天加逆光,效果不好

 

药师寺

金堂 http://www.nara-yakushiji.com/guide/garan/garan_kondo.html

药师寺

药师寺

西塔 http://www.nara-yakushiji.com/guide/garan/garan_seito.html

药师寺

药师寺

药师寺

大讲堂 http://www.nara-yakushiji.com/guide/garan/garan_daikodo.html

药师寺

药师寺

下面的图应该都是药师寺北面的玄奘三蔵院 (http://www.nara-yakushiji.com/guide/garan/garan_genjyo.html),里面有日本著名画家平山郁夫花了30年时间制作的壁画《大唐西域壁画》,长39米,高2.2米,

药师寺

药师寺

药师寺

药师寺

药师寺

药师寺

Posted in 生活 Tagged with: , ,

Long Vacation of 奈良- 奈良的街道风景

这篇文章主要是在奈良街道上排的,没有特别有目的性的景点。奈良的古街道很多,比如东大寺那一块的旅游景点比较集中的地方,以及药师寺、唐招提寺一带的历史街道。

应该是在近铁奈良旁边的那个商店街附近。

 

奈良的街道

奈良的街道

奈良的街道

这样的很有情趣的餐厅很多

奈良的街道

 

古街道

奈良的街道

 

旧书屋

奈良的街道

 

街道

奈良的街道

奈良的街道

奈良的街道

奈良的街道

天色渐变,不一会就下雨了。

奈良的街道

奈良的街道

奈良的街道

奈良的街道

奈良的街道

这个格子之家应该算个景点,很多资料上写了,我去的时候已经关门了。

奈良的街道

 

已经开始下雨。

奈良的街道

奈良的街道

药局。日本普通诊所只看病、开药而不卖药,买药的话拿着医生的处方可以去任何药局。

 

奈良的街道

奈良的街道

奈良的街道

小雨之后

 

奈良的街道

奈良的街道

奈良的街道

小南瓜

奈良的街道

 

一檀咸菜也很贵。

奈良的街道

奈良的街道

奈良的街道

制作酱油的

奈良的街道

奈良的街道

Posted in 生活 Tagged with: ,

Long Vacation of 奈良- 可爱的鹿们

奈良应该算是世界上为数不多的任何动物如此调和的生活在一起的城市了,鹿在奈良公园附近随处可见。除了在路口经常能看到的
“鹿出没,请注意”的提示语之外,你还能在各种有没有人出没的地方都能发现鹿。

 

一个小商店门口的鹿。

 

奈良的鹿

草地上

 

奈良的鹿

奈良的鹿

东大寺前面

 

奈良的鹿

奈良的鹿

 

很多地方都在卖小鹿煎饼(小饼干),卖煎饼的人一般都不希望鹿到自己摊前来,因为他们需要为鹿的粪便扫除。

 

奈良的鹿

奈良的鹿

 

东大寺前的商店街很不错,很多有意思的土产,可惜本人穷买不起。

 

奈良的鹿

奈良的鹿

奈良的鹿

奈良的鹿

奈良的鹿

奈良的鹿

奈良的鹿

奈良的鹿

 

东大寺、春日大社附近的景点很多鹿。

 

奈良的鹿

奈良的鹿

奈良的鹿

 

貌似在县法院门口

 

奈良的鹿

 

奈良的吉祥物确实不怎样,这个小胖子一点都不可爱。

 

奈良的鹿

Posted in 生活 Tagged with: ,

无觅相关文章插件,快速提升流量