《恰如其分的软件架构》
前言 这两周集中时间间歇性读完了《恰如其分的软件架构》这本书。这本书讲的是架构方法,架构方法是一种思维模型(mind set),这种思维模型叫作“风险驱动模型”。 这本书经我们团队的架构师推荐,列在我们团队的集体书目里很久了。但真正去读它、读完它的人又很少。究其原因,还是这本书的内容以谈概念为主,虽然书中举的例子非常生动,仍然始终无法摆脱“为了谈概念而举玩具例子”的问题-这几乎是所有架构书的通病。似乎正统的架构书籍都不可避免地举一些传统行业或者经典软件(比如很多书籍都会反复出现在“xxx 播放器”)的例子。这些软件架构非常经典,可以只用一些小的组件、场景,就讲清楚典型的组件、模式和架构风格的用处。但没有很深的工程/架构经验的读者读这些书的时候,仿佛重新回到了抄书和念书的大学课堂,对于脱离现实的例子只会产生“左耳进右耳出”的感觉。能够温故而知新,是一本书经典化的特征。而能够阅读非入门级的纯理论书籍,则是一个程序员的认知能力和经验达到了一定程度的特征。我读这本书里很多细节还是很痛苦,证明我还是对于形式化的符号(symbol)、记法(notion)还不是很熟悉,而且对于书中运用的问题解...
Journal 与 EBS
EBS 的定义 EBS — Elastic Block Storage,简言之就是高可用、高性能、弹性可扩展的分布式块存储服务。对于业务来说,它就是一块磁盘,只不过将业务数据存储于远端网络节点,但是使用方法和体验与访问本地磁盘一样。 EBS 可以作为容器的存储盘,可以解决: 有状态容器的状态存储问题 海量存储问题:邮件系统、监控平台、数据库、用户录音、集成测试平台、MySQL 备份(需要测试 OLTP/OLAP 的交互操作和在线交易性能) EBS 的文件系统结构 在EBS分布式块存储系统中,最终存储业务写入数据的服务是ChunkServer。 单机存储引擎位于每个ChunkServer上,业务的数据读写请求到达ChunkServer后,最终通过单机存储引擎与操作系统文件系统交互来写入或读取数据。 业务申请的每一块ebs网络盘在我们的系统里都对应一个Volume。Volume本身是一个逻辑概念,每个Volume被切分成多个Chunk,Chunk最终对应到ChunkSever上文件系统中的一个真实文件,因此我们的单机存储引擎最终会管理这一系列Chunk文件的创建,读写,删除等操作...
构建 spring-framework
介绍下使用到的 Gradle 工具 《一篇文章讲清楚Gradle与Gradle Wrapper的区别》 comments: Gradle Wrapper 提供了一种“在本地构建中,使用特定版本的 Gradle 进行构建”的功能。 换言之,对于大多数敏捷迭代的项目而言,应该选择 ./gradlew clean build,而不是 gradle clean build。这样不会遇到 pluginManagement 之类的问题,这样说来,每个项目都是自构建的。 要么 IDE(像 Android Studio)自带 gradle wrapper,要么项目自带一个 gradle/wrapper 文件夹,这个文件夹里指定了 gradle-wrapper.properties。 这个命令专门指定了特定版本的 gradle。-all.jar、-bin.jar、-src.jar 分别代表不同的包。 gradlew是在linux,mac下使用的,gradlew.bat是在window下使用的,提供在命令行下执行gradle命令的功能。-这种 w 的中间层策略,值得我们学习。 每个项目本身都带有特...
云原生应用
弹性问题 弹性服务最好和监控服务、限流服务配合。 弹性服务的监控最好低于限流服务的阈值,否则不会被触发。 要注意扩容阈值和缩容阈值。如果有必要,设置阶梯阈值,离正常值越远的阶梯越不敏感,离正常值越近的阶梯越敏感。阶梯越远,弹性的量应该越大。 注意弹性有静默期,注意发布和弹性静默期之间是相互矛盾的,要相互关闭。 如果有压测标记,注意让弹性扩容监控包括/排除压测流量。 任务调度或者特殊的有状态的中间件依赖的分布式节点应该尽量避免弹入和弹出。 慢预热服务-扩容机器服务可用性差问题 极少部分依赖缓存预热的业务在接入弹性的过程中,在业务代码配置不合理的情况下,可能出现服务节点启动时服务不可用或性能较差的情况。 出现这种问题可以产生如下情况: 服务节点启动后尚未完全预热,大量流量打入导致服务不可用(TP耗时飙升)。 服务依赖数据源尚未初始化完成,服务节点就已注册至服务治理的命名服务器,开始承担流量,但此时服务处于不可用状态(请求异常)。 机器刚刚扩容出来时cpu.busy指标较高,承接流量后影响服务可用性。 此类问题的根本原因是:服务自身预热工作未完成时,处于服务不可用状态,此时不应...
活动保障性体系建设和实践的总结
大促规划.xmind 活动的定义和特点 活动具有大并发、高流量的特点,前期充足的准备是活动顺利完成的必要条件。 准备好完备的保证流程,可以为相关人员提供指引。 基本的保障方案 事前:严格按照保障步骤分工执行,活动要报备,核心链路要梳理,梳理完要评估容量和准备,要治理风险,要准备预案,要建设大盘,准备压测和演练预案,要安排值班。 事中:相关责任方(要分技术负责人和运维负责人,召集相关人员,组成稳定性保障小组)监控线上数据,以线上/线下会议、群聊和电话等多个方式参与值班并及时响应异常事件。 事后:组织复盘,总结亮点,指出不足,沉淀经验。 活动报备 要理清活动信息:活动背景、活动时间、用户参与路径、活动链接、活动 玩法、预计UV数、负责人。 核心链路的设计与梳理 核心链路的梳理、设计需和活动保障的几个核心要素相结合,核心要素分为:隔离、限流、容量。 隔离:域名隔离、Nginx集群隔离、核心服务隔离、以及其他一些重要服务的隔离。 限流:前端活动业务限流、Nginx限流(HTTP限流)、服务限流(RPC)等。特别要关注接入层的限流能力和方案。 容量:从域名解析到后端存储的系列容量评...
服务治理组件笔记
背景 service-centric architecture 以服务为中心的架构,和 SOA 的区别是? 服务治理的模式 server-side pattern:容易集中管控,易单点失败。 client-side pattern:不容易集中管控,不易单点失败。 演化流程 基础治理能力:通信协议统一、命名服务的统一、监控预警、运营平台 高性能/易用性:通信框架高性能/通信框架轻量化/分布式链路追踪/测试工具可视化 全方位的治理能力:全链路压测平台/深度服务化 SOA/链路级流量治理/易用化平台构建 业界前言探索:SET 化高扩展架构/云原生架构治理 治理体系 该有的治理能力都要有。 注册中心 服务注册 服务概要 提供者 消费者 监控报警 节点监控 性能监控 业务监控 异常监控 服务运营 配置管理 服务分组 节点管理 服务鉴权 数据分析 性能指标 来源去向 主机分析 数据报表 调用链路 关键组件-本地代理 比如 LocalAgent,能够做到:策略下沉,解耦功能,对业务服务侵入性低。 但 Provider/Consumer 还需要使用自己的 sdk,它和远端的 ...
《罪與罰》出場人物筆記
版权归作者所有,任何形式转载请联系作者。 作者:二阶导(来自豆瓣) 来源:https://www.douban.com/note/635771361/ 這篇筆記按照目前小說的兩位主線人物,即 拉斯柯爾尼科夫 和 馬爾梅拉多夫 兩家人作爲主軸進行區分,隨着劇情的推進,此結構可能會進行調整。 拉斯柯爾尼科夫 相關 1 羅季昂 · 羅曼諾維奇 · 拉斯柯爾尼科夫 Rodion Romanovich Raskolnikov (Родиóн Ромáнович Раскóльников) 小名叫做羅佳 (Rodya),或是叫做羅季昂,羅季卡 (Rodka),窮困潦倒的法律系大學生,男主角 拉斯科爾尼科夫 Raskolnikov 中的 Roskol 意為「分裂」①,指俄罗斯正教会的教派分裂事件② 2 阿芙多季婭 · 羅曼諾芙娜 · 拉斯科爾尼科娃 Avdotya Romanovna Raskolnikova (Авдотья Романовна Раскольникова) 小名叫做杜尼婭 (Dounia),或是叫做杜涅奇卡 (Dunechka),拉斯科爾尼科夫的親妹妹 3 普利赫利婭 · ...
《今日简史》
本书不同于《人类简史》和《未来简史》,是探讨当下的重要议题和全球化的议题。其实顶层的议题,和每个人的切身命运,是息息相关的。这本书其实是 21 世纪的 21 堂课,有内部重复的内容。 在自由主义的故事已经失去解释现实的能力的时代,知识分子的头脑已经对现实产生了无力感。自由主义作为灵丹妙药,曾经成为历史唯一正确的一边,但现在已经没有了正确的一边。甚至有些人认为特朗普的当选是人类文明的终结,自由化和全球化是一个巨大的骗局。 当今的信息技术革命和生物技术革命,使得自由主义政治体系无从招架。因为现在的技术革命拥有的爆炸性潜力难以规范。算法的存在可能使得金融体系难以被理解,而区块链的存在可能使货币改革,税制失效(当代法币能够存在的经济学基础之一就是:政府强制征税,而且强制税收用货币缴纳)。未来,信息可能成为经济体系里面最重要的资产,也是在大量交易中唯一交付的东西。 信息技术和生物技术的发展,可以帮助我们改造我们的身体和思想。 人类发明工具很简单,使用工具却很复杂-困难。人类在无意之中获得改造地球的能力的同时,也在无意地破坏地球的生态。 特朗普当选和英国脱欧,意味着身处世界自由主义中心地带...
《未来简史》
这本书厉害就厉害在,15%以上的内容都是引述的资料,可谓旁征博引。 人类历史上有过以下几个危机:饥荒、瘟疫和战争,都已经被现代文明部分战胜了(或者,至少已经在正确的道路上取得可观胜利了)。 人类已经可以追求长生。现代文明的特点是让人追求快乐。人虽然没有必然享受快乐的权利,但有追求快乐的权利。(智)人类可以通过生物工程、半机械人工程和非有机生物工程,往神迈进。我们得到了神的创造力和破坏力,就可以成为神。神并不全知全能,也不是某种形而上的特质,神意味着超生物的能力。 伊壁鸠鲁告诫自己的门徒,过度追求快乐是危险的。佛教徒认为,追求快乐是痛苦的。快乐本身是来去不定的东西。 21 世纪,人类作为一个整体,将追求长生不死、快乐和神性。 知识很容易过时,它只要一改变行动,就会立刻过时。所以用知识指导和预测未来是徒劳的。马克思透彻地研究了资本主义的历史,但他的理论被资本家研究,于是工人引发的革命没有如预期般出现。 在俾斯麦的时代,设计国家福利是为了让国民忠于国家。 研究过去的目的,是为了从过去中解放出来。 草坪是中世纪晚期英法贵族在自家城堡门口养成的习惯。草坪毫无实用价值,却有维护成本,因此成...
《人类群星闪烁时》
本书是历史特写,忠于历史,文辞优美,写出了历史关头,人物的选择。 到不朽的事业中寻找庇护(不朽的逃亡者):1513年9月25日,富有冒险精神的西班牙巴尔沃亚随船到达南美洲,去开拓和寻找财富,他不仅挤走了整支队伍的主人,还赶走了新派来的总督。但是,被他赶走的船队主人却回到了西班牙,向西班牙宫廷举报了他的恶劣行为。为了避免西班牙宫廷的惩罚,他决定率先去寻找南美大陆的财富,以此来庇护自己的安全,在艰苦的旅途之中,他成为了第一个看到太平洋的文明中的人类,并且他知晓了不远的国度中还有存有无限黄金。而就在此时,他的朋友皮萨罗为了抢夺功劳背叛了他,联合国王派下的新总督一起将其暗算 [1] 。 拜占庭的陷落:1453年5月29日,奥斯曼土耳其帝国苏丹穆罕默德二世攻占东罗马帝国最后的堡垒:君士坦丁堡,经过数次激战始终不见成效,此时这位天才皇帝想出一幕惊险之棋,将战船从陆地运送到拜占庭防守薄弱的靠海一隅,最终因为拜占庭疏忽的一座小门–凯尔卡门的发现,奥斯曼帝国毁灭了拜占庭这一人类文明的精华。 亨德尔的复活:1741年8月21日,落魄而江郎才尽的作曲家亨德尔突然在一首诗中找到灵感,写下了...