摘要: HSF其实是一个RPC框架,RPC是Remote Procedure Call,就是远程服务调用.这个功能为什么要写个框架而不是十几行代码呢,因为在分布式场景下并不是这种点对点通讯的模式。rpc要素:where how地址:注册中心ConfigServer,... 阅读全文
posted @ 2018-10-12 19:57 john8169 阅读(777) 评论(1) 推荐(0) 编辑
摘要: 单机数据库分布式数据库TDDL原理与最佳实践1. 数据库的结构1.1. KV存储(id是K)1.2. B+树与红黑树B+树的特点是叶子节点是块状,一个叶子里面有多个数据,相邻数据是存在一起的,123,456起等,而磁盘也是按块的,B+树的数据是按块存储的正好... 阅读全文
posted @ 2018-10-12 19:56 john8169 阅读(1380) 评论(1) 推荐(1) 编辑
摘要: /** * Returns an {@code int} value with at most a single one-bit, in the * position of the highest-order ("leftmost") one-bit in ... 阅读全文
posted @ 2018-10-12 19:53 john8169 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 想要根据用户分组,以该用户的下单时间为降序,提取所有用户的第二个订单信息。这属于分组排序,在Oracle有内置函数可以实现,而在mysql就有点麻烦:CREATE TABLE user_orders (orders_id INT UNSIGNED NOT N... 阅读全文
posted @ 2018-10-12 19:46 john8169 阅读(4819) 评论(1) 推荐(1) 编辑
摘要: 1. 前言本文档旨在描述RocketMQ的多个关键特性的实现原理,并对消息中间件遇到的各种问题进行总结,阐述RocketMQ如何解决这些问题。文中主要引用了JMS规范与CORBA Notification规范,规范为我们设计系统指明了方向,但是仍有不少问题规... 阅读全文
posted @ 2018-10-09 22:18 john8169 阅读(1069) 评论(0) 推荐(0) 编辑
摘要: 1. 前言本文档旨在描述RocketMQ使用过程中的一些最佳实践,建议用户这样做,但是非必须。2. Producer最佳实践2.1 发送消息注意事项一个应用尽可能用一个Topic,消息子类型用tags来标识,tags可以由应用自由设置。只有发送消息设置了ta... 阅读全文
posted @ 2018-10-09 22:18 john8169 阅读(322) 评论(0) 推荐(0) 编辑
摘要: Name Server:维护broker的地址列表,以及topic和topic对应的队列的地址列表。每个broker与每个Name Server之间使用长连接来保持心跳,并向其定时注册topic信息。可以从两个维度来理解Name Server的能力: 1)N... 阅读全文
posted @ 2018-10-09 22:15 john8169 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 流与块的比较原来的 I/O 库(在 java.io.*中) 与 NIO 最重要的区别是数据打包和传输的方式。正如前面提到的,原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的... 阅读全文
posted @ 2018-10-09 22:09 john8169 阅读(123) 评论(0) 推荐(0) 编辑
摘要: ClassNotFoundException:它是Exception,不是Error在Throwable体系中只是一个Exception,说明它是可恢复的发生的时机当应用试图通过给定的name加载对应的class时可能抛出此异常,找不到对应的class文件时... 阅读全文
posted @ 2018-10-09 22:09 john8169 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1. Future模式简介Future模式就是,当某一程序提交请求,期望得到一个答复。但是可能服务器程序对这个请求的处理比较慢,因此不可能马上收到答复。但是,在传统的单线程环境下,调用函数是同步的,它必须等到服务程序返回结果,才能继续进行其他处理。而Futu... 阅读全文
posted @ 2018-09-29 21:29 john8169 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 0. 前言HSF是一个分布式的远程服务调用框架,其实我更喜欢把分布式几个字去掉,因为HSF本身并不是一个单独的服务(指一个进程),他是附属在你的应用里的一个组件,一个RPC组件(远程过程调用——Remote Procedure Call,是一种通过网络从远程... 阅读全文
posted @ 2018-08-05 17:35 john8169 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 1. HSF的基本概念HSF全称为High-Speed Service Framework,旨在为淘系的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持,从而可以很容易的开发分布式的应用以及提供或使用公用功能模块... 阅读全文
posted @ 2018-08-05 17:34 john8169 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 0.背景随着服务框架和服务治理体系的逐步成熟,服务化已成为系统设计的趋势。随着业务复杂度的增加,依赖的服务也逐步增加,出现了不少由于服务调用出现异常问题而导致的重大事故,如:1)系统依赖的某个服务发生延迟或者故障,数秒内导致所有应用资源(线程,队列等)被耗尽... 阅读全文
posted @ 2018-08-05 17:33 john8169 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1. 概述谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现... 阅读全文
posted @ 2018-08-05 17:32 john8169 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 0. 前言缓存系统是提升系统性能和处理能力的利器,常用的缓存系统各自的特性和使用场景有所不同,这里总结下常用缓存系统时需要关注的点以及解决方案,以及业务中缓存系统的选型等。本文内容主要包括以下: * 缓存使用中需要注意的点:热点、惊群、击穿、并发、一致性、预... 阅读全文
posted @ 2018-07-30 23:13 john8169 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 1 同步与异步首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的。1.1 概念描述所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后, 依赖的任务才能算完成,这是一种可靠的任务... 阅读全文
posted @ 2018-07-30 23:12 john8169 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis ... 阅读全文
posted @ 2018-07-30 23:11 john8169 阅读(7030) 评论(1) 推荐(3) 编辑
摘要: IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。目前支持I/O多路复用的系统调... 阅读全文
posted @ 2018-07-30 23:10 john8169 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 0. 前言memcached和redis,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了。前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习, 有理解错误之处,欢迎指正。1. 综述读一个软件的源... 阅读全文
posted @ 2018-07-30 23:08 john8169 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 0. 前言Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler):文件事件处理器使用 I/O 多路复用(multiplexing)程序来同时监听多个套接字, 并根据套接字目前... 阅读全文
posted @ 2018-07-30 23:06 john8169 阅读(202) 评论(0) 推荐(0) 编辑