三年,三十年
今天入职淘宝三周年,想想应该写点什么,却又感到无从写起。三年前,孤身一人,手提肩扛,带着理想,与台风韦帕一道来杭。三年来,机房通宵,办公室通宵,出租房通宵,不知熬过多少通宵;白天告警,晚上告警,节假日告警,不知收过多少告警。三年来,业务上涨,团队壮大。三年来,有过压力,有过欢乐,有过离别,有过重逢。然而回头细想,这些过往,都成了淡淡的经历,无法再浓墨重彩的描述。
杭州三年,爬山暴走,喝茶打牌,工作之外,生活乐趣比起之前在东莞和上海都要多。人生不只是工作和技术,这三年最大的收获,是昨天晚上还在说很少在这个blog中出现的,整天忍受我的懒惰和借口的,为旅游不辞辛劳痴狂不眠的,为装修绞尽脑汁东奔西走的,我的太太。有了你,我的人生从此不同。
杭州三年,感谢生活的眷恋,让我有机会和淘宝DBA团队一起成长。感谢淘宝DBA团队,让我在技术和管理上都收获良多,价值不可估量。
杭州三年,我的人生即将度过三十年。不知道下一个三年,下一个三十年,又将在何方?
是为记。
华山之险,惊魂欲断
在杭州这几年,周末无事,一般都会去爬山暴走。不过杭州以西湖闻天下,山却无大名。黄山虽近,却一直没有找到机会前往。因此,之前爬过能叫得上名字的,不过衡山,雪窦山而已,且差不多都是十年前学生时代的回忆了。
昨天西岳华山一日游,行程相当的紧。华山地处渭南华阴,东望洛阳,西距西安约120公里,加上高速部分路段修路封闭,来回车程六个多小时。从早上七点半出发,到晚上七点左右回来,去掉游客中心等人的时间,在山上不过四个小时多而已。华山门票100,游客中心到索道的双程车票40,双程索道150,算来爬一次华山不便宜。
索道到最低的北峰,算了下时间,应该可以到达最高的南峰,其他东西两峰估计就没时间了,中峰则可顺道经过。过擦耳崖,登天梯,行苍龙岭,上五云峰小憩。五云峰上有个宾馆,双人间280一床位,二十人间100一床位,节假日加价50%,如果想看日出,住这里的价格到勉强也能接受,当然我指的是二十人间。这一路是去东南西中四峰的必经路,行人众多,不时可见身负重担的挑夫,山上所售食品饮料,多由挑夫负担送至,问了一下,有负重者200余斤,行时一步一顿,全身肌肉紧绷,经络可见。挑送一担约可得大洋30左右,生活之多艰,犹如华山之天险。在擦耳崖的路边栏杆外,还曾见一须发皆白的老翁,在两肩间跳换重担表演,同时用带着方言腔的普通话唱着山野情歌,赚点小钱,“不是哥哥不爱你,哥哥一个月的工资,也养不活你。。。。。。”
过了金锁关,分道而行可到其余诸峰。穿过中峰,山道渐缓,偶有人声,鸟鸣幽涧,松风可闻。这一片多是油松,数百年的大树,直刺苍穹,随处可见。从北峰索道一路到南天门,走走停停大约两个半小时,中间一起上山的队伍逐渐分散,只有我和另外一人达到海拔最高2100多米的南峰,其余多数去了西峰,也有两位女士刚上苍龙岭即返。到南峰的唯一目的,乃传说中的长空栈道。
长空栈道在南天门外,是华山著名险道之首。栈道开凿在南峰腰间,上下皆是悬崖绝壁,铁索横悬,由条石搭成尺许路面,下由石柱固定。由于栈道险峻,故当地人有“小心小心九厘三分,要寻尸首,洛南商州”之说。
长空栈道是元代陇西贺元希来华山时所凿。初来时,住在山外的“全真观”里。因为那里接近红尘,不便于羽化成仙,又在南峰开凿“朝元洞”。后来,觉得这里也不好,又开“贺祖洞”。凿洞必先开道,所以这里的一切全是这位开山元勋和他的徒弟们干出来的。他在华山用于开道、凿山洞的时间就有40年,所以,后人把他尊为华山的第一位神来供奉,并有许多神话故事流传。
巨石成华山,剑削为奇峰

苍龙背为岭,游人踟蹰行

华山之险,惊魂欲断。

长空栈道,只可登仙。

