随笔分类 -  踏莎行·术

摘要:网上并不缺少告诉你 “采取行动” 的内容,很大程度上,它们希望你忘记学习并专注于行动。这些帖子的出发点也许是善意的,但并非事情的全貌。 光学习不行动是没用的,但只行动不学习同样如此。程序员是知识工作者,这意味着学习是我们工作的必要部分,然而这需要我们去创造学习机会,关键在于平衡。 如果你屁股一坐在那 阅读全文
posted @ 2019-01-03 20:31 mindwind 阅读(994) 评论(1) 推荐(3) 编辑
摘要:最近线上碰到一点小问题,分析其原因发现是出在对 RPC 使用上的一些细节掌握不够清晰导致。很多时候我们做业务开发会把 RPC 当作黑盒机制来使用,但若不对黑盒的工作原理有个基本掌握,也容易犯一些误用的微妙错误。 虽然曾经已经写过一篇 "《RPC 的概念模型与实现解析》" 从概念模型和实现细节上讲述了 阅读全文
posted @ 2016-12-25 20:59 mindwind 阅读(5843) 评论(6) 推荐(1) 编辑
摘要:近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是模糊的知道大概是更安全,但到底怎么变得更安全的,实际上整个细节和流程并没有掌握的特别清晰。 所以这篇 阅读全文
posted @ 2016-11-20 22:21 mindwind 阅读(2523) 评论(5) 推荐(6) 编辑
摘要:今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的。 站在这个角度而言,实际上并非所有的业务都能做去中心化设计,对于一致性要求越高的业务去中心化越难做。比如电商领域的库存就是一个对一致性要求很高的业务, 阅读全文
posted @ 2016-08-01 21:08 mindwind 阅读(4648) 评论(1) 推荐(5) 编辑
摘要:又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性、稳定性和管控性等方面的非功能需求。大促前的准备工作一般叫作「备战」,可以把线上运行系统想象成一辆车,大促即是它即将面临的一次严峻驾驶考验。 每次去长途自驾旅行时,我会把车送去对车况 阅读全文
posted @ 2016-06-26 22:49 mindwind 阅读(1112) 评论(3) 推荐(4) 编辑
摘要:今天分布式应用、云计算、微服务大行其道,作为其技术基石之一的 RPC 你了解多少?一篇 RPC 的技术总结文章,数了下 5k+ 字,略长,可能也不适合休闲的碎片化时间阅读,可以先收藏抽空再细读:) 全文目录如下: 定义 起源 目标 分类 结构 模型 拆解 组件 实现 导出 导入 协议 编解码 消息头 阅读全文
posted @ 2016-05-22 22:41 mindwind 阅读(11681) 评论(14) 推荐(18) 编辑
摘要:作为后端应用的开发者,我们经常开发、调试、测试完我们的应用并发布到生产环境,用户就可以直接访问到我们的应用了。但对于互联网应用,在你的应用和用户之间还隔着一层低调的或厚或薄的负载均衡层软件,它们不显山不露水默默的发挥着重要的作用,以至于我们经常忽略了它们的存在。因为负载均衡层通常不在一般开发人员的问 阅读全文
posted @ 2016-03-31 00:54 mindwind 阅读(13518) 评论(12) 推荐(40) 编辑
摘要:一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前。 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文《拜占庭将军问题》(参考[1])。 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队 阅读全文
posted @ 2016-03-01 22:02 mindwind 阅读(66978) 评论(31) 推荐(30) 编辑
摘要:最近碰到一些 SSL 的小问题,特记录下。 我们有个 Java 实现的 SSL TCP 服务端,为客户端(PC、Android 和 iOS)提供 SSL 接入连接服务。最近有用户反馈其手机上 App 不能正常连接登录,别人手机上都可以。经过单独回访调查该用户使用的手机操作系统是 Android 6. 阅读全文
posted @ 2016-02-16 16:46 mindwind 阅读(2685) 评论(8) 推荐(2) 编辑
摘要:技术若只如初见,那么还会踩坑么? 在系统引入 MongoDB 也有几年了,一开始是因为 MySQL 中有单表记录增长太快(每天几千万条吧)容易拖慢 MySQL 的主从复制。而这类数据增长迅速的流水表,对数据一致性也没那么高要求,而且业务上也不需要关联查询它,就考虑分出去。为什么是 M... 阅读全文
posted @ 2016-01-18 20:45 mindwind 阅读(2997) 评论(4) 推荐(4) 编辑
摘要:之前一篇写了关于 Redis 的性能,这篇就写写我认为比性能更重要的扩展性方面的主题。 如果再给我一次回到好几年前的机会,对于使用 Redis 我一开始就要好好考虑将来的扩展问题。就像我们做数据库分库分表,一旦决策了分库分表,通常一次就会分到位,比如搞上 8 或 16 个库,每个库再分 25... 阅读全文
posted @ 2016-01-04 23:47 mindwind 阅读(3612) 评论(6) 推荐(7) 编辑
摘要:2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求。另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的开源产品。但 Redis 官网宣称其是提供多数据结构的高性能存储,我们对其还是抱有幻想的。 ... 阅读全文
posted @ 2015-12-22 20:29 mindwind 阅读(41050) 评论(24) 推荐(44) 编辑
摘要:咚咚是什么?咚咚之于京东相当于旺旺之于淘宝,它们都是服务于买家和卖家的沟通。 自从京东开始为第三方卖家提供入驻平台服务后,咚咚也就随之诞生了。 我们首先看看它诞生之初是什么样的。 1.0 诞生(2010 2011) 为了业务的快速上线,1.0 版本的技术架构实现是非常直接且简单粗暴的。 如何简单粗暴 阅读全文
posted @ 2015-12-03 21:05 mindwind 阅读(34925) 评论(100) 推荐(211) 编辑
摘要:MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约。 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性、一致性和避免冲突。对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避。双主双写并同... 阅读全文
posted @ 2015-11-25 09:38 mindwind 阅读(9891) 评论(1) 推荐(2) 编辑
摘要:前文 "《MySQL 数据库事务与复制》" 分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致性,本文进一步分析引入从库后需要保证主从的数据一致性需要考虑哪些方面。 原生复制架构 MySQL 的原生复制架构原理如上图所示。从库的 I/O Thread 线程负责... 阅读全文
posted @ 2015-11-18 10:14 mindwind 阅读(3153) 评论(1) 推荐(1) 编辑
摘要:好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适。 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类。 结合实际工作中碰到的问题,以寻找答案的方式来剖解技术,很多时候我们都不是在创造新技术,而是在应用技术。 为了更有效率与效果的用好技术,... 阅读全文
posted @ 2015-11-03 22:06 mindwind 阅读(3228) 评论(4) 推荐(5) 编辑
摘要:后端分布式系列」前面关于 HDFS 的一些文章介绍了它的整体架构和一些关键部件的设计实现要点。 我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实现的。 然后呢,我就去把 GFS 的原始论文找出来仔细看了遍,GFS 的整体架构图如下: HD... 阅读全文
posted @ 2015-10-13 20:36 mindwind 阅读(4397) 评论(0) 推荐(4) 编辑
摘要:在前面的文章 《HDFS DataNode 设计实现解析》中我们对文件操作进行了描述,但并未展开讲述其中涉及的异常错误处理与恢复机制。本文将深入探讨 HDFS 文件操作涉及的错误处理与恢复过程。读异常与恢复读文件可能发生的异常有两种:读取过程中 DataNode 挂了读取到的文件数据损坏HDFS 的... 阅读全文
posted @ 2015-09-02 10:26 mindwind 阅读(10350) 评论(0) 推荐(3) 编辑
摘要:前面对 HDFS NameNode 和 DataNode 的架构设计实现要点做了介绍,本文对 HDFS 最后一个主要构成组件 Client 做进一步解析。流式读取HDFS Client 为客户端应用提供一种流式读取模型,就像访问本机文件系统一样来访问 HDFS。将复杂的分布式文件系统读取细节隐藏,简... 阅读全文
posted @ 2015-09-01 15:55 mindwind 阅读(1819) 评论(0) 推荐(0) 编辑
摘要:前文分析了 NameNode,本文进一步解析 DataNode 的设计和实现要点。文件存储DataNode 正如其名是负责存储文件数据的节点。HDFS 中文件的存储方式是将文件按块(block)切分,默认一个 block 64MB(该大小可配置)。若文件大小超过一个 block 的容量可能会被切分为... 阅读全文
posted @ 2015-08-26 10:29 mindwind 阅读(2158) 评论(0) 推荐(0) 编辑