How to design a scalable system

如何设计可扩展系统

如何设计一个可扩展的系统

RocketMQ

Map + Flag 标志位扩展

消息 Message 的设计:

rocketmq-message

  • Map
  • flag

Context 扩展

MessateStoreFactory

enum + code + 注册器

RocketMQ 服务端在收到客户端发送过来的消息之后,根据 cmd.getType() 来调用不同的函数:

processMessageReceived

注册处理器:

registerProcessor

注册处理器本质上就是放到一个 Map 里面了:

1
2
protected final HashMap<Integer/* request code */, Pair<NettyRequestProcessor, ExecutorService>> processorTable =
new HashMap<Integer, Pair<NettyRequestProcessor, ExecutorService>>(64);

收到对应的请求后,再根据一个叫做 code 的请求类型来从注册表里面取出相应的处理器:

code

推荐文章