十一假期小结

还有一堆事情没做,但忍不住小结一下。

  • 家庭:回京郊老家三天,回三河老家一天,见亲朋若干,和姑姑家聚会一次
  • 朋友:高中同学聚会一次
  • Coding:把几个在Thrift上想实现的东东给实现了个原型,下面细说
  • 微笑网公益购物:给“最近订单”页添加了分页,这样可以查看全部订单,而不仅是最近50条了。其实就花了10几分钟查了一下CodeIgniter文档就写好了。在微笑网花的时间太少了,检讨。
Thrift服务的可用性、可管理性、实现细节这三个方面都做了些事情,挺满意的,只可惜还都是原型,还有很多工作要做。
  1. 提供了Service的Base(基于fb303),以及相应的Java实现基类,为Thrift服务的可管理性做一个基础。
  2. 重温了Django,基于Django和1中的规范,实现了Thrift Service配置管理界面和监控界面。
  3. 写了Java的Thrift Client Connection Lib,以便通过Client端机制实现Thrift Service的集群,提高服务可用性。
  4. 写了Java的Thrift Server辅助类,为了方便Server的代码编写,更是为了统一和提高Server的代码质量。

Related posts

知识整理和分享提纲

占个坑,最近思路很活跃,想整理和分享的东西很多。先整理成PPT在内部分享,然后也分享给博客上的朋友们。

内容会包括:

  1. Thrift使用经验交流
  2. MongoDB使用经验交流
  3. 前端技术架构梳理:如何从专业到一流
  4. 说说软件开发中常碰到的“性”事。(介绍可用性、扩展性、高性能等基本软件系统指标在实际操作中的使用)
  5. Scrum实施经验交流:发现问题,解决问题 — 项目管理之道。(天地万物皆可为兵、如何带项目/做项目流程改进、理论结合实践)
  6. 如何培养下属(如何带新人、如何培养项目成员、指导人计划)
  7. 愚者千虑,必有一得 — 谈建立“思考的习惯”对个人职业生涯的意义
  8. 职业生涯回忆录:我经历过的工作模式

Related posts

推荐一篇介绍Thrift的文章

http://jnb.ociweb.com/jnb/jnbJun2009.html

写的非常不错的文章,对体系结构、运行时、性能测试、应用场景都有介绍,而且比较客观。而且其中明确回答了几个问题,例如:

  • Thrift客户端运行时候都需要什么,需要C++那堆东西吗?
  • Thrift生成的代码帮我们解决了哪些问题?它对我们写Service的服务器端提供了哪些帮助?
  • 一个Server可以提供多个Service吗?
  • Thrift支持哪些数据传输格式(Protocol)和传输方式(Transport),什么时候该用哪个。

更多内容请阅读这篇文章吧。

Related posts

Thrift演示代码-Cache服务器

利用这个周末终于写了个thrift的demo代码:Cache服务器。下面是三部分代码:

thrift文件Java服务器端和客户端代码Python客户端代码

比较简单,就不逐行讲解了。但是这个代码想要跑起来显然也不是很容易的,因为需要配置thrift运行时,没有动手操作过的同学一定会遇到问题。下面是thrif idl文件,为了演示所以接口定义的有些重复:

struct CacheEntry{
1: i32 key
2: string value
}

service CacheService {
string get(1: i32 key),
void put(1: i32 key, 2: string value),
CacheEntry getEntry(1: i32 key),
void putEntry(1: CacheEntry entry)
}

BTW:写这个demo的过程中深切感到脚本语言写代码的快速,即使我没看过几眼python,但python demo依然比java写的快。java编译什么的太麻烦。

Related posts

各语言的Thrift Runtime

Thrift安装挺麻烦的,但Runtime很容易,防止大家的畏难情绪特别说明一下。

Thrift Java Rumtime: libthrift.jar,slf4j-api-1.6.0.jar,就这么两个jar包。

Thrift Python Runtime,就是/usr/lib/python2.5/site-packages/thrift/目录下一些python lib

这些运行时其实是不需要安装thrift,而只要在THRIFT_DIR/lib/java,THRIFT_DIR/lib/py目录里就可以直接安装相应语言的运行时。

Related posts

在Redhat上安装Thrift

本来在自己VPS的Ubuntu上安装好了Thrift,但发现那个VPS内存限制太严,用起来不爽,所以还是在公司服务器上安装Thrift吧。公司的机器都是Redhat,所以边装边记录一下安装过程。安装过程参考文档:

  • Thrift依赖的软件:http://wiki.apache.org/thrift/ThriftRequirements
  • 官方安装指南:http://wiki.apache.org/thrift/ThriftInstallation

Step1:安装依赖

  • autoconf版本低需要升级。./configue –prefix /usr, make, make install经典三步搞定
  • libtool版本低需要升级。./configue –prefix /usr, make, make install经典三步搞定
  • zlib版本低需要升级。./configue, make, make install经典三步搞定
  • 安装boost。./bootstrap.sh, ./bjam, ./bjam install
  • 安装ant。
  • 安装SLFJ,把它的jar包放在类路径下就好了。thrift java api运行的时候需要。

Step2:下载和编译Thrift

  • 下载:wget http://apache.etoak.com/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz
  • tar -zxvf thrift-0.2.0-incubating.tar.gz
  • cd thrift-0.2.0
  • ./bootstrap.sh
  • ./configure, make, make install

Step3:生成运行时(Runtime)

  • cd ./lib/java
  • ant 生成libthrift.jar(thrift的java运行时)
  • cd ../python
  • python setup.py install(生成python运行时)
  • cd ../php
  • php的运行时我没有生成,因为它没有提供自动脚本,而需要手动操作。

Related posts

Thrift是什么

Thrift是什么?我的解释是:替代常见的XML-RPC的方案。而且包含了RPC客户端和服务器端的代码生成,使得Service的开发更快捷。是基于Service的多语言混合编程的首选方案。

官方定义:“Thrift is a software framework for scalable cross-language services development. It 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, Smalltalk, and OCaml.”

我认为它适合用在软件系统内部Services的开发。开放给企业外部的Service接口一般不适合用Thrift,同样系统内部用的Service也不应该用XML-RPC。

Thrift由Facebook开发,而后捐给了apache。Thrift经常和Google的Protocol Buffers比较,这是一篇非常好的二者对比

下图比较好的说明了Thrift在整个系统中应该处在什么位置:

Related posts

如何安装Thrift

总的来讲,在Ubuntu上安装Thrift非常顺利。下面是最有用的一个在线文档:http://wiki.apache.org/thrift/GettingUbuntuPackages

下面是我的安装过程,依次是:安装python头文件、安装thrift依赖包、下载thrift包、解包、编译。(Some other packages depend on what languages you want Thrift to support. For ruby, install ruby-dev.)

sudo apt-get install python-dev
sudo apt-get install libboost-dev automake libtool flex bison pkg-config g++
wget http://apache.freelamp.com/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz
tar -zxvf thrift-0.2.0-incubating.tar.gz
cd thrift-0.2.0
./bootstrap.sh
./configure
sudo make
sudo make install

我在安装过程中遇到的其他问题:

  • 机器没装make,汗。sudo apt-get install make
  • burstnet比公司内自建的vps快多了,burstnet上make了三遍公司里的还没make完

Related posts