读书笔记-Kafka权威指南
一二章部分内容 producer发送流程: producer发送message到broker。 Broker commit到本地存储。确认模式取决于request.required.acks=0/1/all参数设置。 等broker确认后,producer继续发下一条。 硬件选择: 硬盘吞吐量,最直接影响producer clients的性能。大多数producer clients都至少等待一个broker的确认,所以磁盘写速度越高意味消息发送吞吐率越高。 硬盘容量,可以存足够时间的messages。 内存,consumer一般从partition末端读取,[它不会跟生产者产生消息的时间差距很大,在此情况下,消息一般都是直接缓存在page cache,消费者直接从page cache读取]。page cache(页缓存)需要使用内存,kafka broker上最好不要部署其它应用,主要是为了避免共享page cache。 网络,kafka会占用很大的网络带宽,多consumer时,考虑kafka在传输和读取上的压力。 CPU,相对于磁盘、内存而言不是很重要。producer产生的消息会被压缩存储,这部分需要用到CPU能力。 综上,kafka broker部署的机器需要是:大内存、SSD/HDD多路径或HDD磁盘阵列。 Kafka clusters:一般是指多个broker,主要为了分担负载。 Replication:指partition的replication,主要为了数据的容灾。 集群大小的选择: 需要多少磁盘容量。若需要保留10TB数据,单个broker可以保留2TB,则显然至少需要5个broker。 需要什么程度的集群处理能力,主要是考虑吞吐率。 第三章 Kafka Producers...
Go defer的陷阱
起因是,今晚公司的内部分享中讲到了go defer的问题,引起了很多人的争讨。用事实说话,我整理了下比较容易出困惑的点。 package main import ( "fmt" ) func main() { res := test_A() fmt.Println(res) test_B() test_C() fmt.Println("Over.") } func test_A() []int{ // 这里证明了:遇到defer时先压入变量的值到list中,return时再执行。这里变量的值是指针。 s := []int {1,2,3} defer fmt.Println(s)...
简单RPC
客户端侧代码: public class ClientApp { public static void main(String[] args) { ServiceProxy.setZookeeperHost("127.0.0.1:2181"); AddService addService = ServiceProxy.newServiceProxy(AddService.class); try { int c = addService.add(999, 888); System.out.println("计算结果是:" + c); } catch (Exception e){...
Go语言学习笔记
最近零星地看了些go语言的语法,起初看的是《Go语言编程》,不推荐,结构不清晰,讲述的很粗糙且口语化。后来看了《Go语言实战》,比七牛云那本读起来舒服很多,尤其对我这种入门级选手而言。还有一本《Go程序设计语言》在路上,期待能带来更详实的解读。 以下是学习总结的简单笔记,仅供自己入门回顾。 Go是静态编译型语言,静态是指编译时就可确定变量类型,编译型是相对于脚本语言的解释器而言。 开发工具 GoLand By Jetbrains。 Sublime text 3 + gosublime插件 go CLI go build:编译 go clean:删除编译生成的可执行文件 go get:下载和安装包/依赖 go run:编译并运行 变量 变量的声明:var a int,多个同类型的变量声明var a, b int。GO语言中声明时类型在变量名之后。声明后的变量为零值。 变量的赋值:value...
2017回顾
我的2017的主旋律可以总结为:发小论文 + 找工作。对于前者,磕磕绊绊,经历了两次英文会议的被拒后,最后终归是在国内核心上发表,结果差强人意;对于后者,从寒假开始零星地刷题开始,到找实习,到找工作,最后也是差强人意的结果,具体不想细言。那么,总结起来,2017对我可能是差强人意的一年,虽然回看2016的总结信心满满,但目前发现自己还与想达到的目标相差甚远,可以分为工作上的、心理上的、身体上的目标。 工作上,也就是实习期间(也包括找实习、找工作期间)上感受到技术上的种种空白和短板,虽然最后收获了也算不少的offer,但是我对面试过程中的自己不满意,对从实习中学到的东西不满意,对这期间自己的思考程度和频率不满意,对技术书籍的阅读和汲取不满意(主要是深度上)。也正是找工作,才让我第一次深刻反思了本科期间的轻松度日带来的后果,底层知识掌握不扎实这些不算最重要,重要的是意识到没有早日进行职业规划,当初上研究生也主要是为了逃避就业的选择,因此没有对将来要步入的行业培养出足够的好奇心和求知欲,没有尽早体验到挫败感,因此本科过的相对舒适而颓废,那么这差距,只能交给现在的我去弥补了。 心理上,我一直以来都非常希望自己能最终培养出一颗足够强大和健康的内心,于是读一些书,可能思考的太少,可能书读的太少,也可能实践的太少,这方面的进步太渺小。 身体上,也在保持锻炼,中间甚至尝试过几次计划,但其实在我看来还是挺随意的锻炼,中断次数很多。但现在我已不打算强迫自己走完整的计划了,锻炼这事,最终目的是让身体强壮健康起来,考虑到实习、工作等事情的介入,今年我退步不算太多。 那么在其它方面,阅读量、观影量减少了,唯一值得鼓励的是对无用东西的购入减少了,基本没有很败家,除了吃饭方面。 最后,先回顾下2017制定的个人目标: 个人技术上持续增长,增长到让自己满意,做出值得展示的web app; (未完成,技术上的提升不能自己满意,但大概找到了方向) 实验室方面,发出小论文,尽量少耗时地完成实验室的任务;(完成) 健康运动上,持续提升(深蹲硬拉到1.5倍体重,通过跑步提升自己心肺功能,如果能力够,加入爆发力训练);(只有硬拉勉强达标,其它都有退步) 尝试多和别人进行交流,表达自己; 如果有机会,出去好好玩一玩;(未完成,只出行了一次浙江天目山) 英语阅读能力精进(未完成) 剪个短发;(完成) 我的2018个人目标是: 早日完成毕业论文,顺利毕业。 阅读量的提升。专业类和非专业类。 完成学生到职场人的转变,心理上和生理上的,适应工作的作息时间,保持规律锻炼。 个人存款到5w,并理财。 一次毕业游。 除健身外,培养一个兴趣。