当前位置: 首页 > news >正文

英文网站设计多少钱搜多多搜索引擎入口

英文网站设计多少钱,搜多多搜索引擎入口,淘宝网页制作视频教程,跨境电商建站背景 TwoPhaseCommitSinkFunction是flink中基于二阶段事务提交和检查点机制配合使用实现的精准一次的输出数据汇,但是想要实现精准一次的输出,实际使用中需要注意几个方面,否则不仅仅达不到精准一次输出,反而可能导致数据丢失&am…

背景

TwoPhaseCommitSinkFunction是flink中基于二阶段事务提交和检查点机制配合使用实现的精准一次的输出数据汇,但是想要实现精准一次的输出,实际使用中需要注意几个方面,否则不仅仅达不到精准一次输出,反而可能导致数据丢失,连至少一次的语义都不能达到

TwoPhaseCommitSinkFunction注意事项

TwoPhaseCommitSinkFunction是通过在两阶段提交协议实现的事务,大概简化为一下步骤:
1 在收到检查点分隔符的时候,开启事务,并把记录都写到开启的事务中,
2. 开始进行状态的保存时,把检查点id对应的事务结束掉,做好准备提交的准备,并开启下一个事务

public void snapshotState(FunctionSnapshotContext context) throws Exception {// this is like the pre-commit of a 2-phase-commit transaction// we are ready to commit and remember the transactioncheckState(currentTransactionHolder != null,"bug: no transaction object when performing state snapshot");long checkpointId = context.getCheckpointId();LOG.debug("{} - checkpoint {} triggered, flushing transaction '{}'",name(),context.getCheckpointId(),currentTransactionHolder);//当前检查点对应的事务做好准备,比如进行stream.flush等,准备好提交事务preCommit(currentTransactionHolder.handle);// 把当前检查点id对应的事务添加到状态中pendingCommitTransactions.put(checkpointId, currentTransactionHolder);LOG.debug("{} - stored pending transactions {}", name(), pendingCommitTransactions);currentTransactionHolder = beginTransactionInternal();LOG.debug("{} - started new transaction '{}'", name(), currentTransactionHolder);// 把当前检查点id对应的事务添加到状态中state.clear();state.add(new State<>(this.currentTransactionHolder,new ArrayList<>(pendingCommitTransactions.values()),userContext));}
  1. 收到检查点完成的通知notify方法,提交第二步中检查点id对应的事务,注意这一步不是每次flink在进行检查点的时候都会通知,这种情况下,某一次的notify方法就需要把前几次的事务一起进行提交了,另外,如果提交某个检查点的事务失败,那么应用会重启,并且在重启后的initSnapshot方法中再次进行事务提交,如果还是失败,这个过程一直持续
    public final void notifyCheckpointComplete(long checkpointId) throws Exception {Iterator<Map.Entry<Long, TransactionHolder<TXN>>> pendingTransactionIterator =pendingCommitTransactions.entrySet().iterator();Throwable firstError = null;while (pendingTransactionIterator.hasNext()) {Map.Entry<Long, TransactionHolder<TXN>> entry = pendingTransactionIterator.next();Long pendingTransactionCheckpointId = entry.getKey();TransactionHolder<TXN> pendingTransaction = entry.getValue();if (pendingTransactionCheckpointId > checkpointId) {continue;}LOG.info("{} - checkpoint {} complete, committing transaction {} from checkpoint {}",name(),checkpointId,pendingTransaction,pendingTransactionCheckpointId);logWarningIfTimeoutAlmostReached(pendingTransaction);try {// 提交事务commit(pendingTransaction.handle);} catch (Throwable t) {//事务失败时记录异常,后面会把异常抛出导致应用重启if (firstError == null) {firstError = t;}}LOG.debug("{} - committed checkpoint transaction {}", name(), pendingTransaction);// 事务成功后移除当前的事务pendingTransactionIterator.remove();}if (firstError != null) {// 事务提交失败会抛出异常,导致job异常中止throw new FlinkRuntimeException("Committing one of transactions failed, logging first encountered failure",firstError);}}

总结:

1。事务不能提交失败,如果失败会导致作业失败然后重新提交,如果最终没有成功提交,那么数据会丢失
2。数据库服务端的事务超时时间不能设置太短,不能仅仅大于检查点的间隔大小,原因是上面说的,flink有可能丢失检查点完成后的通知消息,所以服务端的事务超时时间要设置的足够大.

http://www.khdw.cn/news/17603.html

相关文章:

  • 网站建设 营销营销型企业网站建设的内容
  • 学校网站建设用哪个系统百度关键词优化方法
  • 手表网站建设策划腾讯朋友圈广告怎么投放
  • 网站视频解析临沂网站seo
  • 武汉网站建设公司有哪些bt磁力王
  • 做视频网站虚拟主机怎么选灰色产业推广引流渠道
  • wix怎么做网站交换链接网站
  • mac wordpress本地安装插件网站建设优化的技巧
  • 国外的网站用不用备案网络营销怎么推广
  • 阿里云服务器可以做多少个网站网络推广优化方案
  • da面板做两个网站建一个外贸独立站大约多少钱
  • 高品质的佛山网站建设电商怎么做如何从零开始
  • 网站模版上传空间后怎么做如何自己制作网页
  • 嘉兴企业网站设计哪家好互联网广告公司排名前十
  • 网站开发公司报价单模板营销推广的公司
  • 网络营销方案定义思路广州做seo整站优化公司
  • 东莞市手机网站建设品牌济南网站推广优化
  • 用备案的网站做违法网站惠州短视频seo
  • 网推资源网站宁波百度seo排名优化
  • 红酒 专业 网站建设关键词云图
  • h5做的公司网站济南seo公司
  • 响应式网站排名如何什么是全网营销推广
  • 网站里的课程配图怎么做网站优化培训学校
  • 哪些网站做耽美网络营销的8个基本职能
  • 做擦边网站 服务器放在狗爹免费拓客软件哪个好用
  • 郑州做网站加密的公司seo资讯推推蛙
  • 简单网站制作代码武汉seo哪家好
  • php大型网站设计alexa排名
  • 怎么网站后台今日头条荆州新闻
  • 华企网站建设公众号推广费用一般多少