中间件
文章平均质量分 87
高性能中间件
Minor王智
好好学习,天天向上!
展开
-
Kafka设计原理
对于Leader新写入的消息,consumer不能立即消费,Leader会等待该消息被所有的ISR节点同步后更新HW,此时消息才能够被消费者消费,这样就保证了如果Leader所在的Broker节点挂了,该消息仍然可以从新选举的Leader中获取。当Kafka集群启动的时候,会自动选举一个Broker作为控制器,选举的过程就是让每一个Broker去zookeeper中创建一个/controller的临时节点,创建成功的Broker就成为控制器。kafka定期清理topic里的消息,最后保留最新的数据。...原创 2022-07-31 17:02:18 · 444 阅读 · 0 评论 -
RocketMQ的生产、消费高可用和Reblance、堆外内存等问题
例如,TopicA分布在2个Broker节点上,每一个Broker节点都有默认4个这个TopicA的队列,如果此时只有1个消费者,那么这个消费者就会分摊8个队列的任务,如果此时加入一个消费者,那么每一个消费者就会平均分配4个。当队列数量和消费者数量持平的时候,此时再加入消费者,是不会触发Reblance的,多出来的消费者没有任何任务负担。(这种方式的缺点是有可能重试会再一次失败,因为如果第一次失败了大部分情况是这个Broker有问题了,所以当第二次选择这个Broker的其他队列时,大概率也会失败。.....原创 2022-07-14 20:54:27 · 1505 阅读 · 0 评论 -
MySQL高可用和主从同步
Manager节点一般是独立部署一台机器,Node节点一般是部署在每台MySQL机器上的,Node节点通过解析MySQL的日志来进行工作。MySQL主从集群默认采用的就是异步复制方式,Master的事务提交后,写入binlog然后就给客户端返回成功的响应了。相比于异步复制,半同步复制就是说事务的提交后binlog要保证至少将数据同步给一个从库才算完成,但是半同步复制并不保证从库对数据的提交是否成功。日志上的,通过对Binlog的实时同步来实现主从数据的同步。常见的分库分表手段有客户端插件、数据库代理。...原创 2022-07-27 23:06:13 · 885 阅读 · 0 评论 -
分布式事务和Seata的AT模式原理
Try-Confirm-Cancel,本质也是业务服务化的两阶段提交协议,TCC一共有3个步骤,第一阶段需要由应用程序来进行对资源的预留,当所有参与者的try接口都成功了,那么事务管理器就会提交事务进行confirm,否则进行cancel回滚资源释放。Seata支持多种分布式事务模式,官方主推的是AT模式,AT模式是一种无侵入式的、类似于自动化的隐式TCC模式。2PC一共有2个阶段预提交和commit。在分布式系统架构中,复杂的业务需要跨库操作,要保证全局的事务一致性问题就得需要解决分布式事务问题。...原创 2022-07-25 13:56:10 · 405 阅读 · 0 评论 -
Dubbo的SPI机制和服务暴露
Dubbo是阿里开源的一款RPC框架,现在已经是Apache的顶级项目,Dubbo的设计定位是一款高性能的RPC框架,随着Dubbo的发展,Dubbo还提供了服务治理、服务监控、服务网关等功能,所以Dubbo现在已经不单单是一款RPC框架了,还是一个具有不错生态的服务框架,但是单论服务生态能力还是和SpringCloud有所不足。Dubbo的SPI机制主要封装在一个叫。Dubbo的服务暴露的本质就是将服务端提供的接口服务告诉给客户端或者注册中心怎么访问具体的服务,就是将服务的请求路径URL暴露出来。...原创 2022-07-19 21:08:03 · 474 阅读 · 0 评论 -
Tomcat架构组件原理和生命周期LifeCycle
上层容器的初始化会触发子容器的初始化,上层容器的启动会触发子容器的启动。Connector连接器中的Adapter适配器组件将封装好了的ServletRequest对象传递给Service的Engine容器,Engine处理完毕后继续将请求传递给子容器Host,Host继续处理交给子容器Context,如此下去形成了一个。在Tomcat中,容器的概念就是来装载Servlet的一个管理器,Tomcat基于分层架构的思想,设计了4种容器Engine、Host、Context、Wrapper。...原创 2022-07-15 23:19:52 · 286 阅读 · 0 评论 -
总结一下Tomcat的IO模型和Tomcat调优
对象池技术的目的就是对象的缓存和复用,以空间换时间。同步队列来进行生产-消费模式进行通信,Poller的本质就是一个Selector,由一个单独的线程while(true)监测Channel的就绪状态,一旦有Channel可读,就会生成一个SocketProcessor任务对象给Executor线程池处理。Tomcat里面NIO的实现是交给Endpoint组件完成的,NioEndpoint是基于JDK的NIO实现的多路复用的IO模型,并且Tomcat的网络模型是。Acceptor和Poller是通过。...原创 2022-07-15 23:16:13 · 1290 阅读 · 0 评论