AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

Rails Services - Create micro services with (or without) Rails by 罗昕

发布者 rubyconf
发布于 1430111534845  浏览 5911 关键词 Ruby 
分享到

第1页

RailsService
Create microservices with/without Rails

第2页

标签 Label
You labeled me. I'll label you.                 ——《The unforgiven》Metallica

第3页

时髦?
SOA
PAAS
DevOps
Microservices
大数据
云计算
Agile
TDD

第4页


 罗昕
 折800架构师
 RailsService作者                                      
关于我…

第5页


 罗昕
 折800架构师
 RailsService作者
 “老罗”
 “罗老师”
关于我…

第6页


 罗昕
 折800架构师
 RailsService作者
 “老罗”
 “罗老师”
 与罗永浩无任何关系
关于我…

第7页

RailsService

 Create
 Microservices
 With/Without
 Rails                                     

第8页

词与物

第9页

米歇尔·福科在他的《词与物》一书的开头,引用了博尔赫斯小品文中的一段,来引发关于事物之秩序的议论。在博尔赫斯的这篇小品文中,他模拟了一部古代中国的类书中对动物的分类:“动物可以划分为:

⑴属于皇帝所有的,⑵有芬芳的香味,⑶驯顺的,⑷乳猪,⑸鳗源,⑹传说中的,⑺自由走动的狗,⑻包括在目前分类中的,⑼发疯似地烦躁不安的,⑽数不清的,⑾浑身有身份精致的骆驼毛刷的毛,⑿等等,⒀刚刚打破水罐的,⒁远看像苍蝇的”。
                               
博尔赫斯的分类法

第10页

这一特殊的事物分类,与欧洲百科全书的分类法则大相径庭。列维-施特劳斯在谈到原始部落的物种分类时,也注意到了这一差别。在列维-施特劳斯看来,这种种迥然不同的事物分类,可能就意味着世界可能存在多种规则。以近代以来欧洲博物学的分类学观点来看,这一中国式的分类法显然是荒唐可笑的。

这一混乱、庞杂、毫无逻辑可言的,寓言式的动物分类,实际上是在提醒一种特殊的世界秩序观念,揭示出世界的另一重可能的秩序,而这对于欧洲人来说,可能“就是我们自己的思想的限度”。
                         
博尔赫斯的分类法

第11页

Microservices?

第12页

Microservices

The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms.  
                                    ——Martin Fowler                        

第13页

Rails


 单一代码库,代码量可能非常巨大
 任何改动都需要重新部署整个项目
 任何模块的问题可能拖垮整个应用
 不同业务模块服务器资源分配不均                        

第14页

万能青年旅店 Rock? Folk? Indie? Pop?

第15页

RailsService简介

第16页

Why RailsService?

背景:公司统一战略,跨部门跨语言互操作协议统一到Apache Thrift.

需要一个Framework,提供类似Rails的开发效率,需要重用之前的业务逻辑和代码。
对普通程序员隐藏协议和实现的细节。

第17页

RailsService设计原则

 Knowledge Reuse
 Code Reuse
 Least Astonishment
 KISS

第18页

RailsService特性

 Like Rails(目录,命令行,Generator,Migration)
 集成Apache Thrift
 支持Newrelic,支持日志,支持TDD
 Checker & Builder
 支持Foreman部署
 支持Rails 2/3/4
 支持JRuby(Twitter Finagle)

第19页

RailsService HelloWorld
without Rails

第20页

新建RailsService项目

第21页

RailsService目录结构

第22页

生成HelloServer

第23页

Server生成后的文件变化

第24页

修改.thrift idl文件

第25页

HelloServer中实现say方法

第26页

修改测试文件

第27页

运行测试

第28页

启动HelloServer

第29页

生成HelloClient

第30页

生成Client后文件变化

第31页

查看Client的内容

第32页

通过Client调用Server

第33页

Apache Thrift简介

第34页

What's Thrift?

The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.

第35页

Thrift的关键特性

 IDL
 Code generator
 Protocol(Binary, Compact, JSON)
 Transport(Framed, Buffered, HTTP)

第36页

Thrift与HTTP API的比较

 易学易用性 ×
 效率 √
 文档(IDL, Schema)√
 版本演进 √
 一致性 √

第37页

与其他协议比较 Avro, Birt, Capnproto, FlatBuffers, Protobuf

 Schema free? Schema evolution?
 Generate code?
 Zero-copy? Random-access reads?

第38页

RailsService命令行

第39页

rails_service -v

第40页

rails_service -h

第41页

rails_service n

第42页

rails_service s

第43页

rails_service g

第44页

rails_service g server

第45页

rails_service g install

第46页

RailsService与Rails集成
with Rails

第47页

在Rails项目下运行install

第48页

实际项目示例

第49页

是否加载Rails环境比较

第50页

RailsService Future

第51页

Incoming, v0.3
 Integrate with Zookeeper, like Finagle.
 Fault-tolerant, like Storm.
 Deploy with docker(experimental).
 Service method cache.
 Commit patches to Apache-Thrift.
 Add more tests.

第52页

Planning
 Custom Thrift parser && generator.
 Custom Thrift server.
 Protocol agnostic, supporting better              protocols like FlatBuffers, Capnproto.
 Open source.

第53页

尚未结束…

第54页

“把保持沉默看作怯懦,这是不对的。沉默是一种生活方式。”

“我曾经是个沉默的人,这就是说,我不喜欢在各种会议上发言,也不喜欢写稿子。”

“我又猛省到自己也属于古往今来最大的一个弱势群体,就是沉默的大多数。这些人保持沉默的原因多种多样,有些人没能力,或者没有机会说话;还有人有些隐情不便说话;还有一些人,因为种种原因,对于话语的世界有某种厌恶之情。”
王小波《沉默的大多数》

第55页

“我后来到美国留学时,给X教授编软件,文件名总叫caonima,caonima·1,caonima·2,等等。但是他总把第一个音节念成"考",给我打电话说:考你妈一可以了,考你妈二还得往短里改。我就纠正他道:不是考你妈,操你妈。我们一共是四个研究生给他编程序,人人都恨他。这是因为按行算钱,他又不让编长。这种情形就叫作受压迫。毛主席教导我们说,有压迫就有反抗,所以就考你妈”
王小波:“考你妈”

第56页

“思想、语言、文字,是一体的,假如念起来乱糟糟,意思也不会好——这是最简单的真理,但假如没有前辈来告诉我,我怎么会知道啊。有时我也写点不负责任的粗糙文字,以后重读时,惭愧得无地自容,真想自己脱了裤子请道乾先生打我两棍。孟子曾说,无耻之耻,无耻矣。现在我在文学上是个有廉耻的人,都是多亏了这些先生的教诲。对我来说,他们的作品是比鞭子还有力量的鞭策。”
王小波 《我的师承》

第57页

“When you don't create things, you become defined by your tastes rather than ability. Your tastes only narrow & exclude people. So create.”
                                                ——whytheluckystiff
《怀念_why先生》

第58页

So create.
支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。