随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
03 2022 档案
第五章—Netty高性能架构设计:(3)Netty模型
摘要:一、Netty 工作原理示意图-简单版 Netty 主要基于主从 Reactors 多线程模型(如图) 做了一定的改进, 其中主从 Reactor 多线程模型有多个 Reactor 图解说明: (1)BossGroup 线程维护 Selector , 只关注Accecpt; (2)当接收到Accep
阅读全文
第五章—Netty高性能架构设计:(2)Reactor线程模式
摘要:一、Reactor 模式分类: 根据 Reactor 的数量和处理资源池线程的数量不同, 有 3 种典型的实现 单 Reactor 单线程 单 Reactor 多线程 主从 Reactor 多线程 二、单 Reactor 单线程 1、工作原理示意图 原理图,并使用 NIO 群聊系统验证:Reacto
阅读全文
第五章—Netty高性能架构设计:(1)线程模型介绍
摘要:一、线程模型基本介绍 (1)不同的线程模式,对程序的性能有很大影响,为了搞清Netty 线程模式,我们来系统的讲解下各个线程模式, 最后看看Netty 线程模型有什么优越性. (2) 目前存在的线程模型有: 传统阻塞 I/O 服务模型 Reactor 模式 (3)根据 Reactor 的数量和处理资
阅读全文
第四章—Netty:(1)Netty概述
摘要:一、原生NIO存在的问题 (1) NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 (2)需要具备其他的额外技能:要熟悉 Java 多线程编程, 因为 NIO 编程涉及到 Reac
阅读全文
第三章—Java NIO编程:(9)AIO及三种IO对比
摘要:一、Java AIO 基本介绍 JDK 7 引入了 Asynchronous I/O, 即 AIO。 在进行 I/O 编程中,常用到两种模式:Reactor和 Proactor。Java 的 NIO 就是 Reactor,当有事件触发时,服务器端得到通知, 进行相应的处理。 AIO 即 NIO2.0
阅读全文
第三章—Java NIO编程:(8)零拷贝
摘要:一、零拷贝基本介绍 (1)零拷贝是网络编程的关键, 很多性能优化都离不开。 (2)在 Java 程序中,常用的零拷贝有 mmap(内存映射) 和 sendFile。那么,他们在OS里,到底是怎么样的一个的设计? 我们分析 mmap 和 sendFile 这两个零拷贝。 (3)另外我们看下NIO 中如
阅读全文
I-第七章:(1)SpringCloud Config分布式配置中心
摘要:一、概述 1、分布式系统面临的 配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个
阅读全文
I-第六章:(1)Zuul路由网关
摘要:一、Zuul 概述 1、Zuul 是什么 Zuul包含了对请求的路由和过滤两个最主要的功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul
阅读全文
I-第五章:(1)Hystrix 断路器
摘要:一、概述 1、分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过
阅读全文
I-第四章:(1)Feign 负载均衡
摘要:一、概述 1、Feign是什么 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加
阅读全文
I-第三章:(1)Ribbon 负载均衡
摘要:一、概述 1、是什么 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的
阅读全文
I-第二章:(1)Eureka 服务注册与发现
摘要:一、Eureka 是什么 Eureka 是什么? Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到
阅读全文
第三章—Java NIO编程:(7)群聊系统
摘要:一、案例要求 实例要求: 编写一个 NIO 群聊系统, 实现服务器端和客户端之间的数据简单通讯(非 阻塞) 实现多人群聊 服务器端: 可以监测用户上线, 离线,并实现消息转发功能 客户端: 通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受 其它用户发送的消息(有服务器转发得到) 目
阅读全文
04第一章:04_Mongoose框架
摘要:一、Mongoose 1、简介 之前我们都是通过shell来完成对数据库的各种操作的,在开发中大部分时候我们都需要通过程序来完成对数据库的操作。 而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块。 Mongoose是一个对象文档模型(ODM)库,它对Node原生的Mongo
阅读全文
I-第一章:(3)REST 微服务案例
摘要:一、准备工作 承接着之前的SpringMVC+Mybatis+MySQL初级高级课程,以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务 需要掌握的知识: Spring SpringMVC MyBatis My
阅读全文
I-第一章:(2)SpringCloud 简介
摘要:一、SpringCloud是什么? 1、官网说明: SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。 SpringCl
阅读全文
02第一章:02_MongoDB基本操作
摘要:一、三个概念 数据库(database) 数据库是一个仓库,在仓库中可以存放集合。 集合(collection) 集合类似于数组,在集合中可以存放文档。 集合就是一组文档,也就是集合是用来存放文档的 集合中存储的文档可以是各种各样的,没有格式要求 文档(document) 文档数据库中的最小单位,我
阅读全文
01第一章:01_MongoDB简介与安装
摘要:一、数据库(Database) 数据库是按照数据结构来组织、存储和管理数据的仓库。 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。 所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。 说白了,数据库就是
阅读全文
I-第一章:(1)微服务
摘要:一、面试题 什么是微服务? 微服务之间是如何独立通讯的 springCloud和Dubbo有哪些区别? SpringBoot和SpringCloud,请你谈谈对他们的理解 什么是服务熔断?什么是服务降级 微服务的优缺点分别是什么?说下你在项目开发中碰到的坑 你所知道的微服务技术栈有哪些?请列举一二
阅读全文
SpringCloud 【目录】
摘要:SpringCloud 第一季 一、微服务 1、微服务 2、SpringCloud 简介 3、REST 微服务案例 二、Eureka 服务注册与发现 1、Eureka 服务注册与发现 三、Ribbon 负载均衡 1、Ribbon 负载均衡 四、Feign 负载均衡 1、Feign 负载均衡 五、Hy
阅读全文
第三章—Java NIO编程:(6)SelectionKey、ServerSocketChannel与SocketChannel
摘要:一、 SelectionKey 1、SelectionKey SelectionKey, 表示Selector和网络通道(Channel)绑定的关系。 以 SelectorImpl 为例,看一下源码: public abstract class SelectorImpl extends Abstra
阅读全文
第三章—Java NIO编程:(5)Selector 选择器
摘要:一、Selector 基本介绍 (1)Java的NIO,用非阻塞的IO方式。可以用一个线程,处理多个的客户端连接,就会使用到 Selector(选择器)。 (2)Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel以事件的方式可以注册到同一个Selector), 如果有
阅读全文