2017年加密货币比较流行,我曾有幸在加密货币交易所参与开发工作,为了应对交易系统高性能、高并发、高可用的要求,我们使用基于Actor模型的Orleans技术,采用CQRS/ES架构结合Service Fabric开展了富有挑战性的工作。本文将从不同视角为大家介绍Actor模型、CQRS/ES架构以及Service Fabric在高并发场景中的考量和应用。
话题由三部分组成:
Actor模型&Orleans(细粒度)
多核处理器出现后,大家常用的并发编程模型是共享内存模型。
这种编程模型的使用带来了许多痛点,比如:
话题由三部分组成:
Actor模型&Orleans:在编程的层面,从细粒度-由下向上的角度介绍Actor模型;
CQRS/ES:在框架的层面,从粗粒度-由上向下的角度介绍Actor模型,说明Orleans技术在架构方面的价值;
Service Fabric:从架构部署的角度将上述方案落地上线。
Actor模型&Orleans(细粒度)
多核处理器出现后,大家常用的并发编程模型是共享内存模型。
这种编程模型的使用带来了许多痛点,比如:
编程:多线程、锁、并发集合、异步、设计模式(队列、约定顺序、权重)、编译
无力:单系统的无力性:①地理分布型、②容错型
性能:锁,性能会降低
测试:
从坑里爬出来不难,难的是我们不知道自己是不是在坑里(开发调试的时候没有热点可能是正常的)
遇到bug难以重现。有些问题特别是系统规模大了,可能运行几个月才能重现问题