Scala代码实例之Kestrel:总结

开发 后端
本文对Scala代码实例之Kestrel系列进行了总结。作者对Scala的感觉是:语法和结构相当灵活,而语法则和Ruby有些相似之处。关于Kestrel本身,就算是不学习Scala语言,它的一些设计方式也是非常值得学习的。

Scala代码实例之Kestrel系列到了本篇就基本结束了,***再总结一下。

代码读到这里,基本上已经把核心部分的代码都已经读完了。只剩下一个KestrelHandler.scala,我们就简单地说一说。

如果对Apache Mina的API有一个简单的了解之后,阅读KestrelHandler.scala已经不会有什么问题。KestrelHandler是当Mina获得一个新的链接请求之后创建出来的对象,对象的主流程就是一个act。通过 react 的机制来处理所有往来的信息,当然除了异常处理之外,只有MinaMessage.MessageReceive(msg)是会调用到PersistentQueue的一些操作。具体的函数就是handle,这里用到了一个叫做asInstanceOf的方法,这是Scala最基础类的一个方法,用途就是强制类型转换,在做与Java接口的时候,可能会经常遇到它。

handle处理报文的格式,兼容memcached的协议,也没有太多需要解释的地方。

总结一下:

读完 Kestrel 之后,给我的感觉就是,Scala的语法非常轻盈,跟六脉神剑+凌波微步似的,有的时候还真抓不住。Scala的语法和结构相当灵活,比如有些地方需要严格地写,会有很多的 () 和 . ,但是简化的写法,就用空格隔开了。另外Scala也沿袭了Ruby的语法特点,不需要每句话的***都要;,直接用回车对语法进行判断,这些优化让程序看起来更像是一些自然语言,或者——呃——更加智能。

由于Scala弱化了变量类型,同时还强化了类的定义,所有变量都是类,所有的方法也都是类,连消息传递中,也使用了case class这样的特殊类,并且让常见的单例模式,或者常用的需要重载的函数,都由编译器自动实现,确实可以让代码大大的精简,变得很轻盈。

这种语言的设置,经过先辈语言,比如Lisp,Python证明,对于把Scala语言作为初学语言的人来说,几乎是没有门槛的,因为这无非是一套剑谱而已。而对于从C,Java这样的语言转过去的工程师来说,确实有点困难,因为打惯了横拳的人,直接告诉他,虚空一指就能让敌人动弹不得,用这样的招式多半有点心虚,担心这真气不那么靠谱。而且有的时候,因为不熟指谱,打出来的命中率也不高。所以如果可以的话,还是会坚持用自己习惯的语法来写Scala。

写惯Pascal的人,写C,总用不习惯 a++这样的语法一样,写出漂亮的Scala程序,还是需要慢慢地才会适应过来。

关于Kestrel本身,就算是不学习Scala语言,它的一些设计方式也是非常值得学习的。比如说Journal.scala对文件缓存这个机制的处理方式,非常的巧妙。而为了提高每个链接的效率,而让client等待一段时间,不是直接告诉client没有新的消息,这样的细节处理,会大大提高消息队列整体的性能。非常值得学习。

毕竟它是用在Twitter上的一个核心消息队列算法呀。

【相关阅读】

  1. 从Java走进Scala(Scala经典读物)
  2. A Scala Tutorial for Java programmers
  3. 专题:Scala编程语言
  4. 细说Kestrel.scala中的PersistentQueue
  5. Scala快速入门:从下载安装到定义方法
责任编辑:yangsai 来源: dingsding
相关推荐

2009-09-28 10:26:12

Scala代码实例Kestrel

2009-09-18 11:44:05

Scala实例教程Kestrel

2009-09-22 10:15:42

PersistentQScala

2009-09-22 09:59:40

QueueCollecScala

2009-09-28 11:25:17

PersistentQKestrelScala

2009-09-28 11:37:03

Journal.scaKestrel

2009-09-22 09:42:24

Scala的核心

2009-10-26 16:53:00

VB.NET常用代码

2009-07-22 07:47:00

Scala客户代码

2009-07-09 00:25:00

ScalaSet类Map类

2009-07-09 00:25:00

ScalaListTuple

2009-07-22 07:45:00

Scala代码重复

2009-07-09 00:25:00

Scala参数化

2011-07-06 14:43:41

ASP

2011-07-06 14:46:27

ASP

2012-07-27 10:30:12

重构

2022-10-28 07:10:51

HudiJavaHive

2009-09-23 10:28:49

使用Hibernate

2009-09-09 14:09:35

Scala Trait

2009-07-08 09:47:49

Scala 2.8Scala
点赞
收藏

51CTO技术栈公众号