分布式事务
问题定义对经典的电商场景而言:下单是个插入操作,扣减金额和库存是个更新操作,操作的模型不同,如果进行分布式的服务拆分,则可能无法在一个本地事务里操作几个模型,涉及跨库事务。 CAP 定义根据 Eric Brewer 提出的 CAP 理论: Consistency:All Nodes see the same data at the same time。所有节点看到同一份最新数据(线性一致性)。 Availability:Reads and writes always succeed。非故障节点必须在合理时间内响应。 Partition tolerance:System continues to operate despite arbitrary message loss or failure of part of the system。网络分区时系统继续运行。 由此诞生三种设计约束和取舍方向: CA:放弃P,仅适用于单点系统,非分布式,如 MySQL主从同步。 AP:放弃强一致性,保证高可用。Cassandra,DynamoDB。Gossip协议可实现最终一致性。 CP:放...
函数缓存 memoize
12345678const memoize = pureFunc => { const cache = {}; return function() { const argStr = JSON.stringify(arguments); cache[argStr] = cache[argStr] || pureFunc.apply(pureFunc, arguments); return cache[argStr]; };};
读书--拓展你的认知边界
新的书在不断打破认知边界,以前都是机械的方法论世界观的书,现在出了打通一切关于进化的书。 如何读书?#《如何阅读一本书》,《快速阅读》。 如何选书?跟主题,跟作者,跟大牛。不要看编著的书。李善友的书单。 怎么有时间去看书?亚马逊的推荐比京东准。找固定板的时间看书。 Kindle 电子书和纸板书怎么选?精华书都买 实在没时间,怎么办?#樊登读书会得到 听书 从哪里开始从扉页来判断,从序言来判断一下。 读书最好抛弃论据和论证,而要寻找宏旨。 听书完,还是要自己看。
JSX
简介 JSX 是点缀着 XML 元素的 JavaScript。它是由 React 这个库最初构思出来的,但又不是专门为了某个库或者框架设计的。它是一种 DSL。 JSX 是 html in JavaScript 的一种很好体现。这里的 XML,实际上还是 html 元素。粗略看下来,和当初 backbone 写 rendertemplate 的函数差不多。要引入 JSX 的语法,在很多场景下都要引入 Babel 这个 transpiler,也就是要搞到工具链满天飞。照抄官网的例子的话,可以看到: 12345678910111213141516171819<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <script src="vendor-js/react.js"></...
Docker 小笔记
记录一些特别容易遗忘的 Docker 知识细节 镜像实际上是文件夹,每个镜像命令会产生出单独的一层。我们删除文件不一定能够删得掉,可删除的文件也只是在联合文件系统里面增加一个“被删除层”。 容器像是集装箱。这通常是启动内部代理的一个方法。docker 寻求的解决方案不是虚拟化,而是进程间的软隔离。123456# 启动 docker 容器docker run -d -p 2222:22 --name 容器名 镜像名# -d 守护容器,就是后台运行,退出命令窗口容器也不会停止# -it 交互式容器 退出命令窗口容器就停止运行了# -p 宿主机端口和容器端口映射# 8081:80 宿主机端口: 容器公开的端口 Docker 同hypervisor的区别是,hypervisor总是起了多个内核。实际上阿里开源的容器技术 pouch,也是基于多 hypervisor 的。 docker inspect 既可以查看容器,也可以查看镜像。用以下的命令单独查看一个属性: 1docker inspect -f '{{.NetworkSettings.IPAddre...
虚拟机
虚拟机意味着单独的指令集体系结构(ISA Instruction Set Architecture)。
为什么要自建实时计算平台
为什么要自建一个离线平台 可以优化资源利用率。 业务平台应该把精力放在业务上。 什么是实时计算 强调响应时间短(相对于离线计算):毫秒级、亚秒级、秒级。T+1 的报表都是离线计算。 数据的价值随着时间的流逝而迅速降低。 常见技术方案: 流计算 + 实时存储 or 消息队列 流计算 + 实现 OLAP 什么是流式计算 实时且无界。 数据驱动计算,事件触发。 有状态及持续集成。 流计算引擎:Spark Streaming、Flink Streaming、Storm/JStorm、Samza 等。 Spark Streaming 模型 Micro-Batch 模式。看起来是流式处理的,实际上还是一小批一小批处理的。从批处理走到流处理。 最小延时:batch 的处理时间 最大延时:batch interval(通常2s-10s) + batch 处理时间。 使用场景:数据清洗(实时数据通道)、数据 ETL 等。 对于熟悉 Spark 批处理的 RD 非常容易上手。 Flink Streaming Native Streaming。 低延时,通常在毫秒级。 使用场景:事件驱动、...
Golang 并发的一些我自己才看得懂的总结
Goroutine 是绿色线程,下面自带调度器。可以在 syscall 进入阻塞状态的时候自动出让 CPU(类似 Java 在进入锁以前自动引入自旋,这实际上是一种抢占式调度—preemptive scheduling),也可以通过runtime.Gosched()主动出让 CPU,调度器还可能无缘由地主动抢占 Goroutine 的时间片(比如已经运行了10ms)。因为是绿色线程,所以可以很便宜地创造百万Goroutine。在 Go 1.5 以后,可以通过 GOMAXPROCS 来使用更多的逻辑 CPU(而不也是系统进程)来利用多核。主线程不是主线程,主线程也是一个 main goroutine。 Go 关键字基本就等同于 Java 中提交一个 Runnable 到 CompletableFuture 的 CommonPool。在没有 Channel 的帮助时,goroutine 几乎可以等同于一个绿色的守护线程。 Go 也是有 mutex 的,但是不提倡使用,用 channel 最好。 share memory by communicating。 channel 是通过描述...
Vim cheatsheet
比较好用的两个 vim 寄存器代码: 1234567#删除全部内容:%d# 在 vim 下,拷贝全部的代码:%y+# 在 mac 的 vim 下,拷贝全部的代码:%w !pbcopy
保险电销与互联网保险
保险电销的发迹史 电销在早期国内的常见渠道方式零售-求职-电视购物-保险-房地产-理财-催收-教育 人才从一个行业去到另一个行业。保险电销卖的保险业都在慢慢变化。 保险电销的发展历程 电销鼻祖—中美大都会人寿04年。先收集用户信息,然后再卖保险。 真正符合国际发展主流的电销—招商信诺。佣金模式很重要。 国内的保险电销为何逐步衰落。保险电销两三年后,坐席两三万很容易。职业瓶颈也出现了。 保险电销核心竞争力。 保险电销的流程 开场(黄金三十秒) 产品介绍 激发需求 核保 促成 成交确认 保险销售的套路 为客户创造需求。 如何激发你的保险需求。 如何未曾谋面判断你的财务状况。 如何让你冲动消费。 保险电销目前的机遇 结合互联网提升效率(互联网+电销) 健康险需求已经被激发,互联网模式有待考究,需要电销介入。 车险电销需要改变(系统智能化)。 由人海战术转变精英战术。 保险的逻辑 风险转移-保险可以解决风险的不确定性。愿意用确定的金额来为不确定性的风险买单。 保险的机制是独特的经济补偿机制。 有杠杆。 法律保护保险金。 保险资金投融资作用。 保险促进产业链整合。 商业问题解...