后端

分布式锁方案论证与实现

光仔December 发布于 2018-11-05

概述 我们在实际的接口或者业务开发中,不管是服务器单点还是服务器集群,都会有分布式锁的使用场景。 比如最常见的接口重复提交(业务重复处理)、商品超卖等问题,通用的解决方案就是本文所使用的“分布式锁”, 在同一个业务中,其中一个请求获取到锁之后,其他请求只有在获取到锁的请求释放锁(...

阅读(731)评论(0)赞 (1)

简单说说Kafka中的时间轮算法

2

光仔December 发布于 2018-10-29

零、时间轮定义 简单说说时间轮吧,它是一个高效的延时队列,或者说定时器。实际上现在网上对于时间轮算法的解释很多,定义也很全,这里引用一下朱小厮博客里出现的定义: 参考下图,Kafka中的时间轮(TimingWheel)是一个存储定时任务的环形队列,底层采用数组实现,数组中的每个元...

阅读(609)评论(0)赞 (2)

RabbitMQ使用分析和高可用集群搭建

5

光仔December 发布于 2018-07-18

一、RabbitMQ 基础理解     RabbitMQ,是一个使用 erlang 编写的 AMQP(高级消息队列协议)的服务实现,简单来说,就是一个功能强大的消息队列服务。 概念理解: Producer: 消息发送者 RabbitMQ: Vhost: 相当于分组,每个vhost...

阅读(662)评论(0)赞 (1)

Zookeeper入门看这篇就够了

13

光仔December 发布于 2018-07-14

Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 上面的解释有点抽象,简...

阅读(623)评论(0)赞 (0)

Spring Boot搭建Web项目要点

光仔December 发布于 2018-07-11

搭建WEB项目过程中,哪些点需要注意: 1、技术选型:       前端:freemarker、vue 后端:spring boot、spring mvc 2、如何包装返回统一结构结果数据? 首先要弄清楚为什么要包装统一结构结果数据,这是因为当任意的ajax请求超时或者越权操作时...

阅读(640)评论(0)赞 (0)

Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?

3

光仔December 发布于 2018-07-07

前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。 本文就来从历史源头说道说道。 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 ja...

阅读(539)评论(0)赞 (1)

Netty(一) SpringBoot 整合长连接心跳机制

15

光仔December 发布于 2018-07-07

前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要发送心跳。 服务端可以主动 push 消息到客户端。 基于 Sp...

阅读(537)评论(0)赞 (0)

【NIO系列】——之IO模型

7

光仔December 发布于 2018-07-04

上一篇我们讲到了关于TCP/IP协议的一些内容,这些是网络编程的必备知识。在了解NIO之前我们必须要了解一下对应的系统层IO模型,比如java的NIO对应是那种IO模型,阻塞和同步的差异在哪里,又是否相同。了解了这些更方便我们的后续的NIO探解。 一、同步、异步、阻塞、非阻塞 同...

阅读(511)评论(0)赞 (0)

java 多线程—线程怎么来的?

3

光仔December 发布于 2018-06-26

并发处理的广泛应用是使得amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。 并发并非一定得用多线程,多进程也可以,不过java里面谈论并发,大多数与线程脱不开关系。因此我们从线程说起。本文主要包含以下内容: 线程的实现 线程的调...

阅读(607)评论(0)赞 (0)