摘要:
一、Redis实现分布式锁基本原理 主要就是redis的setnx(id,value)指令 在Redis中,有一个不常使用的命令如下所示。 SETNX key value 这条命令的含义就是“SET if Not Exists”,即不存在的时候才会设置值。 只有在key不存在的情况下,将键key的值 阅读全文
摘要:
生成为唯一id一般通用方案 1. UUID:如果只考虑唯一性,是可行的。 缺点: 2. 数据库自增主键 在分布式集群中的缺点: 3. 基于redis生成全局id策略 因为Redis是单线的天生保证原子性,可以使用原子操作INCR和INCRBY来实现 4. snowflake Twitter的分布式自 阅读全文
摘要:
1.IO模型,首先对Java网络编程的发展流程回顾一下,最开始的TCP/IP服务器,Java原生IO,到后面的BIO,最后是Netty。 2.Java 共支持 3 种网络编程模型/IO 模式: BIO、 NIO、 AIO 。 Java BIO : 同步并阻塞(传统阻塞型), 服务器实现模式为一个连接 阅读全文
摘要:
1.Java NIO 基本介绍 1) Java NIO 全称 java non-blocking IO, 是指 JDK 提供的新 API。 从 JDK1.4 开始, Java 提供了一系列改进的输入/输出的新特性, 被统称为 NIO(即 New IO), 是同步非阻塞的.2) NIO 相关类都被放在 阅读全文
摘要:
Java AIO 基本介绍 1) JDK 7 引入了 Asynchronous I/O, 即 AIO。 在进行 I/O 编程中, 常用到两种模式: Reactor 和 Proactor。 Java 的NIO 就是 Reactor, 当有事件触发时, 服务器端得到通知, 进行相应的处理2) AIO 即 阅读全文
摘要:
基本介绍 1) Java 的 NIO, 用非阻塞的 IO 方式。 可以用一个线程, 处理多个的客户端连接, 就会使用到 Selector(选择器)2) Selector 能够检测多个注册的通道上是否有事件发生(注意:多个 Channel 以事件的方式可以注册到同一个Selector), 如果有事件发 阅读全文
摘要:
工作原理示意图 1-简单版 Netty 主要基于主从 Reactors 多线程模型(如图) 做了一定的改进, 其中主从 Reactor 多线程模型有多个 Reactor 对上图说明 1) BossGroup 线程维护 Selector , 只关注 Accecpt。2) 当接收到 Accept 事件, 阅读全文
摘要:
基本介绍 1) 异步的概念和同步相对。 当一个异步过程调用发出后, 调用者不能立刻得到结果。 实际处理这个调用的组件在完成后, 通过状态、 通知和回调来通知调用者。2) Netty 中的 I/O 操作是异步的, 包括 Bind、 Write、 Connect 等操作会简单的返回一个 ChannelF 阅读全文
摘要:
1.编码和解码的基本介绍 :1) 编写网络应用程序时, 因为数据在网络中传输的都是二进制字节码数据, 在发送数据时就需要编码, 接收数据时就需要解码 [示意图]2) codec(编解码器) 的组成部分有两个: decoder(解码器)和 encoder(编码器)。 encoder 负责把业务数据转换 阅读全文
摘要:
1) 实例要求: 使用 IDEA 创建 Netty 项目2) Netty 服务器在 6668 端口监听, 浏览器发出请求 "http://localhost:6668/ "3) 服务器可以回复消息给客户端 "Hello! 我是服务器 5 " , 并对特定请求资源进行过滤.4) 目的: Netty 可 阅读全文