摘要:
Web请求过程 如何发起请求:browser,httpclient http解析:chrome ,cache Dns域名解析:域名缓存 cdn:负载,动态加速,回源 Java I/O I/0类库的基本架构:字节操作,字符操作,字节字符的转化 磁盘的I/O:内核空间,用户空间,同步,异步,内存映射 网 阅读全文
摘要:
分布式系统的特点 Java中间件的基础: JVM 内存语义, JVM内存分布, GC, 并发编程的类,接口和方法, 动态代理, 反射, 网络通信 服务框架 provider consumer 服务治理 与ESB的对比 数据库访问层 数据库的垂直、水平拆分 跨机事务 多机sequence 多机查询 读 阅读全文
摘要:
上下文切换 死锁 volatile synchronized 原子操作 happens before as if serial 锁的内存 final 线程:daemon start suspend resume stop 线程之间的通信 Lock:队列同步器 AQS, 重入锁,读写锁 ,condit 阅读全文
摘要:
消息集群架构 对于发送方来说的关键几要素 topic 消息的主题,由用户定义。类似于知乎的话题,Producer发送消息的时候需要指定发送到某一个topic下面,Consumer从某一个topic下面消费消息。 tag 每次发送一条消息的时候,给消息加一个Tag,方便Consumer过滤消息 mes 阅读全文
摘要:
消费者的实例化 关于consumer的默认实现,metaq有两种: 1. DefaultMQPullConsumer:由业务方主动拉取消息 2. DefaultMQPushConsumer:通过业务方注册回调方法,由metaq主动推送消息 共同点: 都是消费者,也都提供了start,shutdown 阅读全文
摘要:
部署架构 消息存储 存储结构 MetaQ的存储结构是一种物理队列+逻辑队列的结构。如下图所示: Producer生产消息,根据消息的topic选择topic对应某一个分区,然后发送到这个分区对应的Broker;Consumer根据订阅的topic选择去topic的某一个分区拉取消息。 MetaQ将消 阅读全文
摘要:
1.连接管理 网络架构原来是使用是自己开发的网络框架Gecko,Gecko默认为每个网络连接分配64KB的内存,支持1000个网络连接,就需要大概64MB的内存。后来采用Netty重构了网络服务层。 在Netty4是采用 Reactor Pattern线程模型 所谓Reactor Pattern模型 阅读全文
摘要:
1.消息发布者声明 我们以spring的方式来声明一个消息发布者: OPERATE LOGS 消息发送者与订阅者都是NotifyManagerBean实例,发布者只关注topic和group group信息在发送者和订阅者之间是唯一的。 messageListener 和 checkMessageL 阅读全文
摘要:
1.订阅者的声明方式 我们以spring组件化的方式,声明一个消息订阅者,对于消息订阅者关心的主要有: topic: 一级消息类型(又名消息主题)。如TRADE 消息类型:二级消息类型,区别同一Topic主题下的不同类型的消息; 如:TRADE(交易主题)下有 2300 trade created 阅读全文
摘要:
本文主要阐述下RPC调用过程中的寻址,序列化,以及服务端调用问题。 寻址 随机寻址 从可用列表中,随机选择地址 一致性寻址 可用服务地址一致性hash管理:根据可服务的地址,构造treemap,计算crc16 ccitt码时,加入虚拟节点数量,指向同一个可用地址。 for (String addr 阅读全文