厦门outing
8.14~8.16,技术保障部厦门outing。算起来这是到到淘宝以后的第三次大部门outing,一次临安,一次安吉,这次总算是跨出了浙江省的范围,来到美丽的海边城市厦门。来回都是动车,六个小时的车程,100多人的队伍,打牌聊天,到也不觉旅途的漫长。
淘宝DBA团队有了更多的新成员,难得的在鼓浪屿留下一张合影,可惜的是还有几位没能聚齐。

虽然鼓浪屿上的建筑各具特色,厦门大学的校园风景怡人,南普陀的放生池乌龟成群,不过厦门的大海有点让人失望。

当然,海水一般,海鲜还是不一般的,15号晚上去了传说中的小眼镜,生意好得出奇,在外面露天排号差不多一个小时才轮到,好在味道还是对得起传说中的大名的。路上还有个小插曲,因为人多,需要打两辆车,另外几个同事打的一辆出租车,一说去小眼镜,师傅说小眼镜没空位,就被赶下车了,囧。厦门这边的服务水平有待提高,一不小心就可能碰个钉子。
Cassandra 0.7 值得期待
在Cassandra的wiki上,很早就有0.7的一些特性描述,其中很有些吸引人,而8月13号Cassandra 0.7 beta1版本终于发布了,这里可以下载。
个人比较关心的几个主要的新特性:
1. Key Space和Column Family定义可以在线增改,不再需要停集群修改配置文件了。
2. 支持secondary index,可以对column建索引,通过接口get_indexed_slices实现针对column的查询。
3. 支持truncate一个column family。
4. 可以针对keyspace设置replica_placement_strategy和replication_factor。
5. Row cache提升了8倍的读性能。之前版本的测试中,Cassandra写性能令人印象深刻,读性能则不如人意。
6. 支持hadoop格式的输出,可以使得数据仓库更容易从Cassandra中抽取数据。
另外,配置文件从xml改成了yaml格式的,读起来更顺畅些。代码里还有很多细节的改进,有时间需要慢慢去看了。期待0.7版本尽快GA。
0.7.0
=====
Features
--------
- Row keys are now bytes: keys stored by versions prior to 0.7.0 will be
returned as UTF-8 encoded bytes. OrderPreservingPartitioner and
CollatingOrderPreservingPartitioner continue to expect that keys contain
UTF-8 encoded strings, but RandomPartitioner no longer expects strings.
- A new ByteOrderedPartitioner supports bytes keys with arbitrary content,
and orders keys by their byte value.
- Truncate thrift method allows clearing an entire ColumnFamily at once
- DatacenterShardStrategy is ready for use, enabling
ConsitencyLevel.DCQUORUM and DCQUORUMSYNC. See comments in
`cassandra.yaml.`
- row size limit increased from 2GB to 2 billion columns
- Hadoop OutputFormat support
- Streaming data for repair or node movement no longer requires
anticompaction step first
- keyspace is per-connection in the thrift API instead of per-call
- optional round-robin scheduling between keyspaces for multitenant
clusters
- dynamic endpoint snitch mitigates the impact of impaired nodes
- significantly faster reads from row cache
- introduced IntegerType that is both faster than LongType and
allows integers of both less and more bits than Long's 64
Configuraton
------------
- Configuration file renamed to cassandra.yaml and log4j.properties to
log4j-server.properties
- Added 'bin/config-converter' to convert existing storage-conf.xml or
cassandra.xml files to a cassandra.yaml file. When executed, it will
create a cassandra.yaml file in any directory containing a matching
xml file.
- The ThriftAddress and ThriftPort directives have been renamed to
RPCAddress and RPCPort respectively.
- The keyspaces defined in cassandra.yaml are ignored on startup as a
result of CASSANDRA-44. A JMX method has been exposed in the
StorageServiceMBean to force a schema load from cassandra.yaml. It
is a one-shot affair though and you should conduct it on a seed node
before other nodes. Subsequent restarts will load the schema from the
system table and attempts to load the schema from YAML will be ignored.
You shoud only have to do this for one node since new nodes will receive
schema updates on startup from the seed node you updated manually.
- EndPointSnitch was renamed to RackInferringSnitch. A new SimpleSnitch
has been added.
- RowWarningThresholdInMB replaced with in_memory_compaction_limit_in_mb
- GCGraceSeconds is now per-ColumnFamily instead of global
- Configuration of DatacenterShardStrategy is now a part of the keyspace
definition using the strategy_options attribute.
The datacenter.properties file is no longer used.
JMX
---
- StreamingService moved from o.a.c.streaming to o.a.c.service
- GMFD renamed to GOSSIP_STAGE
- {Min,Mean,Max}RowCompactedSize renamed to {Min,Mean,Max}RowSize
since it no longer has to wait til compaction to be computed
Thrift API
----------
- Row keys are now 'bytes': see the Features list.
- The return type for login() is now AccessLevel.
- The get_string_property() method has been removed.
- The get_string_list_property() method has been removed.
Other
-----
- If extending AbstractType, make sure you follow the singleton pattern
followed by Cassandra core AbstractType extensions.
e.g. BytesType has a variable called 'instance' and an empty constructor
with default access
0.7.0-beta1
* sstable versioning (CASSANDRA-389)
* switched to slf4j logging (CASSANDRA-625)
* access levels for authentication/authorization (CASSANDRA-900)
* add ReadRepairChance to CF definition (CASSANDRA-930)
* fix heisenbug in system tests, especially common on OS X (CASSANDRA-944)
* convert to byte[] keys internally and all public APIs (CASSANDRA-767)
* ability to alter schema definitions on a live cluster (CASSANDRA-44)
* renamed configuration file to cassandra.xml, and log4j.properties to
log4j-server.properties, which must now be loaded from
the classpath (which is how our scripts in bin/ have always done it)
(CASSANDRA-971)
* change get_count to require a SlicePredicate. create multi_get_count
(CASSANDRA-744)
* re-organized endpointsnitch implementations and added SimpleSnitch
(CASSANDRA-994)
* Added preload_row_cache option (CASSANDRA-946)
* add CRC to commitlog header (CASSANDRA-999)
* removed multiget thrift method (CASSANDRA-739)
* removed deprecated batch_insert and get_range_slice methods (CASSANDRA-1065)
* add truncate thrift method (CASSANDRA-531)
* http mini-interface using mx4j (CASSANDRA-1068)
* optimize away copy of sliced row on memtable read path (CASSANDRA-1046)
* replace constant-size 2GB mmaped segments and special casing for index
entries spanning segment boundaries, with SegmentedFile that computes
segments that always contain entire entries/rows (CASSANDRA-1117)
* avoid reading large rows into memory during compaction (CASSANDRA-16)
* added hadoop OutputFormat (CASSANDRA-1101)
* efficient Streaming (no more anticompaction) (CASSANDRA-579)
* split commitlog header into separate file and add size checksum to
mutations (CASSANDRA-1179)
* avoid allocating a new byte[] for each mutation on replay (CASSANDRA-1219)
* revise HH schema to be per-endpoint (CASSANDRA-1142)
* add joining/leaving status to nodetool ring (CASSANDRA-1115)
* allow multiple repair sessions per node (CASSANDRA-1190)
* add dynamic endpoint snitch (CASSANDRA-981)
* optimize away MessagingService for local range queries (CASSANDRA-1261)
* make framed transport the default so malformed requests can't OOM the
server (CASSANDRA-475)
* significantly faster reads from row cache (CASSANDRA-1267)
* take advantage of row cache during range queries (CASSANDRA-1302)
* make GCGraceSeconds a per-ColumnFamily value (CASSANDRA-1276)
* keep persistent row size and column count statistics (CASSANDRA-1155)
* add IntegerType (CASSANDRA-1282)
* page within a single row during hinted handoff (CASSANDRA-1327)
* push DatacenterShardStrategy configuration into keyspace definition,
eliminating datacenter.properties. (CASSANDRA-1066)
* optimize forward slices starting with '' and single-index-block name
queries by skipping the column index (CASSANDRA-1338)
* streaming refactor (CASSANDRA-1189)
常用标签: oracle MySQL Oracle11g dba blog 新特性 oow oow2009 wordpress ASM
最新评论 | Recent comments
- seonaut: 好文章,强烈支持! 欢迎交换友情...
- left: 博主你好,请问现在还有合租计划么...
- 深入浅出Flashcache(五): [...] 实际上,不同版本的Flashcache,输...
- RedhatLinux网卡配置与绑定 | 51NOC无忧网管中心: [...] 地址: http://www.ningoo.net/html/2007/r...
- yangdehua: write backup: 先写入到cahce,然后cache中...
- fxw1989311: 谢...
- 好看的电影: 呵呵,轻轻的,来看看你,我会回来...
- anymouse: mongodb是用的AGPL许可证。不适合商业...
- hoterran: 期待,学习...
- 深入浅出Flashcache(三): [...] 前文简单介绍了block device和device ...
- 深入浅出Flashcache(三): [...] 前文简单介绍了block device和device ...
- zhuanke: 偶然路过,先从第一篇看看,:...
- lee325: I subscribed to this community forum a while ago ...
- jack.buptsse: 好期待呀!NinGoo十分期待您的FlashCache...
- Nedleprortall: ChrisTV Online! Free / Premium - Программ...
