一、I/O基础概念
1、文件描述符
对文件的读写操作会调用内核提供的系统命令,并返回一股file descriptor ,简称fd, 是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性)。 类似的,对一个socket的读写也会产生相应的描述符(socketfd)。
2、5种I/O模型
UNIX网络编程提供的5种I/O模型:
1)阻塞I/O模型:
最常用,默认情况所有文件操作都是阻塞的。
![](http://cdn.gydblog.com/images/middleware/netty-1.png)
我们一起来搬砖
对文件的读写操作会调用内核提供的系统命令,并返回一股file descriptor ,简称fd, 是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性)。 类似的,对一个socket的读写也会产生相应的描述符(socketfd)。
UNIX网络编程提供的5种I/O模型:
最常用,默认情况所有文件操作都是阻塞的。
Zookeeper是个数据库,文件存储系统,并且有监听通知机制(观察者模式)。
ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。
使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),ZooKeeper能够通用解决这些问题的中间件。
zk的节点类型有4大类
RPC 的出现就是为了让你调用远程方法像调用本地方法一样简单。
从历史发展的角度来答:阿里巴巴开源的一个基于 Java 的 RPC 框架,在2017年重新开始维护,并且在 2018 年和当当的 Dubbox 进行了合并,进入 Apache 孵化器,在 2019 年毕业正式成为 Apache 顶级项目。 Dubbo 社区主力维护的是 2.6.x 和 2.7.x 两大版本,2.6.x 版本主要是 bug 修复和少量功能增强为准,是稳定版本。最新的 3.0 版本往云原生方向上探索着。
目前在市面上比较主流的消息中间件主要有,Kafka、ActiveMQ、RabbitMQ、RocketMQ 等这几种。
消息中间件一般用来在分布式系统中实现异步、削峰、解耦
消息模型有队列模型和发布订阅模型。
队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以通过消息全量存储至多个队列来解决一条消息被多个消费者消费问题,但是会有数据的冗余。
👨💻面试官 :介绍一下自己对 Netty 的认识吧!小伙子。
🙋 我 :好的!那我就简单用 3 点来概括一下 Netty 吧!
Spring Cloud
就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。
基于官方文档翻译,根据个人理解总结于此。
容器知识学习大纲如下:
基于官方文档翻译,根据个人理解总结于此。
Spring IoC容器管理一个或多个bean。这些bean是使用开发者提供给容器的配置元数据创建的(例如,以XML‘
Spring还允许开发者在容器外部创建Bean。这是通过getBeanFactory()方法访问ApplicationContext的BeanFactory来完成的,该方法返回DefaultListableBeanFactory实现。DefaultListableBeanFactory通过registerSingleton(..)和registerBeanDefinition(..)方法支持此注册。然而,一般情况应用程序仅使用通过常规bean定义方式注册bean(XML、Java)。
本文总结了如何在linux环境下通过docker compose离线部署各种基础应用组件,后续会增加更多的应用组件部署说明,有需要的朋友可以关注我!
#拉取最新的minio(需要网络)
docker search minio
docker pull minio/minio
#查看已安装的minio镜像
docker images
#导出minio镜像的安装包
docker save minio/minio -o minio.tar