摘要:
为什么要学习 RocketMQ? 相信无论是前端还是后端的同学,不管是在平常的自我充电、还是日常的工作中,对 RocketMQ、Kafka 等主流消息队列多多少少都有一定的了解。现在的服务端架构中,一个业务模块中的服务往往会根据一定维度拆分成多个服务。而消息队列大家可以理解为 多个服务、系统之间沟通 阅读全文
摘要:
初识Kafka Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种 阅读全文
摘要:
整合RocketMQ 在开始运行 RocketMQ 之前,我们先思考一个实际的场景。 假设我们项目中有一个消息的生产者和消费者,它们连接到一个 RocketMQ 实例上,如下图所示。 随着业务规模的不断扩大,一个 RocketMQ 的实例已经有些不堪重负,于是我们需要将单机版的 RocketMQ 改 阅读全文
摘要:
Mapping JSON 中是可以嵌套对象的,保存对象类型可以用 object 类型,但实际上在 ES 中会将原 JSON 文档扁平化存储的。假如作者字段是一个对象,那么可以表示为: { "author": { "first":"zhang", "last":"san" } } 但实际上,ES 在存 阅读全文
摘要:
分片的设定 对于生产环境中分片的设定,需要提前做好容量规划 分片数设置过小 导致后续无法增加节点实现水品扩展 单个分片的数据量太大,导致数据重新分配耗时 分片数设置过大,7.0开始,默认主分片设置成1,解决了 over—sharding的问题 影响搜索结果的相关性打分,影响统计结果的准确性 单个节点 阅读全文
摘要:
PUT是幂等方法,POST不是。所以PUT用于更新、POST用于新增比较合适。 PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。 POST操作不是幂等的,比如常见的POST 阅读全文
摘要:
select模型 在Linux内核中设计了一个叫做select的函数,这个函数在内核态中对fd集合进行遍历,如果对应的fd接收到客户端的抵达数据,则会返回给用户态调用方(注意用户态发送select调用的时候依然会处于堵塞状态)。 一次select函数调用,会发生一次系统内核调用,和内核态内部的n多次 阅读全文
摘要:
binlog中记载了数据库发生的变化,比方说新建了一个数据库或者表、表结构发生改变、表中的数据发生了变化时都会记录相应的binlog日志。 binlog主要用在下边两个方面: 用途一: 用于复制。 单台物理机器所能同时处理的请求是有限的,为了提高并发处理请求的能力,一般将MySQL服务部署在多台物理 阅读全文
摘要:
里氏替换原则 返回实现接口的任意子类都可以满足该方法的要求,且不影响调用方。 总是引用接口而非实现类,能允许变换子类而不影响调用方,即尽可能面向抽象编程。总是引用接口而非实现类,能允许变换子类而不影响调用方,即尽可能面向抽象编程。 开闭原则 对扩展开放,对修改关闭。 静态工厂 工厂方法可以隐藏创建产 阅读全文
摘要:
首先,先说为什么不建议使用Stack这个实现类: https://www.xttblog.com/?p=3416 前面我已经写过一篇关于 Stack(栈) 的文章了《 吃多了拉就是队列,吃多了吐就是栈 》。鉴于网上关于 Stack 的文章众多,但大多都是偏介绍的。并且 Stack(栈)在 Java 阅读全文