分布式标识 Distributed ID-03-Random
实现方式
package com.github.houbb.heaven.util.id.impl;
import com.github.houbb.heaven.annotation.ThreadSafe;
import com.github.houbb.heaven.util.id.Id;
import com.github.houbb.heaven.util.util.DateUt...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-02-UUID
UUID
基本实现
@Override
public String genId() {
return UUID.randomUUID().toString()
.replaceAll(PunctuationConst.MIDDLE_LINE, PunctuationConst.EMPTY);
}
测试代码
System.out.println(new...
2018-09-05 00:53:10 |
Distributed
分布式标识 Distributed ID-01-Overview
分布式 ID 生成的需求
不依赖数据库。
详细理解原理
(1)写文件。提前取1000个,然后将下一个值写入文件。
(2)预取+时间戳+线程好+机器码
时间时钟怎么保持一致?
id 递增的线程安全,持久化。
基础知识
网卡 线程 并发安全 持久化 (如果递增)
位运算,进制转换。
常见参考实现
UUID
GUID
timestampe+randomNum
snowf...
2018-09-05 00:53:10 |
Distributed
Database Sharding-03-分库分表最佳实践
业务背景
移动互联网时代,海量的用户每天产生海量的数量,比如:
用户表
订单表
交易流水表
以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因...
2018-09-04 08:26:49 |
Database
Database Sharding-02-分库分表实战 in action
单 key 业务
用户中心
用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:
User(uid, login_name, passwd, sex, age, nickname, …)
其中:
uid 为用户ID,主键
login_name, passwd, sex, age, nickname 等用户属性
数据库设计上,一般来说在业务...
2018-09-04 08:26:49 |
Database
Database Sharding-01-分表分库入门介绍
拓展阅读
mycat
c3p0 数据池入门使用教程-00
shardingsphere-分布式数据库生态
分表分库
概念
常见分表分库方式
按照功能分库
按照功能进行分库。常见的分成 6 大库:
1 用户类库:用于保存了用户的相关信息。
2 业务类库:用于保存主要业务的信息。比如主要业务是笑话,用这个库保存笑话业务。
...
2018-09-04 08:24:49 |
Database
MySQL Proxy
MySQL Proxy
MySQL Proxy 是一个简单的程序,位于您的客户端和MySQL服务器之间,可以监控,分析或转换他们的通信。
它的灵活性允许多种用途,包括负载平衡、故障转移、查询分析、查询过滤和修改等。
缺点
1、通过 lua 脚本实现的读写分离,不太稳定,官网不建议用
MySQL Proxy is not GA, and is not recommended for ...
2018-09-04 07:27:31 |
Database
Dynamic Spring Datasource
Spring Datasource
开启本篇话题之前,先说下 spring 数据源的配置。
JDBC 直接配置
<!-- 配置数据源dataSource jdbc方式连接数据源 -->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">...
2018-09-04 05:32:36 |
Spring