微课程 | 第十三课《全局序列视频演示》

 https://v.youku.com/v_show/id...

上一期我们介绍了全局序列的原理,接下来我们通过视频来演示一下全局序列功能。我们来看一下这两种全局序列是怎么工作的。

ppt p23.png

时间戳算法

首先是 snowflake ,也就是所谓时间戳算法。

https://v.youku.com/v_show/id...

默认的是直接使用时间戳算法,在实际的使用中先设置一下。在 server.xml 里面有一个叫 sequnceHandlerType 的属性。值为 2 表示时间戳类型,其它数值在文档中有详细介绍。我们去配置一个有全局序列的表。tb_hash_sharding_er2 表里面的 autoIncrement 属性为 true。target 是用来配置的全局序列的。然后 snowflake 算法还有一个工作节点,它标识了机器的 ID 。在配置文件当中分别有两行配置。这两行是一个联合主键,只要在不同机器上,联合值就不一样,那么就实现了标识。登录一个 dble 的流量端口。查看刚刚建的表是空的。再看一下这张表的结构,一共是三行。第一行数据类型是 bigint ,因为 snowflake 是一个 64 位的整数。64 位的整数超过了一般 int 的长度,所以我们选用 bigint 存储,这里我们需要注意。然后我们插入一条数据,看到已经生成了一个意向的序列号。然后我们再插入另外一个值。可以看到生成了一个完全不一样的序列号。假如我同时插入多个值,因为这张表其实是按照1024求模,然后按照 0 到 512 范围的查询算法。我们写了一个 512 这样一个值插入,可以看到其中的一个全局序列完全不一样。所以这是一个按时间戳拆分的一个全局序列的算法。值得注意的是,如果一个系统已经确定了全局序列的算法,是不能更改的。因为方式 A 和方式 B 的全局序列同时设置,很有可能会有数据冲突。所以我们展示完这个类型就要删掉。

offset-setup 类型

接下来是第二种 offset-setup 类型全局序列的配置和生成的演示。

https://v.youku.com/v_show/id...

首先要看一下全局序列的方式。刚才我们属性值是 2,选择 offset-setup 这里要改成 1,当然需要重启才能生效。改好配置后,使用 testdb 库中的 tb_hash_sharding_er2 表,在 sequence_db 配置文件中添加一行。现在我们知道这个全局序列的粒度是到表的,所以不同表之间是可以不一样的。需要配置出这样一个库表,来标识我们的表要使用全局序列。后面的值表示我的载体放在哪里,发号器要放在哪一个地方。我们把它放到 dn1(数据库的一个实例节点)上。db1 指向 datahost1,可在 33061 端口登录。我已经准备好了 dbseq.sql,里面是建表语句和存储过程。建的表就是发号器存放的地方,存储过程就是这个发号器。表非常简单,就三行。存储过程细节可以到文档中查看。发号器就是个为了控制不同请求不冲突的东西。发号器通过锁来变更一张表的记录,然后把记录返回回去。当有其它请求发过来的时候不会冲突,然后去 33061 端口的 dn1 里面把建表语句和存储过程执行一下。我们通过 source 命令去把这个表建立起来,存储过程也建立起来。
这时我去看就有这张表了。表的数据现在是空的,需要我们显式的加一条数据。发号器的一个起始值和一批次的长度。其实这个起始值为 0 更合适,1 到 1000 也没有问题。这样的话,发号器里面就有一条记录了,之后的发号都会从这里面去申请。修改全局序列类型后,需要重启 dble。我们去 log 里面验证一下是成功的!通过 8066 端口来演示这种全局序列生成的过程。将表清空,重新插入多条数据。观察在表中最终出现的形式。另外第一行可以不用 bigint 了。可以看到我们插入数据的时候是指定后面两列,第一位是自动生成的,从 2 开始。在插入两个数据以后,就自动 2,3…… 递增。递增效果由 DBLE 内部控制。举个例子,比如说我 DBLE 突然挂了,重启以后会发生什么?其实发号器已经发过 1 到 1000 的号了,但是我还没用,DBLE 就重启了。实际上会再去申请,所以序列有可能是会有间断的。在 1 到 1000 的使用过程中挂了,那我就废弃再去取,保证唯一性。以上,这就是 DBLE 全局序列功能,我们今天先介绍到这里。

图文稿为了方便阅读,在不影响学习的情况下优化了一些口语化词汇,文稿与视频会尽量保持一致。
Image placeholder
moeacg
未设置
  85人点赞

没有讨论,发表一下自己的看法吧

推荐文章
《MongoDB高手课》学习记录(第十六天)

第十六天今天开始事务的学习,要学习的章节为《19|事务开发:写操作事务》,其实主要就是讲一个参数writeConcern。什么是writeConcern?之前第一章我们学过,生产环境中MongoDB最

《MongoDB高手课》学习记录(第十七天)

写在前面最近有新项目上线,实在太忙了,学习的进度有点拖沓,但会坚持。第十七天今天要学的是《20|事务开发:读操作事务之一》章节。主要讲解的是怎么哪里读取数据的问题。readRreference参数值有

基于ApiBoot的前后分离演示脚手架诞生了~

知识改变命运,撸码使我快乐,2020继续游走在开源界点赞再看,养成习惯给我来个Star吧,ApiBootAdmin源码仓库:https://gitee.com/minbox-projects/api-

Python教程-将序列分解为单独的变量

问题 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决方案 任何的序列(或者是可迭代对象)可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求就是变量的总数

