并发不是并行

现在我们都说设计可并行的程序、高并发的程序?而且很多时候潜意识里面觉得对并行(Parallelism)和并发(Concurrency)的的区别很清楚,但是如果要明确的说出二者的区别,又感觉没法给出一个非常清晰的描述。最近看到Go语言发明者之一Rob Pike的一篇演讲《Concurrency is not Parallelism》,觉得挺不错的。因为特别喜欢的里面的配图示例,所以我决定写本篇博客,将其转过来,也方便一些网络不畅的人。下面给出原文涉及的一些链接:演讲幻灯片请移步:https://talks.golang.org/2012/waza.slide演讲视频请移步:https://www

Linux下的非阻塞IO库epoll

今天看到一篇文章,对于epoll讲解的非常生动清晰,转载收藏一下,原文请点击here。生活中的一个例子假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面。如果你使用的阻塞IO模型来处理这个问题,那么你就只能一直守候在A号楼门口等待朋友的到来,在这段时间里你不能做别的事情,不难知道,这种方式的效率是低下的。进一步解释select和epoll模型的差异。select版大妈做的是如下的事情:比如同学甲的朋友来了,select版大妈比较笨,她带着朋友挨个房间进行查询谁是同学甲,你等的朋友来了,于是在实际的代码中,select版大

我们要结婚了

放假前,再发一篇博客吧。这次不是技术,是秀恩爱...和女朋友在一起也五年多了,虽然中间也经历了很多波折,但结局好一切都好。如今马上就要走进婚姻的殿堂,没有婚前恐惧症,只感受到满满的幸福。最后,附一首我喜欢的歌和歌词吧。终于等到你到了某个年纪你就会知道 一个人的日子真的难熬 渐渐开始尝到孤单的味道 时间在敲打着你的骄傲 过了某个路口你就会感到 彻夜陪你聊天的越来越少 厌倦了被寂寞追着跑 找个爱你的人就想托付终老 能陪我走一程的人有多少 愿意走完一生的更是寥寥 是否刻骨铭心并没那么重要 只想在平淡中体会爱的味道 终于等到你 还好我没放弃 幸福来得好不容易 才会让人更加珍惜 终于等到你 差点要错过

Go缓存库cache2go介绍

cache2go是一个用Go实现的并发安全的缓存库,实现了如下特性:并发安全;可设置每条缓存的超时时间;内置缓存访问计数;自调节的缓存过期检查;可设置缓存增加/删除回调函数;and so on...这个库代码量很少,核心代码就三个文件,里面设计的技术点主要包括读写锁、goroutine、map操作等。作为Go语言学习样例也非常不错。1. 源码解析cache2go中主要涉及两个类型CacheItem、CacheTable:一个CacheItem代表一条缓存;一个CacheTable代表一个缓存表,由一条条缓存组成。下面我们分别介绍。1.1 单条缓存CacheItemCacheItem的结构如下:

再折腾博客

折腾博客自从去年从Wordpress迁到Typecho之后,博客就逐渐稳定下来,最多平时就做些边边角角的修改。无奈最近多说评论系统突然宣布要关闭,就又不得不好好折腾一番。替换评论系统当然第一件事就是替换掉即将要关闭的多说。从2014年建立博客后不久就开始使用多说,直到现在也有三年多了。平心而论,多说是众多评论系统中做的非常不错的一个产品,用户量也应该是最多的一个,只是可能没有盈利吧。其实我觉得可以仿照前段时间为知笔记突然从免费收费的运营模式,如果失败了,再关闭也不迟。当然,这些都不是我应该关心的,我要做的是解决评论的问题(虽然平时也没多少评论...)。先后尝试了有言、畅言、网易云跟帖等产品,感

通过Heapster API获取Kubernetes监控数据

在上篇文章《Kubernetes资源使用监控实践》中,我们已经介绍了如何在Kubernetes上面部署Heapster,以及结合InfluxDB和Grafana做了界面展示,但在最后我们提到很多系统可能只是获取这些监控信息,然后使用自己的方式去做展示。所以本文主要介绍如何通过Heapster提供的REST API来获取这些监控信息。Heapster通过Metric模型来组织这些监控数据,这些数据可以通过REST API来获取,目前提供的监控维度可参考:https://github.com/kubernetes/heapster/blob/master/docs/storage-schema.m

Kubernetes资源使用监控实践

对Kubernetes中的各项资源进行监控有助于我们时刻了解集群的运行状况,从而对集群进行相应的操作,比如扩容、缩容等。在Kubernetes中主要通过Heapster结合一些其它组件进行资源监控。1. 架构分析Heapster也是Kubernetes的一部分,主要目标就是对Kubernetes集群进行基础监控,再结合cAdvisor等工具就可以对集群进行很好的监控。而cAdvisor工具已经集成到了kubelet文件中,当我们部署好一个Kubernetes集群以后,默认监听在4194端口,且有简单的UI:某个容器的资源使用:Heapster和普通的应用一样,都是以Pod的方式运行在集群中,并

Ubuntu 14.04部署Kubernetes及可能遇到的问题

之前已经写过文章如何在Ubuntu 16.06等使用systemd的系统上面部署Kubernetes,正好使用的是非systemd系统的Ubuntu 14.04部署了一下Kubernetes,按照官方文档遇到了很多问题,总结了一下发出来,希望可以帮助到遇到同样问题的人。本文主要参考自Kubernetes官方文档《Manually Deploying Kubernetes on Ubuntu Nodes》,但因文档很久没有更新了,部署比较新的版本时会有很多问题,所以这里列一下部署步骤,并说明部署过程中可能遇到的问题及解决方案。NB:该部署方法只适用于Ubuntu 14.04等使用upstart的
|