gydtep
发表于 2021-4-21 09:15:28
10位的机器标识,10位的长度最多支持部署1024个节点。
12位的计数序列号,序列号即一系列的自增ID,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。
gydtep
发表于 2021-4-21 10:19:38
适用场景
适用于int32类型的Id分配,单个区域内容量上限可评估的业务使用。
集中式分配算法
1)算法说明
集中式可以是Redis,也可以是ZooKeeper,也可以利用数据库的自增Id集中分配。
gydtep
发表于 2021-4-21 14:11:23
通过DRC的拆解,数据库操作有三种:insert、update、delete,这三种操作不管哪两种操作都是不能满足交换律的,会产生冲突,所以我们在并发级别(主键)加上额外信息,这里我们采用序号,也就是2中提到的染色的过程,这个过程是保留的。
gydtep
发表于 2021-4-21 14:32:24
而主键之间是并发的,没有顺序而言。当接收消息的时候我们并不保证强顺序,采用LWW(Last Write Wins)的方式,也就是说我们执行当前的SQL而放弃前面的SQL,这样我们就不用考虑交换的问题。同时我们会根据消息的唯一性(实例+单元+数据库+MD5(SQL))对每个消息做幂等,保证每个SQL都不会重复执行。而对于结合律,我们需要对每个操作单独分析。
gydtep
发表于 2021-4-21 14:50:58
update操作天然满足结合律。但是这里又要考虑一种特殊情况,那就是执行结果为0。这说明此语句之前一定存在一个insert语句,但这个语句我们还没有收到。这时我们需要利用这条语句中的数据将update语句转成insert再重新执行一次。
gydtep
发表于 2021-4-21 15:15:12
delete也是天然满足结合律的,而无论之前都有什么操作,只要执行就好了。
在insert和update操作里面,都有一个转换的过程,而这里有个前提,那就是从DRC拿到的变更数据每一条都是全字段的。可能有人会说这里的转换可以用replace into替换,为什么没有使用replace into呢,首先由于顺序错乱的情况毕竟是少数
gydtep
发表于 2021-4-21 20:35:13
我们进行数据建模研发,并处理不因业务特别是组织架构变动而轻易转移的数据中间层。包括DWD明细数据中间层和DWS汇总数据中间层。
gydtep
发表于 2021-4-21 20:54:20
其主要功能包括:
-组合相关和相似数据: 采用明细宽表,复用关联计算,减少数据扫描。
-公共指标统一加工:基于OneData体系构建命名规范、口径一致和算法统一的统计指标,为上层数据产-品、应用和服务提供公共指标;建立逻辑汇总宽表;
-建立一致性维度:建立一致数据分析维度表,降低数据计算口径、算法不统一的风险。
gydtep
发表于 2021-4-22 10:04:54
此外,在传统 IT 中,软件、硬件和服务由不同厂商分离交付。而云计算将软件、硬件、服务一体化交付,极大降低了计算成本,提升了交付效率,提供了创新的技术能力。这里面有几个关键点:
gydtep
发表于 2021-4-22 13:26:50
FaaS 也引入了一些新的技术挑战,比如冷启动会导致应用响应延迟,按需建立数据库连接成本高等等,需要平台能力的持续增强。