[返回] [最新] [最热门] [最高评价]

浅析嵌套数据库事务

大家都知道,数据库事务提供的强一致性,让我们只需要在业务开始之前执行begin、结束后执行commit,并在异常的情况下执行rollback,就能够保证业务数据的强一致性。

## 1. 转一笔账

以一个转账操作为例,从from账户往to账户转一笔钱,涉及到两个账户的操作,我们用事务来保证数据的一致性:
function actionTransfer(Account $from, Account
...

Felix021 2018-03-29 22:00 | 查看: 338

compile viabtc_exchange_server on Ubuntu 16.04

If you find this article helpful, you may like to donate to my ETH address:

  0x84D5084a0142a26081a2d06F3505cfc2CDaE9009

Detailed guide to compile viabtc_exchange_server on Ubuntu 16.04

## DEP
...

Felix021 2018-03-26 21:29 | 查看: 526

以太坊区块链长什么样? —— 自建 ethereum 私有链指南

之前接触以太坊的时候,确实能搜到很多资料,还有一个看起来很丰富的 Homestead Documentation,但这些材料都太不接地气了,看完还是不知道以太坊区块链到底长什么样,因此整理了这篇说明,希望能够在一定程度上解决这个问题吧。

# 1. 安装 ethereum (@ubuntu)

参考 官方说明:
引用
sudo apt-get install software-properties
...

Felix021 2018-03-14 19:55 | 查看: 736

简单磁盘性能测试

引用
$ sudo apt-get install fio

# 如下命令会创建一个 512M 的文件,测试 64 线程的 4KB 随机读写,75%读,25%写。
# readwrite=randrw表示测试时混合随机读取和随机写入请求,rwmixread指定读请求的占比
$ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce
...

Felix021 2018-03-10 20:39 | 查看: 392

解析一个简单的分布式事务Case

我注意到过去几个月我司有些同学还在踩一个简单的分布式事务Case的坑,而这个坑在两年以前就已经有同学踩过了,这里简单解析一下这个case和合适的处理方案,供参考。

1. 踩过的坑

这个case有很多变种,先从我们在XX业务踩过的坑开始,大约是16年9月,核心业务需求是很简单的:在用户发起支付请求的时候,从用户的银行卡扣一笔钱。负责这个需求的同学是这么写的代码(去除其他业务逻辑的简化版):
$d
...

Felix021 2018-03-02 22:41 | 查看: 449

自建 BTC RegTest 测试网络

# 1. 编译安装 (@ubuntu)
引用
sudo mkdir -p /usr/local/services/bitcoin
sudo apt-get install autoconf pkg-config libtool build-essential libdb++-dev libboost-dev libssl-dev libevent-dev libboost-system-dev l
...

Felix021 2018-02-28 18:35 | 查看: 842

Ubuntu 16.04 - Zabbix Agent 部署脚本

留档备查

脚本里设置了 ServerActive ,会主动尝试到zabbix server注册,但需要先在zabbix frontend的 configuration->actions->auto registration 配置好 add host 动作,这样才会自动添加。

引用

#!/bin/bash

set -x

ZABBIX_SERVER=192.168.1.100

wget h
...

Felix021 2018-02-28 11:49 | 查看: 344

Sentry Error: sentry_email does not exist

莫名其妙的一个错误,手头的两个sentry实例里都没有这个表,但是还是会报这个错。

没研究具体的代码,但是通过查找源码里的 sentry_email 发掘了表结构,建表并授权即可:
引用
$ psql -h $HOST -U root -W sentry
sentry=> create extension citext;
CREATE EXTENSION
sentry=> create tabl
...

Felix021 2018-02-11 20:32 | 查看: 427

Bash:传递命令行参数

不知道为什么这些年写脚本一直没有解决这个小需求:把命令行参数传递给脚本中的某个命令继续执行

例如我想写一个 colored-echo 命令:
引用
#!/bin/bash

color=$1
shift

echo -ne "\x1b[$color"

echo -n $1 $2 $3 $4 $5

echo -e "\x1b[0m"

然后这么调用引用
colored-echo
...

Felix021 2018-02-01 14:18 | 查看: 814

墙外最老牌云数据库测试

平台:AWS Aurora (MySQL 5.6.10a 兼容版本)

测试软件:sysbench 0.5 --test=oltp.lua (与之前一样的测试脚本)

DB配置:db.r4.large (2核,约16GB RAM),Aurora Shared Disk

sysbench配置:m4.xlarge(4核,16GB RAM),20GB+100GB EBS(300/3000 IOPS)
...

Felix021 2018-02-01 00:03 | 查看: 506

AWS Load Balance: 获取真实客户端IP

AWS的http/https负载均衡挺好用的,但是有一点比较麻烦,因为是应用层协议,所以在后端的nginx(以及下面挂的php-fpm)看到的 REMOTE_ADDR是负载均衡的IP,而直连LB的IP,则是保存在了 HTTP_X_FORWARD_FOR 这个header里面。

当然,在应用里面增加一小段代码去解析这个header也不是什么难事,但是毕竟有些框架已经有一套解析的方案了,而且碰到客户
...

Felix021 2018-01-27 01:04 | 查看: 633

MySQL Alter Table锁表相关的....提纲?

(瞅一眼才发现四个月没写了,确实是好久没写代码了,没啥心得,不过想想好像可以写个提纲凑个数)

我们的业务主要还是用 MySQL 存储业务数据。

MySQL 一个很麻烦的问题是,alter table 的时候往往要锁表,而业务在最初设计的时候,又没法为未来的所有改动预留合适的字段,结果就是,要么另外建一张表横向扩展,要么熬到半夜,忍受锁表带来的业务中断;不过在多次实践中还是有一些心得体会,可以简
...

Felix021 2017-09-22 00:07 | 查看: 813

...更多...