20.LMAX——DDD的极致性能架构

不到断气不罢休  金牌会员 | 2025-2-14 09:58:51 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 865|帖子 865|积分 2595

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid=1940048&ctype=0

  
汗青

LMAX是由Martin Fowler 2011年提出,原文地址: https://martinfowler.com/articles/lmax.html
开端


  • 金融零售平台,要求高性能
  • 达到单线程600万TPS,一个线程一秒钟能处理600万个生意业务哀求
  • LMAX架构名称就是以这个生意业务平台的名字命名的
架构目的

超高TPS。这里的TPS不是指只把数据读出来,是要有写入操纵的,有变动的。
架构要素

1. 聚合常驻内存
在范畴驱动计划中,不管以什么方式计划,最后要得到的就是“聚合”。在LMAX中,聚合是一直在内存中存在,不像传统的架构,用的时候把聚合从数据库中加载到内存,修改后生存到数据库 ,内存中的聚合就被接纳掉了。
2. 变乱溯源
需要高可用写入范畴变乱,宕机重启后可以从范畴变乱重建聚合。
3. 单线程异步非阻塞IO(串行,无锁)

外部系统发过来的哀求会先写入环形队列Input DisruptorBusiness Logic Processor会串行化地从队列中一个一个取出来哀求处理,并将效果写入到OutDisruptor中,这个效果就是范畴变乱
它没有给客户端直接返回效果,它是完全异步化的过程,客户端发过来哀求后不会等待,直接退出。客户端会监听相应的变乱,当收到相应的变乱,才知道操纵是否成功。Disruptor是一个高性能的队列框架,当初就是为了LMAX架构而计划的。
时序对比

传统时序


变乱溯源时序


LMAX时序


单线程非阻塞异步IO(reactor)

多线程

- CPU在多线程间切换开销高 (相对于reactor)
- 阻塞
每个哀求一线程模式,并发受线程数限制。像传统的tomcat这种方式,一个哀求对应一个线程。
- 非阻塞
聚合在内存中只有一个实例,多线程情况下就会出现并发问题,以是就需要对实例加锁,加锁情况下每个聚合实际并发1。
单线程



  • 串行执行,无需加锁,一个CPU执行一个线程。CPU不会频繁在用户态和内核态切换。
  • 阻塞
    假如用阻塞的方式,并发能力1,性能暴跌,以是只能用非阻塞方式。
  • 非阻塞 (超高性能的唯一选择)
变乱溯源

为什么要使用变乱溯源,主要有两点:


  • 只恒久化范畴变乱,带来高性能写
  • 确保重启服务器时,可以范畴变乱中,重建聚合。
高可用方案

聚合放在内存中,假如宕机怎么办呢,以是需要计划高可用方案。
所有的高可用方案都是通过冗余来实现的。main(主机器) 会发出所有的变乱,follower(从机器) 会不断的重播这些变乱,并重建聚合。假如main和follower之间没有高延迟,二者就可以在短时间内保持同等性。supervisor会监测main和follower, 一旦main出现宕机,就会在follower中选择一个作为新的主机器main,并告诉网关,将哀求发到新的主机器上去。

代价

1. 无数据库事务
无先操纵后回滚,必须严酷前置完成所有校验,才能变动聚合内的状态数据,才能发布范畴变乱。
2. 运行时外部调用变复杂
因为异步的原因,导致它和外边系统交互很复杂。需要写代码处理异步IO,给编写代码带来负担。需要减少主动外部调用: 监听变乱提前组装数据 (数据量小)
显式变乱驱动方式
3. 受内存巨细限制
因为聚合全部在内存中,假如聚合数量太大就需要用多台服务器去做数据分区,架构更复杂。
总结

优点


  • 极致性能
    全内存化模型计划,更机动自由,可以大量使用对象和对象之间的引用。不像之前传统计划聚合的时候,是尽量减少聚合和聚合之间的引用。
缺点


  • 异步编程带来的编程难度
  • 高可用架构更复杂。传统的架构,只需要将服务复制很多份,服务是无状态的,它们共享同一个数据库。当我们需要高可用的,只需要多部署几台服务器就可以了,不存在主从切换问题、数据不同等问题。
实用范围

聚合数据量适合内存化,需要极致TPS场景,比如:

  • 某些游戏服务器
    频繁的执行操纵,服务端不断的响应。
  • 火车订票

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表