mutil

一致性协议与Raft算法

北城以北 提交于 2021-01-29 05:36:00
CAP理论 CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性( C onsistency) 可用性( A vailability) 分区容错性( P artition tolerance) 对于一个分布式系统来说,上述三个特性不能同时兼得,分为CP和AP的系统。例如银行必须是CP。 一致性协议 分为两种: 弱一致性(最终一致性) 强一致性 弱一致性,也称为最终一致性,也就是说各个节点不会立即保证系统同步,属于AP范畴,典型的应用如DNS域名解析服务。 强一致性,表示各个节点的数据必须保持一致,属于CP,典型的应用有Zookeeper。 通常所说的一致性协议算法,指的其实就是 强一致性算法 ,这些算法都是由Lamport提出的 Paxos算法 演变出来。Paxos算法有三个变种,base paxos,multi paxos和fast paxos。其他一致性算法又是由 multi paxos的简化版 演变而来,主要 Raft 和 ZAB 。 强一致性协议的内容 强一致性协议主要包括的内容可以概括为: 选主机制 数据一致性 1)写数据 2)提交数据 saft容错策略 Paxos Paxos本身只是一个理论,并没有落地实现,paxos协议中,存在较多的角色,包括议案发起人,议员和记录员等。 base paxos,是通过 议案编号大小 来进行的

阿里定向广告新一代主模型:基于搜索的超长用户行为建模范式

最后都变了- 提交于 2020-08-15 23:14:16
  机器之心发布    机器之心编辑部    阿里提出并实现了一套基于搜索范式的超长用户行为建模新方法Search-based user Interest Model(SIM),用于解决工业级应用大规模的用户行为建模的挑战。      对用户沉淀的海量历史行为数据进行充分的理解和学习, 是电商、信息流、短视频推荐这类强用户行为反馈驱动的应用中,近几年技术研发的关键方向,尤其是 CTR 模型这个领域,更是关键的胜负手。   以淘宝为例,大量的用户在网站上沉淀了长达数年甚至十几年的历史行为数据:平均每个用户每年产生的点击量超过了 10000,更不用提其中高频用户的活跃行为了。然而,如何建模这种超长行为序列的数据,学术界和工业界都还在早期阶段摸索。传统的如 LSTM、Transformer 等序列建模的技术,普遍适用于序列数据长度在 100 以内的情况,当序列长度提高一个数量级达到 1000 以上时,都会存在困难;此外,即使离线模型能够处理,如何将模型部署到实际生产系统,在时延和吞吐上都达到工业级标准,更是极具挑战的难题。   18 年我们团队研发上线、19 年在 KDD 上披露的 MIMN[1],是业界首个处理超长行为序列的工业级解决方案,其提出了一套能够对长达 1000 长度的行为序列数据进行训练和在线 serving 的整体解决方案。然而,MIMN 算法基于的是 memory

阿里定向广告新一代主模型:基于搜索的超长用户行为建模范式

孤者浪人 提交于 2020-08-12 03:45:06
阿里提出并实现了一套基于搜索范式的超长用户行为建模新方法Search-based user Interest Model(SIM),用于解决工业级应用大规模的用户行为建模的挑战。 对用户沉淀的海量历史行为数据进行充分的理解和学习, 是电商、信息流、短视频推荐这类强用户行为反馈驱动的应用中,近几年技术研发的关键方向,尤其是 CTR 模型这个领域,更是关键的胜负手。 以淘宝为例,大量的用户在网站上沉淀了长达数年甚至十几年的历史行为数据:平均每个用户每年产生的点击量超过了 10000,更不用提其中高频用户的活跃行为了。然而,如何建模这种超长行为序列的数据,学术界和工业界都还在早期阶段摸索。传统的如 LSTM、Transformer 等序列建模的技术,普遍适用于序列数据长度在 100 以内的情况,当序列长度提高一个数量级达到 1000 以上时,都会存在困难;此外,即使离线模型能够处理,如何将模型部署到实际生产系统,在时延和吞吐上都达到工业级标准,更是极具挑战的难题。 18 年我们团队研发上线、19 年在 KDD 上披露的 MIMN[1],是业界首个处理超长行为序列的工业级解决方案,其提出了一套能够对长达 1000 长度的行为序列数据进行训练和在线 serving 的整体解决方案。然而,MIMN 算法基于的是 memory network,在处理更大规模的序列数据时,容易被数据的噪声干扰

MySQL可重复读

陌路散爱 提交于 2020-03-11 19:51:43
MySQL默认的隔离级别是可重复读,即:事务A在读到一条数据之后,此时事务B对该数据进行了修改并提交,那么事务A再读该数据,读到的还是原来的内容。 那么MySQL可重复读是如何实现的呢? 使用的的一种叫MVCC的控制方式 ,即Mutil-Version Concurrency Control,多版本并发控制,类似于乐观锁的一种实现方式 实现方式: InnoDB在每行记录后面保存两个隐藏的列来,分别保存了这个行的创建时间和行的删除时间。这里存储的并不是实际的时间值,而是系统版本号, 当数据被修改时,版本号加1 在读取事务开始时,系统会给当前读事务一个版本号,事务会读取版本号<=当前版本号的数据 此时如果其他写事务修改了这条数据,那么这条数据的版本号就会加1,从而比当前读事务的版本号高,读事务自然而然的就读不到更新后的数据了 来源: oschina 链接: https://my.oschina.net/u/4167465/blog/3191961

002-搭建Liftweb项目

落花浮王杯 提交于 2020-03-02 04:31:48
搭建Lift项目 sbt -> sbt + jetty -> sbt + jetty + lift 本章的示例代码在: http://git.oschina.net/yangbajing/lift-book/tree/master/examples/lift-blank 安装Sbt 详细内容请读 附录A. 使用Sbt 创建sbt工程 现在我们重头开始建立一个lift项目,首先需要创建一个sbt工程。我们建立工程目录在: /data/lift-book/examples/lift-blank ,并建立目录结构如下: . ├── project │ ├── Build.scala │ ├── BuildSettings.scala │ ├── Dependencies.scala │ └── plugins.sbt ├── sbt ├── sbt-launch-0.13.0.jar ├── sbt.bat └── src ├── main │ ├── scala │ │ ├── bootstrap │ │ │ └── liftweb │ │ │ └── Boot.scala │ │ └── code │ │ ├── comet/ │ │ ├── helper/ │ │ ├── model/ │ │ └── snippet/ │ └── webapp │ └── WEB-INF │ └─