但是, 扩展这样的任务关键型系统是一项严峻挑战。万事达卡既需要大量数据,也需要快速响应。如果您无法牺牲数量换取性能(反之亦然),势必会遇到增长方面的问题。

万事达卡最终利用Apache Geode的基于内存的技术实现了数量与性能的平衡。此外,万事达卡的工程师使用设计模式来扩展数据密集型应用的数据量和交易吞吐量,同时不会增加延迟。

针对TB级数据设计Geode

像DMP这样有广度的决策平台需要TB级的共享数据。由于系统必须处理数百个时间感知型的聚合或计算变量,情况变得更加复杂。这些附加数据用于运行风险模型和数百个决策规则。 据万事达卡估计,他们拥有超过300亿项时间感知型聚合!

在处理这种大规模数据方面,Zolotov和Low提到了很多注意事项和最佳实践。

垂直和水平缩放的节点

万事达卡试验了这两种方法,发现它们都非常有效。垂直缩放(每个节点的堆大小较大)与无中断JVM配合进行垃圾收集,效果很好。水平缩放的优势在于与并行性相关的性能优化。

通过共置实现数据访问可扩展性

万事达卡会尽可能对相关数据进行共置。例如,与客户帐户相关的所有数据都位于同一个节点上。这样一来,针对某客户数据的请求只需发送到一个节点。这一简单的设计方案将读取性能提高到了每秒800万次读取。另一个好处是,万事达卡可以在不增加网络呼叫数量的前提下横向扩展网络。

均衡的数据分布

用于数据分区的键(含义与键-值存储中的“键”相同)应该产生均匀的分布。为什么呢?很简单:因为不均衡的工作负载会阻碍可扩展性。Andrey安排了足够的时间努力确定正确的数据分布方法,即采用均衡分区的方式,将工作负载均衡地分布到集群中的节点上。

使用字节数组存储

使用字节数组存储可以降低Java对象图的复杂性。而这恰好也是Geode的默认存储模型。事实证明,Geode是一个了不起的高效字节数组管理器!字节数组可以更轻松地扩展,因为Java堆更易于处理。简单的字节数组还可以加快垃圾回收工作负载。

运用这些概念,万事达卡能够将其Geode集群提升到40TB,并实现可持续的性能。他们又是如何解决延迟问题的呢?请继续阅读。

大规模优化Geode性能

万事达卡的目标是将平均交易延迟保持在50毫秒内。这个基准为他们提供了一些余地,以应对意外出现的减速。他们希望在吞吐量为每秒60,000笔交易的情况下达到这个延迟目标。 要达到这样的性能水平,需要亚毫秒级读取速度,也就是每秒数百万次读取。

万事达卡充分利用了Geode的内置性能优化来实现这一目标。随着DMP处理的可用数据的增加,对数据的请求数量也会相应增加。客户对数据的请求通常涉及通过网络传递的大量数据,这是不受欢迎的性能瓶颈。另外,以很高的每秒交易数(TPS)反序列化许多条目会占用大量CPU周期。

那么万事达卡是如何应对的呢?Andrey和Gideon再次介绍了四个相关领域:

聚合

DMP针对每笔交易使用数以百亿计的实时更新和使用的聚合。是的,这会增加数据量。但在性能上获得了丰硕的回报!

将代码移至数据

“实施上下文感知的功能让客户端和服务器节点之间的网络流量减少了95%,而且Geode服务器上的延迟减少了50%,CPU使用率减少了40%。Delta传播使对等网络流量又减少了50%...”

- Andrey Zolotov,万事达卡软件工程师

基于内存的争用管理(contension management)

万事达卡在DMP中更新数据的速度引发了有关争用和一致性的问题。当多笔交易尝试同时更新同一数据时,就会发生争用。在这种情况下,交易将自动序列化并完成。一致性与同时更新所有副本或相关数据有关,同时更新是为了让所有应用和用户都能看到数据的最新值。

万事达卡面临的挑战是,在处理快速、原子化的增量更新的同时,管理争用并保持数据一致性。当然,Geode可以存储复杂的对象,但对象属性的更新也可以作为增量更新处理。这样一来,就不会影响(即锁定)对未更新的其他属性的访问。

此外,每笔交易都会涉及数百次读取和写入。高效的争用管理可让Geode以每秒成千上万次的速度,以原子化方式将小的更改应用到大的条目。

性能和可扩展性至关重要时,企业选择了Geode

当然,在实际应用中,可以对上述介绍的方法稍加改动。Andrey和Gideon在SpringOne Platform大会的分组会议期间详细探讨了这些话题(以及其他话题)。

希望了解更多?请观看有关Geode性能基准的Geode Summit会议。

关于作者

Jagdish Mirani

Pivotal 企业软件部门主管

Jagdish Mirani是企业软件部门的主管,在产品管理和产品营销方面拥有丰富的经验。目前他负责Pivotal数据服务(Cloud Cache、MySQL、Redis、PostgreSQL)的产品营销。加入Pivotal之前,Jagdish在Oracle的数据仓库和商业智能部门工作了10年。

