JVM
2024-02-27 17:07:41 11 举报
AI智能生成
登录查看完整内容
JVM(Java虚拟机)是Java技术的核心组成部分,它是一个虚拟的计算机系统,负责执行Java字节码。JVM的主要任务是加载、验证和执行Java程序,确保它们在各种硬件和操作系统平台上的可移植性和兼容性。JVM还提供了一个内存管理模型,使得Java程序员无需关心底层内存分配和垃圾回收,从而专注于编写高质量的代码。此外,JVM还具有即时编译、多线程支持和安全机制等功能,使得Java程序能够高效、稳定地运行。总之,JVM是Java技术的核心,它为Java程序员提供了一个可靠、高效的编程环境。
作者其他创作
大纲/内容
零拷贝
阻塞IO 读写都阻塞
问题 带宽 资源等
每个请求过来 开一个线程阻塞
bio
不阻塞来着不拒
程序注册一组socket文件描述符给操作系统,表示“我要监视这些fd是否有IO事件发生,有了就告诉程序处理”
便捷的通知机制
IO多路复用
遍历 判断事件是否可达 然后继续
select
做了优化
poll
有转态 会创建 文件描述符指向的表 监听增删改查
epoll
但是可能等待时间太久 响应延迟大了 太短了 会重试
监听事件
通道 buffer 多路复用
nio
aio
架构设计思路
初始化channel
任务队列
注册 channel到selector
轮训accept事件 处理这些简历 channel的链接
注册 channel到selector 接收方
轮训写 事件 开线程去处理
执行链路
监听端口所有准备就绪的时间
boss
监听准备工作
work
线程组
Netty
调用链路
IOC 启动加载dubbo配置的标签
解析标签 ServiceBean 会生成一个Bean
get provider
set provider
各种信息 保存在 ServiceBean
afterpropertiesSet
实现了 initializingBean
是否暴露 不是延迟暴露
回调onapplicationEvent
IOC完成 还实现了一个 ApplicationListener监听器
检查
加载注册中心信息
根据spi来
本地暴露
打开 服务器 exchangeServer
启动服务器netty 监听端口
执行器
注册表
注册中心 注册服务
暴露 p 和 s 两个invoker的map保存了地址
暴露invoke
spi
代理工厂获取invoke 封装
循环协议 端口
doexportURL 暴露URL
信息校验 doexport
暴露
服务暴露过程
init
factoryBean ->getObject ->get
创建代理对象 createProxy
信息检查
dubbo 执行远程引用
远程引用 获取到zk 获取到信息 订阅
注册到注册表进去
返回invoke
创建 netty客户端
成功
服务引用
Java 没ioc aop
java spi
静态代理
具体的spi kv形式
SPI
直接切换
failover
快速失败
failfast
failsafe
failback
forking cluster
broadcast cluster
失败回调
返回默认
整合 hystrix
容错机制
return null
失败返回空
降级
随机 加权
轮训
最少活跃数
hash一致
负载均衡
选举算法
注册中心
默认 nio 单一长连接
二进制系列化 小数据量 100k
数据量中等 不适合文件传输
dubbo
memcached
redis
webService
http
协议
Dubbo
0 条评论
回复 删除
下一页