三月沙


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 我的书单

  • 技术编年史

目标 过程 结果

发表于 Nov 20 2017 | 分类于 方法论
目标什么是目标目标是一个方向,用来指导实际行动朝着一个对结果有正向作用的方向前进的,也就是目标应该是一个指向未发生的结果的箭头,用来时刻提醒行动的路线是不是准确的,从这点来说目标指向的结果是一个中长期之后才能发生事情。 目标需要有个 why,用来说明目标背后突出的核心理念是为什么要做一件事,为什么要 ...
阅读全文 »

说说 API 这个事

发表于 Nov 19 2017 | 分类于 技术
移动互联网盛行之前, RESTful API 就已经存在很久了,只不过恰巧移动桌面的的兴起让 RESTful API 变成了几乎任何需要联网设备的标配,它的普及也正好证明了它的重要性程度是和它的普及程度是一样的。虽然没有专门的厂商来定义 RESTful API 的标准,但是得意于大平台的垄断和其 A ...
阅读全文 »

Consul 安装和基本使用

发表于 Nov 15 2017 | 分类于 consul
什么是 consulConsul 是一个服务配置和发现工具,它包含的主要特性有: 服务发现通过 DNS 或 HTTP 对依赖的服务的进行发现。 健康检查Consul clients 能够提供很多种表示服务健康状态的指标,包括服务请求状态,节点内存使用情况等,路由会依赖这些信息进行服务选择。 KV 存 ...
阅读全文 »

可视化数据平台 superset :安装和使用

发表于 Nov 14 2017 | 分类于 大数据
什么是 supersetSuperset 是 Airbnb 开源的大数据可视化平台,其特性包括: backend 支持几乎所有主流的数据库 支持复杂的权限控制和管理(OpenId, OAuth 等),满足企业内部不同部门人员对数据的权限要求 丰富的可视化展示,支持自定义创建 dashboard,可 ...
阅读全文 »

使用 airflow 替代你的 crontab

发表于 Nov 13 2017 | 分类于 大数据

Airflow 是什么

Airflow 是 Airbnb 开发的用于工作流管理的开源项目,自带 UI,现在 Apache 下做孵化,地址是https://github.com/apache/incubator-airflow

airflow

Airflow 解决什么问题

Airflow 主要解决的问题可以参考 Airbnb 官方的博客: airflow-a-workflow-management-platform,简单来说就是管理和调度各种离线定时 Job ,可以替代 crontab。

当 cron job 规模达到数百上千时,其对人的要求将会非常高的,如果你的团队经历过这样的事情,应该能体会其中痛苦,所以使用类似 airflow 这样的工具代替 cron 来做定时任务将会极大提高工作效率。

阅读全文 »

如何向小孩子解释计算机是什么

发表于 Nov 9 2017 | 分类于 程序人生
Medium 有篇文章 Explaining Programming to 6 Years Old Kids 讲了如何向小孩子解释计算机,过程挺有意思的,作者总结了两个讲解的原则用来把自己的想法告诉小孩子: 第一,通过提问和绘画的形式让小孩子参与其中第二,通过他们已知的东西来向他们讲解未知的 小 ...
阅读全文 »

Python float 和 decimal

发表于 Nov 8 2017 | 分类于 python
在 Python 官方的文档 Floating Point Arithmetic: Issues and Limitations 解释了 Python float 类型的一些问题和限制。 这里我想记录的是 Python 的 Decimal 类型和 float 的转换问题。 Python 的 Deci ...
阅读全文 »

linux 中的 dns 解析

发表于 Nov 8 2017 | 分类于 linux
我在用 linux 桌面环境有 2 年了,做服务端开发大部分时候都在和 linux 打交道,后来转投 mac,其实本质都是一样的,好奇 linux 下的 dns 解析的过程,看了很多资料发现过程还是比我想象的要复杂,虽然想好好写一写但投入时间还是挺大的,此篇我也许会慢慢更新直到完整,也许可能就写这 ...
阅读全文 »

Go 常见错误之一:值拷贝和 for 循环中的单一变量

发表于 Oct 24 2017 | 分类于 golang

在 Go 常见的错误一文中 http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/ 有这么一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

package main

import (
"fmt"
"time"
)

type field struct {
name string
}

func (p *field) print() {
fmt.Println(p.name)
}

func main() {
data := []field{{"one"},{"two"},{"three"}}

for _,v := range data {
go v.print()
}

time.Sleep(3 * time.Second)
//goroutines print: three, three, three
}
阅读全文 »

mysql 在线 scheme 变更方案以及开源工具评测

发表于 Oct 19 2017 | 分类于 mysql

mysql schema 变更的一般方案

变更 mysql table schema 是使用 mysql 的过程中经常需要做的一件事,一般意义变更可以根据场景的不同做不同的操作。

直接 alter

如果数据量非常少,读写不频繁,可以直接对表进行 alter,由于数据少直接 alter 并会造成太长时间的锁表,一般情况都是能接受的

停机升级

对于数据量特别大的表,如果直接 alter 将导致线上不可用可以考虑停机修改,当然如果停机时间过长不能接受,只能做在线改了

不停机在线迁移

很多团队面临的业务都无法停机,在线变更 schema 也确实是很多业务团队都会面临的问题,我曾经做过一次 Mongodb 亿级拆分方案,大致思路是:
1、在应用程序中拦截所有的 update,insert,delete 操作
2、为数据一致性建立迁移缓冲区,临时保存迁移用户的所有业务数据
3、在业务代码中利用迁移缓冲区做一致性输出
4、离线迁移所有用户数据

阅读全文 »
1…8910…14
三月沙

三月沙

135 日志
28 分类
113 标签
GitHub
© 2024 三月沙
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.2