接上一篇:http://blog.youkuaiyun.com/zhu_0416/article/details/79102010
题外话:
上一篇简单说了一下自己对kafka的一些基础理解,以及c++中如何利用librdkafka来实现我们自己的业务需求。这一篇就来研究研究一些另类玩法,跟代码无关,用到的技术也不算新,但是令我感到意外的是,竟然没有人这么使用过,实践过。。。
我挺难受的,这么一些通用且实用,而且通过很简单的操作就能提升数倍性能的方法,竟然甚少人去使用他们,甚至闻所未闻。忽然觉得中国这个IT环境里,怎么才能造就出伟大的程序员,公司注重的是利益,领导注重的是结果,不懂技术的人做领导,懂技术的人被领导,面试靠张嘴,工作靠开会,晋升靠资历,找工作靠学历。。。
百分之99的项目,“先出一个版本,后面再考虑优化”“这个需求很简单,怎么实现我不管,明天我就要”,然而。。永远没有时间梳理,也无暇思考。项目永远很急,程序员永远在加班。。。以前的代码永远要靠下一任调bug。。。
扯远了,回归正题吧。
一.Kafka环境搭建
网上有很多环境搭建的教程示例,看了一下,几乎全是千篇一律,都是相互转过来转过去,没有考虑到实际应用场景,也不考虑性能到底怎么样,也不考虑为何要这么搭,反正大家都是按这个套路来的,甚至我想找一篇搭建5个节点集群的都找不到。
实际生产环境中,我们的kafka是搭建在服务器上的,我们都知道每台服务器搭建一个节点,多个节点组成一个集群。我们也知道kafka的性能瓶颈是在网络IO和磁盘读写速度上。
正常情况下这么搭建当然是没问题的,而且kafka本身是为短消息而设计的,但是在绝大多数应用场景中,我们不得不实时传输图片这种大消息,假设我们要搭建一个支持日吞吐量4000万数据的集群,每条消息1M,
我们来算一下:
假设每个节