算法题:乘积最大子序列

题目来源于力扣 理论基础 动态规划 乘积最大子序列题目描述 给定一个整数数组nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例示例1: 输入:[2,3,-2,4] 输出:

算法 序列提取

程序不仅仅是存储数据,通常具备描述数据关系(数据结构),操作数据行为(算法)。 本文演示一维数组通过reduce方法转二维,达到符合需求改变数据关系的小程序。 问题实现一个方法,将一维数组内的连续序

jquery序列化serialize()方法时中文乱码怎么解决?

原因:.serialize()自动调用了encodeURIComponent方法将数据编码了解决方法:调用decodeURIComponent(XXX,true);将数据解码如:varparams=j

Laravel-自定义全局函数-ChinaCircle 优化版

看过很多关于helper辅助文件的教程我进行个进一步优化 很多教程都会说,你在composer.json这个文件中通过添加一个自动加载的文件,就可以实现这个需求。但我认为这不是一个好的方式,当你在he

Go语言高级编程_3.3 常量和全局变量

3.3常量和全局变量 程序中的一切变量的初始值都直接或间接地依赖常量或常量表达式生成。在Go语言中很多变量是默认零值初始化的,但是Go汇编中定义的变量最好还是手工通过常量初始化。有了常量之后,就可以衍

Laravel 全局记录管理员的所有操作(Gist 版本)

用处 在某些系统,可能会要求记录每个管理员的操作,以防一些操作不当的责任追究(例如改错价格),此时增加全局的监听会使你省去很多不必要的代码,不用一个个控制器去增加记录。 原理 通过监听laravel自

数据库大牛李海翔详解全局读一致性技术

作者简介:李海翔,网名“那海蓝蓝”,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺术:事务管理和并发访问控制》、《数据库查询优化器的艺术:原理解析与SQL性能

HTML中16个全局属性介绍

HTML原有属性accesskey作用:浏览器用来创建激活或聚焦元素的快捷键值:一个键盘字符如O范围:支持该属性的元素有、、、、、、注意:使用该属性可能在新窗口打开链接时可能会被浏览器屏蔽 百度 阿里

怎么检查react全局安装

怎么检查react全局安装检查react全局安装可以使用npm命令npmlist-g--depth0。按下win+r打开运行,输入cmd打开命令提示符,输入命令即可。C:\Users\Administ

全局安装react脚手架在哪装?

全局安装react脚手架在哪装?全局安装react脚手架在任何目录下都可以,因为和当前所在目录没有关系。一、全局安装react脚手架npminstall-gcreate-react-app -g参数表

课程质量需要用户把关

  现在是互联网的时代,“互联网+教学”是目前最主流的一种互联网应用。各培训公司和高校都在积极建设自己的在线课程,通过视频公开课、精品资源共享课、慕课和微课等多种形式的在线课程,对外开放学校的优质教

课程质量需要用户把关

现在是互联网的时代,“互联网+教学”是目前最主流的一种互联网应用。各培训公司和高校都在积极建设自己的在线课程,通过视频公开课、精品资源共享课、慕课和微课等多种形式的在线课程,对外开放学校的优质教学资源

课程介绍及环境安装笔记

作业经常漏掉一个IDE,或者把py的版本弄错在3.7.0上,正确的应该安装py的3.7.4版本,然后IDC需要Pycharm、Sublime与Typora

阿里云视频点播转码

阿里云点播SDK下载安装地址:https://helpcdn.aliyun.com/document_detail... 阿里云点播上传SDK下载地址:https://helpcdn.aliyun.c

天翼云视频云储存解决方案,高效解决云储存难题

随着科技发展,视频监控迈向深度智能时代,前端摄像机开始内置深度学习算法,可以对人脸、车辆等关键信息进行快速定位抓拍,有效解决漏抓误报问题,解决了传统智能视频分析技术人工选择特征准确率低、浅层学习模型无

YouTube 的视频推荐是如何实现的?

最近,谷歌研究人员发表了一篇论文,并在RecSys2019(丹麦哥本哈根)的论坛上公布,论文中对他们的视频平台Youtube用户视频推荐方式进行了阐述。在这篇文章中,笔者将试着总结我阅读这篇论文后的发

如何选择视频会议设备?

视频会议是企业的必备品。它可以降低差旅成本、鼓励协作、让员工移动办公,并使企业更容易被客户和合作伙伴认可。企业的产品和服务可以通过网络访问;通过视频会议为您的团队提供支持,使他们能够与企业品牌一起航行

5G+AI能否让中兴视频再创新高?

 “中兴通讯在视频通讯已经有超过20多年的技术积累,我们应该是中国最早做视频会议自主研发的厂家,也是国内唯一两次获得国家科技进步奖的厂家”。中兴通讯副总裁、视频产品线总经理华新海在接受IT168记者专

视频会议新选择,讯众及时会了解下

当下的视频会议市场,各大厂商分庭抗礼,小厂商们伺机突破,入局者越来越多,同质化竞争明显,多数厂商受困于竞争激烈的“红海”,亟需寻求破局之道。这其中,有一家新公司表现较为亮眼,不论是在产品创新还是在标杆

宝德自强双路云服务器PR2710P视频评测

如今,人工智能产业风发泉涌,随着机器学习带来算法训练的大规模应用,快速安全地推理到真实世界已经颇受关注。在这样的背景下,宝德公司推出了宝德自强双路云服务器PR2710P,这款产品基于最新的英特尔至强可