摘要:
MQ解耦了生产者和消费者,前提是有一个稳定强大的消息服务,我们只管与之通信即可。 所以,和MqServer通信是什么样的?难否? 0. 发送端demo 只需要设置下 nameServer, 就可以实现发送mq消息了。简单易用,是好产品的必备特征。 具体实现过程,且让我们深入一点了解。 1. 消息发送 阅读全文
摘要:
我们可以把loghub当作一个消息中间件来使用。如果能知道当前的消费进度,自然好了,否则消费情况一无所知,总是有点慌! loghub消费分两种情况,一是普通消费,二是消费组消费; 消费组消费,loghub服务端会记录消费情况,这时可以通过调用服务端API进行偏移信息查询。 普通消费则不同,需要自行维 阅读全文
摘要:
消息中间件是为解耦生产者和消费者的目的,三大服务点:解耦、异步、削峰。 现在的的互联网系统中,mq已经必备基础设施了,我们已明显感觉它的必要性与强大。然而,它的本质是啥?存储转发系统罢了! MQ有很多成熟产品,以RocketMQ作为切入点,成本较低。MQ主要角色为:生产者、消费者、消息服务端。 本文 阅读全文
摘要:
为充分利用机器性能,人们发明了多线程。但同时带来了线程安全问题,于是人们又发明了同步锁。 这个问题自然人人知道,但你真的了解同步锁吗?还是说你会用其中的上锁与解锁功能? 今天我们就一起来深入看同步锁的原理和实现吧! 一、同步锁的职责 同步锁的职责可以说就一个,限制资源的使用(线程安全从属)。 它一般 阅读全文
摘要:
因为ZK有watch机制,可以随时发现一些数据的变化,从而达到数据的及时性。 ZK的所有读操作都可以设置watch监视点: getData, getChildren, exists. 写操作则是不能设置监视点的。 监视有两种类型:数据监视点和子节点监视点。创建、删除或者设置znode都会触发这些监视 阅读全文
摘要:
使用 grafana+prometheus+jmx 作为普通的监控手段,是比较有用的。我之前的文章介绍了相应的实现办法。https://www.cnblogs.com/yougewe/p/11140129.html 但是,按照之前的实现,我们更多的只能是监控 单值型的数据,如请求量,tps 等等,对 阅读全文
摘要:
通过前些文章,我们已经完全从整体架构和数据接入方面理解了ZK的前情工作。接下来,我们就来看ZK的正式工作吧。 本文以 setData /a data 这个命令作为出发点,来观察zk是如何处理来自客户端的数据更新操作的吧! 首先,我们需要明确各个角色所担任的工作,然后才能更好的理解其工作流程。我们以 阅读全文
摘要:
通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构。 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的。 一、监听用户请求socket 基于NIO的端口监听,获取tcp数据流。 二、从连接中解析数据 接上一个nio提交过来的连接后,由 SelectorThr 阅读全文
摘要:
我们知道,zk就是一个个处理链组成的。 但是,这些处理链是在什么创建的呢? ZooKeeper 中有三种角色的服务节点存在: Leader, Follower, Observer . 而每个服务节点的承担的任务是不一样的,所以处理任务的逻辑是不一样的。而在ZK中,则是巧妙的通过责任链模式将各自节点的 阅读全文
摘要:
ZooKeeper 作为优秀的分布系统协调组件,值得一探究竟。它的启动类主要为: 1. 单机版的zk 使用 ZooKeeperServerMain 2. 集群版的zk 使用 QuorumPeerMain 与用户端各服务端之间存在着各种通信!当然主要分为三个: 1. 客户端与zk的通信; 2. 各zk 阅读全文