最近一个实时计算的项目比较紧, 很久不更新了,有点关于进阶的小感悟, 记在下面。
编程
今天看到池大大的一篇推送(MacTalk公众号的主人 池建强)– <<程序员怎么会不知道C10k问题呢?>>
其实我真的不知道这个术语。 而且我是一个程序员。
用自己的话回忆下池大大的扫盲教程: C10k 的意思是Client 10000,也就是同时有10000个客户端连接到服务器。 这种情况下服务器很难正常提供服务。 最开始的限制是由于Unix开发的file descriptor 只是一个有符号的16位整数 [ 所以进程的数量收到这个数据结构所能表达的个数限制 ] 。 其次便是内存消耗的问题, 虽然有虚拟内存的帮助 [ 使得程序共享的内存可以多于实际上的物理内存] , 但同时由于有些请求需要的数据降在了磁盘, 带来了很大的性能损失。
如今的解决方式是”通过单个进程或者线程服务于多个客户端请求, 通过异步编程和时间触发机制替换轮询, IO采用非阻塞的方式, 减少不必要的性能损耗。]
池大还提到了最弱连接的概念, 也是ruby的创始人 松本行弘先生 提到的
锁链整体的强度是取决于最弱一环。
这个和木桶效应有点相似, 但是对于系统的整个链路来讲, 这个比方显得更加形象和贴切。 即 整个链路的任何一个环节都要满足C10k的 要求。
其实, 在学生时代, 我们总是追求一个逻辑的复杂度来判定自己写的程序够不够diao。 而入职到现在的将近八个月的时间, 加上阿里高并发, 大数据的环境, 也慢慢对体量对于系统/程序的要求有了感受。 当初简单的单机mysql不够用了, 就分库分表, 那么然后诞生出的大量一致性/性能/可用性方面的问题就亟待解决。
业务的发展往往对技术有强大的拉动作用。
就像这个C10k的讨论, 我们也会有类似的感受 [ 高并发带来的系统需求, 分布式架构 ] , 但是这么一个清晰明确的定义再加上对系统发展史的回顾仿佛打开了新世界的大门。 我们会不自觉的回首之前的感受, 有没有属于这个问题域的, 以后也会把这个作为已有知识去连接知识点, 解决问题。
于是有了进阶。
前几天老大也和我聊了聊, 带来一些思考。 其实一个大环境可以带给你很多, 很大程度上超越自学带来的收益, 不论是可学技术的深度广度还是自我知识展示分享的机会。
画画
捡起画笔有一个月了, 从基础素描开始,每周在画室画一天, 凭着自己所谓的一点天赋, 进步也还比较快。
画室的老师特别逗, 这种逗其实是特别智慧, 因为现在的社会日常多戏谑玩笑, 但老师总有一种特别严肃的认真, 一本正经的和你谈艺术,却是有些逗。
我们画室还有一个群, 里面藏匿着各种绘画大神。当你觉得画得有点像, 甚至有些沾沾自喜的时候, 看到大家的作业, 就仿佛一个hello world程序员遭遇了C10k的问题。 其实在画得像不像的背后, 抛却这些光影, 抓型,明暗变化, 质感纹理 的表现技巧和熟练手法, 还有大量的对美的欣赏感悟, 对艺术史的理解, 对历史上一众美术大师一生经历所闻。
一个极其孤独的人, 他也可能画出异常鲜艳的作品, 归于渴望, 也可能画出非常黑暗的作品, 对当前生活或回忆的表达, 让你看到就觉得抑郁。
画室的一个朋友临摹梵高的<<夕阳下的播种者>> , 不惜读了梵高传, 读了梵高的书信集, 再了解到影响梵高的前辈艺术家。 感受到了梵高的境遇和感情, 有了超越历史的心灵相通, 也许就明白了梵高的夕阳为什么以波浪形的金色笔触铺满了画面的一半。 不过我现在也还是不明白。。
不再囿于形, 于是有了进阶。
跟周围一群同样的程序员待久了, 难免忘了别的世界。 有人在群里问老师怎么样可以补充点艺术鉴赏的知识, 老师回
带上电热水壶和插座转换器还有面包去欧洲。
,
不得不说哈哈真是精辟了。大概书上的东西是太干瘪了吧。
殊途同归
我们总是需要, 其实也总会遇到 一些天才大神或者经验老者 的刻意提醒或者无意点拨, 从而可以站在巨人的肩膀上…