Kafka简析以及SpringBoot整合Kafka应用实践

一、Kafka介绍 Kafka创建背景Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用。 活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、IO 使用率、请求时间、服务日志等等数据)。运营数据的统计方法种类繁多。

使用Folk/Join框架实现多核并行计算学习笔记

背景最近温习《Java虚拟机精讲》的时候,里面有提到使用Folk/Join框架实现多核并行计算,似乎有点陌生又有点熟悉,原来真的好久没用了,根据书上的相关资料,自Java7开始新增在java.util.concurrent包下面新增了基于细粒度的多核并行计算Folk/Join框架。它的主要思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和开源基金会Apache提供的Hadoop里面MapReduce很像(input –> split –> map –> reduce –> output) 主要有两步: 第一、任务切分(Folk) 第二、结果合并 (Join) 使用说明自JDK1.7开始,java.util.concurrent包下提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。多线程ForkJoinPool运用了Fork/Join原理,使用“分而治之”的思想,将大任务分拆成小任务分配给多个线程执行,最后合并得到最终结果,加快运算。

RabbitMQ分析全解之RabbitMQ介绍

RabbitMQ介绍什么是RabbitMQ?RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP,高级消息队列协议) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

秒杀系统扣减库存的常见几种设计

背景我以前参与做过一个社交电商平台,其中就有秒杀场景,现在我从事的互联网酒店行业也有类似的秒杀场景,所以准备写一点关于秒杀相关的文字,就当总结记录一下吧。秒杀最主要的一个业务部门和我们技术部门需要注意一点,就是要防止超卖,而这个是电商行业经常会出现的现象。没有接触过秒杀的童鞋,可能会觉得,库存 200 件就卖 200 件,在数据库里减到 0 不就好了啊,这有什么好麻烦的?是的,理论上是这样,但是具体到业务场景中,“减库存”就不是这么简单了。例如,我们平常在淘宝或者京东上购物都是这样,看到喜欢的商品然后下单,但并不是每个下单请求你都最后付款了。你说系统是用户下单了就算这个商品卖出去了,还是等到用户真正付款了才算卖出了呢?这是个值得我们一起探讨问题!我们可以先根据减库存是发生在下单阶段还是付款阶段,把减库存做一下划分。 扣减库存主要有哪几种方式呢在正常的电商平台购物场景中,用户的实际购买过程一般分为两步:下单 和 付款。你想买一台佳能单反相机,在商品页面点了“立即购买”按钮,核对信息之后点击“提交订单”,这一步称为下单操作。下单之后,你只有真正完成付款操作才能算真正购买,也就是俗话说的“落袋为安”。那如果你是架构师,你会在哪个环节完成减库存的操作呢?总结来说,减库存操作一般有如下几个方式: