摘要: Flink流式计算原理,包括Structured Streaming,Continuous Queries,Handling Event-time,Handling Late Data,Watermarks 阅读全文
posted @ 2019-06-15 10:48 golang架构师k哥 阅读(1913) 评论(1) 推荐(1) 编辑
摘要: spark学习笔记,主要包括spark core的内容RDD弹性分布式数据集和广播变量及累计器.Spark Sql的内容Sql、Dataset和DataFeame. 阅读全文
posted @ 2019-06-15 09:31 golang架构师k哥 阅读(586) 评论(0) 推荐(1) 编辑
摘要: cap理论是分布式系统的基础理论,任何一个分布式系统不可能同时满足强一致性、可用性和分区容错性,而只能在三者之间权衡。为了提高系统的写入性能,一般系统只需满足最终一致性,最终一致性有几下几种常见变种:因果一致性、读已之所写、会话一致性、单调读一致性和单调写一致性。cap理论演化出Base理论,是工业界对分布式系统实践的总结,其核心思想是即使无法达到强一致性,也要保证满足最终一致性。 阅读全文
posted @ 2019-05-09 00:18 golang架构师k哥 阅读(1178) 评论(0) 推荐(1) 编辑
摘要: 大部分人在用开源软件的时候,并不知道一个优秀的开源软件内部是如何启动起来的,本文通过分析redis启动过程的源码,来学习优秀软件的启动过程 阅读全文
posted @ 2019-03-18 23:47 golang架构师k哥 阅读(1581) 评论(0) 推荐(2) 编辑
摘要: Redis常用数据类型有字符串String、字典disct、列表List、集合Set、有序集合SortedSet,List常用于获取最新topN条新闻等类似问题和生产者消费者模式,集合set可以求对象的共同标签,而有序集合SortedSet用于游戏中的分数排名,SortedSet底层采用压缩列表ziplist及跳表skiplist实现,本文会对ziplist和skiplist的概念及优点进行详细介绍,并通过剖析redis源码来深入理解。 阅读全文
posted @ 2019-02-24 21:44 golang架构师k哥 阅读(1374) 评论(1) 推荐(3) 编辑
摘要: Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。 按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下: 计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁盘IO计数器等。 跟踪:跟踪会收集每一个事件的具体数据,由于跟踪捕获事件数据需要消耗CPU且需要较大的存储空间储存收集数据,默认不开启。日志就是一种低频率的跟踪,会记录事件数据。 剖析:对目标采样或快照来归纳目标特征,如:CPU使用率,通过对程序计数器采样(一种寄存器,用于指示下一条指令的地址),跟踪栈找到消耗CPU周期的代码路径。剖析也可以通过非计时的硬件事件,如CPU硬件缓存未命中或总线活动,这类信息可以帮助开发人员针对系统资源的使用来优化自己的代码。 本文会对基于计数器原理的系统级linux性能工具做介绍,详细说明其用法及数据来源,后续会对进程级及基于其它原理的工具做介绍。 阅读全文
posted @ 2019-01-27 22:06 golang架构师k哥 阅读(1485) 评论(2) 推荐(1) 编辑
摘要: mysql是使用最广泛的开源关系数据库之一,大多数开发人员只会简单的用sql语句操作数据,而不理解服务端架构和sql查询语句在服务端的执行过程,本文会从sql语句执行路径来介绍mysql服务端架构,包括连接器,查询缓存,分析器,优化器等。 阅读全文
posted @ 2018-12-12 20:15 golang架构师k哥 阅读(910) 评论(0) 推荐(1) 编辑
摘要: CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线程切换及中断切换,进程切换的开销较大,除了需要保存寄存器和程序计数器中的值还需保存全局变量、栈等到内存中,以便下次运行恢复,而同一进程中的线程切换开销会小很多,只需更新寄存器和线程独有的栈,共享资源如打开的文件、全局变量等无需切换,当硬件中断发生时,比如键盘输入了字符,就会触发中断切换,打断程序的执行而去运行中断处理程序。当系统性能下降,可以用vmstat查看系统整体的cpu切换情况,接着用pidstat -w -t 定位到具体切换较频繁的线程。 阅读全文
posted @ 2018-12-02 15:34 golang架构师k哥 阅读(1361) 评论(0) 推荐(1) 编辑
摘要: linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的进程数目,用uptime查看到负载很高,既有可能是CPU利用率高,也可能是大量在等待io的进程导致,用mpstat查看每个CPU的使用情况,查看CPU的使用率或者CPU花在等待io的时间,接着用pidstat定位具体的进程 阅读全文
posted @ 2018-11-29 07:56 golang架构师k哥 阅读(3816) 评论(0) 推荐(1) 编辑
摘要: 迭代器模式及其在python中的实现 阅读全文
posted @ 2018-11-25 21:42 golang架构师k哥 阅读(531) 评论(0) 推荐(1) 编辑