货币、信贷与债务
FROM:https://mp.weixin.qq.com/s/h14q5BVSSWsNgU5K6bMEVw 货币系统:大多数货币和信贷(尤其是现存的法币)并无内在价值。所有货币要么被摧毁,要么贬值。而当这发生时,财富就会以一种浩荡的方式转移,从而在经济和市场中产生巨大的反响。然而,拥有储备货币的国家更容易摆脱大量借贷(即创造信贷和债务)或者发行巨额货币的窘境,因为储备货币可用于世界各地的支出,所以其他国家倾向于持有这些债务。 经济周期由短期债务周期和长期债务周期构成 短期债务周期:通常持续8年左右,或多或少。时机取决于“兴奋剂”将需求提高到实体经济生产能力极限所需的时间。与短期债务周期相比,长债务周期需花费我们一生时间才会完成,因此大部分经济学家在内的大众根本没有意识到长期债务周期的存在。 长期债务周期:通常持续约50至75年。 拥有储备货币地位对国家意义重大,相对于美国经济规模而言,其规模是巨大的。 2008年以来,央行在MP2(QE)的基础上开启了MP3的新范式 ,这意味着具有储备货币的中央银行创造货币和信贷的能力几乎没有或没有限制。 当一...
世界财富与权力大转移背后的规律
FROM:https://mp.weixin.qq.com/s/o1lxndz0UtI_Websf-WDPw 财富和权力的大幅波动是由多达17种主要因素引起的,最重要的是货币和信贷周期,贫富差距周期和全球地缘政治周期。这些强大的力量通常以经典的周期汇聚在一起,这些经典的周期以相互补充的方式趋向于形成一个非常大的起伏周期,并在整个历史中反复出现。这个庞大的周期范式(archetypical cycle)控制着帝国的兴衰。 在多种因素引导着历史更迭和全球周期起伏,暗中发生着国家间财富和权力转移。这种转移往往会被人忽略,因为虽然财富和权力的转移在历史长河中属于白驹过隙,但对个体有限的寿命而言是长达十余年潜移默化的改变。我们如今正在经历相对财富和权力的范式迁移(archetypical big shift in relative wealth and power),并且随着这种变化,我们将见证世界秩序的深刻变化给所有国家造成的影响。 历史上,几乎所有大国都经历了崛起期、全盛期和衰弱期。而在每一个国家的周期中,不同因素的影响总是相辅相成,其中教育永远是领先指标,而储备货币地位的...
Ray Dalio - 变化的世界格局与宏观周期
FROM:https://mp.weixin.qq.com/s/zdF7d-MvpmNAj4tnxD2Cdg 为什么要关注全球历史的大趋势:每个人一生都只能够经历宏观周期中一小部分,因此时而会对长达50-70年大周期视而不见。而通常人生中最大机遇和失误,往往来自于错过了“人生中没有发生过,但在历史当中反复重演”的市场信号。 历史上重要事件由三大力量所驱动:长期货币和债务周期、国内财富与权力周期、国际财富与权力周期。三种力量往往相互融合、相互促进,共同决定了国家和全球的经济政治走势。 本系列重点关注世界舞台上长袖善舞的大国:主要包括3个储备货币国家:荷兰,英国和美国,以及其他6个重要大国:德国,法国,俄罗斯,印度,日本和中国。这些具体个例将提炼出历史反复发生的典型范例。 回看历史,有3个对经济整体趋势至关重要的事件: 经济增长困局:全球经济体的高负债率(high level of indebtedness)+低利率,将会极大程度限制全球各大央行刺激经济增长的能力; 内部冲突:各国家内部巨大的贫富差距与相应的政治分歧,带来了不断恶化的内部社会与政治冲突; ...
MySQL 的 MGR
MySQL 高可用架构的历史 MySQL 自带的主从复制机制,本身并不能实现自动高可用。 早期使用开源组件来搭 MySQL 集群的方案,使用 MMHA。当代 MySQL 官方自己主推的方案是 MySQL cluster。这些老的方案,优先保证MySQL服务的持续可用,在异常切换情况下,可能出现主机上部分数据未能及时同步到从库,造成主从切换后数据丢失。但是包括金融支付在内的一些业务,对于数据库服务既要求持续可用、也要求数据强一致(可以在性能上做出一些让步)。 因此,当代的 MySQL 官方提供了组复制(MySQL Group Replication)的方案,构建了新一代的 MySQL 高可用强一致服务。 Master-Slave(MS)架构高可用概述 MS架构高可用基础 高可用MySQL是依赖复制(Replication)技术实现的,复制解决的基本问题就是,让一台数据库服务器的数据同步到其它服务器上。MySQL数据库的复制有如下三个步骤。 在主库上把数据更改记录到二进制日志(Binary Log)中(这些记录被称为二进制日志事件)。 备库将主库上的日志复制到自己的中继日志(...
秒杀通用解决方案
秒杀的实质 秒杀的实质,是围绕库存管理展开的并发读写 如果架构设计里面包含商品系统,包含库存,秒杀就要解决库存热点行高并发读写问题。 秒杀的底线是:不能超卖。qty库存 ≥ qty卖出 && qty库存 - qty卖出 ≈ 0。 秒杀能够容忍的一些思路:渐进趋于一致,允许漏卖。 秒杀架构的特性 高性能:秒杀架构要承载的访问流量比平时高出许多倍,涉及大量的并发读和并发写,因此支持高并发访问非常关键。 一致性:秒杀活动中有限数量的商品在同一时刻被很多倍的请求同时扣减库存,在大并发更新的过程中要保证数据准确,不能发生超卖的问题(超卖,本来应该卖完下架的商品,在前台展示依然有库存,依然不停的被卖出),即库存是多少,理应卖出多少(qty库存 ≥ qty卖出 && qty库存 - qty卖出 ≈ 0)。 高可用:秒杀架构虽经多次打磨优化,但现实中总难免出现一些考虑不到的情况,要保证系统的高可用,还要设计一个兜底预案,以便在最坏的情况发生时仍能从容应对。 秒杀技术难点 在有限的资源下,秒杀链路承载合理的最大流量。 大并发下扣减库存准确,“一致性...
计算的本质
本文是对 Tom Stuart 所著《Understanding Computation》一书核心概念的梳理与延伸,围绕两个主题展开:程序语义的形式化描述方法,以及计算模型的层次分类。 语义 程序的"含义"(meaning)可以通过不同的形式化方法来定义。这些方法统称为形式语义学(formal semantics),主要分为以下几类。 小步语义(Small-Step Semantics) 小步语义也称为结构化操作语义(Structural Operational Semantics, SOS),由 Gordon Plotkin 提出。其核心思想是:定义一组规约规则(reduction rules),每次只对表达式做一步化简,逐步迭代直到得到最终值。 例如,对表达式 (1 + 2) * 3 的求值过程: 123(1 + 2) * 3→ 3 * 3 # 先规约子表达式 1 + 2→ 9 # 再规约乘法 小步语义的优势在于能够精确描述求值的每一个中间状态,适合分析程序的执行顺序、副作用和并发行为。 大步语义(Big-Step Se...
关于编程语言的typing(一些基本概念)
编程语言的类型系统(Type System)是语言设计中最核心的决策之一,它直接影响代码的安全性、表达力和开发体验。类型系统的分类并非简单的二元对立,而是由多个正交的维度组成。 本文整理自 Reddit 上一篇经典的类型系统分类讨论(原文链接),并在此基础上做了扩展和补充。 类型系统的四个正交维度 维度一:Static vs Dynamic Typing(静态类型 vs 动态类型) 区分的关键点:类型检查发生在编译期还是运行期。 静态类型(Static Typing):变量的类型在编译期确定,类型错误在编译阶段就能被发现。编译器可以利用类型信息进行优化。 动态类型(Dynamic Typing):变量的类型在运行期确定,同一个变量可以在不同时刻持有不同类型的值。类型错误只有在运行到相关代码时才会暴露。 分类 代表语言 特点 静态类型 Java、Scala、Haskell、Go、Rust 编译期发现类型错误,IDE 支持好 动态类型 Ruby、Python、Erlang、JavaScript 开发灵活,但类型错误延迟到运行期 渐进类型(Gradual T...
纪要
无人区 所有伟大的创新、公司和企业家都不是在既有经验、已有成果之上取得的成绩,而是在毫无经验、毫无基础、毫无积累的状态下取得成功。 所有伟大的机会都来自于未来、来自于未知,而非来自于既有。 什么叫逆向思维?在大家恐惧的时候,你需要乐观,在大家都是乐观的时候,你可能要恐惧,类似于古人曾提及的“乐极生悲,否极泰来”,其实讲的就是这个道理。大众的一个惯性思维是“追涨杀跌”,在大家都认为情况乐观的时候,会引发人们跟风模仿。曾有人以投资为例,大部分老百姓并不懂得投资规律,当看见一堆人跟风投资的时候,你就要非常谨慎,这时候可能正是风险来临的时候。 所以,对我们来讲,在遇到困难时,我们要去思考这件事为什么困难,这困难会持续多久?它是在正确轨迹上的一个困难;还是说这个业务面临一些根本性的挑战,需要一个巨大的变革;还是这条路本身就是一个死胡同?当处于乐观状态时,我们要思考这种乐观状态是否可持续,未来需要做什么才能让这种增长得以保持。历史的无数经验表明,所有的发展都是一种波浪式的发展。可以看到,我们有时候处在一个波浪的波谷,有时候处在一个波浪的波峰,更重要的是,我们要去识别这种波浪是否在逐步升高,而...
HATP 问题
问题定义 AP 的出现 在互联网浪潮出现之前,企业的数据量普遍不大。通常一个单机的数据库就可以保存核心的业务数据。那时候的存储并不需要复杂的架构,所有的线上请求(OLTP, Online Transactional Processing) 和后台分析 (OLAP, Online Analytical Processing) 都跑在同一个数据库实例上。后来业务越来越复杂,数据量越来越大,产生了一个显著问题:单机数据库支持线上的 TP 请求已经非常吃力,没办法再跑比较重的 AP 分析型任务,在这样的大背景下,于是AP开始从TP系统分离,某种程度上,AP是TP的一个分支。 这等于是在存储层做 CQRS 架构设计-另一种方案是在应用层也设计读写分离的架构。 AP 的玩法 在这样的背景下,以 Hadoop 为代表的大数据技术开始蓬勃发展,它用许多相对廉价的 x86 机器构建了一个数据分析平台,用并行的能力破解大数据集的计算问题。 AP 系统的典型技术栈演进: 阶段 代表技术 特点 第一代 Hadoop MapReduce + Hive 批处理,延迟高(分钟到小时级) 第二...
《恰如其分的软件架构》
前言 这两周集中时间间歇性读完了《恰如其分的软件架构》这本书。这本书讲的是架构方法,架构方法是一种思维模型(mind set),这种思维模型叫作“风险驱动模型”。 这本书经我们团队的架构师推荐,列在我们团队的集体书目里很久了。但真正去读它、读完它的人又很少。究其原因,还是这本书的内容以谈概念为主,虽然书中举的例子非常生动,仍然始终无法摆脱“为了谈概念而举玩具例子”的问题-这几乎是所有架构书的通病。似乎正统的架构书籍都不可避免地举一些传统行业或者经典软件(比如很多书籍都会反复出现在“xxx 播放器”)的例子。这些软件架构非常经典,可以只用一些小的组件、场景,就讲清楚典型的组件、模式和架构风格的用处。但没有很深的工程/架构经验的读者读这些书的时候,仿佛重新回到了抄书和念书的大学课堂,对于脱离现实的例子只会产生“左耳进右耳出”的感觉。能够温故而知新,是一本书经典化的特征。而能够阅读非入门级的纯理论书籍,则是一个程序员的认知能力和经验达到了一定程度的特征。我读这本书里很多细节还是很痛苦,证明我还是对于形式化的符号(symbol)、记法(notion)还不是很熟悉,而且对于书中运用的问题解...