mysql to geode_万事达卡使用Apache Geode防范欺诈相关推荐

  1. 埃森哲、亚马逊和万事达卡抱团推出的区块链项目有何神通?

    据外媒报道,今日埃森哲宣布了一项新的区块链项目,该项目为基于区块链的循环供应链,将与万事达卡和亚马逊共同合作. 据官方介绍,这个基于区块链的循环供应链能够让客户识别供应链上的小规模供应商和种植者,例如 ...

  2. 大中型企业的天网:Apache Geode

    2016年11月21日,Apache软件基金会(the Apache Software Foundation,ASF)宣布 Apache Geode已从Apache孵化器毕业成为顶级项目(Top-Le ...

  3. 支付签约_与支付巨头万事达卡签约,金融服务集团FlexiGroup股价领涨

    搜索下载华舆APP(中新社旗下新媒体平台),关注全球华侨华人,浏览世界各国媒体新闻资讯,无需翻译--华舆在"手",世界尽在掌握! 华舆讯 据澳华财经在线报道,多元化的金融服务集团F ...

  4. 万事达卡:公共与私营部门通力合作对于创建智慧城市有重要意义

    3月21日,万事达卡总裁兼首席执行官彭安杰(AjayBanga)在出席中国发展高层论坛时表示,公共与私营部门通力合作对于创建未来智慧城市有重要意义. 彭安杰指出,高速发展的城市将在中国从出口导向向消费 ...

  5. Facebook加密项目Libra浮出水面,Visa和万事达卡「入伙」

    在这个最新支付系统的秘密计划中,Facebook打算和传统金融公司合作,让用户根据自己在其平台上的活动来获得奖励.然而,「Project Libra」项目进展速度并不尽如人意,因为加密货币到目前为止仍 ...

  6. 万事达卡携手中国银行、北汽鹏龙发布联名信用卡

    昨日,中国银行.北汽鹏龙与万事达卡共同发布中国银行北汽鹏龙联名卡(鹏龙卡).此次三方合作聚势,旨在推动汽车服务和金融服务两大服务领域的跨界融合,开启卓越未来,构建"人车智·会生活" ...

  7. 万事达卡、中国银行、北汽鹏龙联手 推联名信用卡

    17日,中国银行.北汽鹏龙与万事达卡共同发布中国银行北汽鹏龙联名卡(下称"鹏龙卡").此次三方合作聚势,旨在推动汽车服务和金融服务两大服务领域的跨界融合. 夏宾 摄 17日,中国银 ...

  8. 案例学习-万事达卡全球业务服务中心(GBSC)

    万事达卡的全球业务服务中心(GBSC)是提供集中的全球金融交付的SSO,提供交易.会计.计费.人力资源运营.法律和特许经营等服务给横跨50个国家的地区和业务部门. 自动化旅程 ▲ GBSC自动化之旅始 ...

  9. Apache Geode/GemFire 数据分区和路由机制浅析

    本篇文章主要讲解Apache Geode/GemFire 是如何进行数据分区的. GemFire和大多数分布式系统一样都采用 Hash 的方式对数据进行分区,将 Entry 数据分布到 Partiti ...

最新文章

  1. 使用python读取txt坐标文件生成挖空矿山_探矿批量
  2. Oracle使用startup与startup force启动的区别
  3. MySQL 8.0.26 图形化安装教程 (windows 64位)
  4. JS file图片即选即得显示,前端交互图片即选即得
  5. oracle11g的tnstimeout,redhat下oracle11g 配置listener.ora
  6. vim linux python3,VIM:在python-mode中使用python3解释器
  7. window.print设置目标打印机_愿得一人心,白首不相离, 极印手机照片打印机入手体验...
  8. 交通银行PHP代码,交通银行国际汇款代码 交通银行swift代码查询
  9. 卸载精灵(bue directx) r4.0 完美版 是什么
  10. Java实现短信验证码功能(利用容联云,个人测试,不需要项目上线)
  11. C++ Beep()演奏简谱的改进以及实现背景音乐
  12. 基于强化学习的路径规划学习
  13. MATLAB真彩色图像转换为索引图
  14. 2020计算机二级office知识点,2020年计算机二级Word常考点汇总
  15. 【Swing】图片查看器
  16. python中函数的定义_Python函数是什么_如何定义和调用函数?
  17. 订单薄与发现冰山订单
  18. Java导出大批量数据(文件格式篇xls,xlsx,csv)
  19. Flutter 环境安装
  20. svn提示svn: E170001: Commit failed (details follow):解决

热门文章

  1. undefine error
  2. idea maven打包错误
  3. 改变maven打包路径_Maven打包技巧
  4. python iloc函数_python pandas Series.iloc用法及代码示例
  5. python iloc函数_Python pandas.DataFrame.iloc函数方法的使用
  6. R5F10268 FDL CS+ for CC 设置与实测数据
  7. linux如何使用tinyproxy搭建代理服务器
  8. Android Binder—APP-framework(mRemote的前世今生)
  9. Qt中调用Python,实现基础功能、绘图、界面实现和图片爬虫
  10. 千万别娶或者别嫁韩国人