lewenweijia / notes

🏊 dive dive diving
1 stars 0 forks source link

浏览器多进程架构 #30

Open lewenweijia opened 4 years ago

lewenweijia commented 4 years ago
浏览器?: 浏览器主线程 + withSandbox(渲染进程)(s) + 插件进程(s)

浏览器主线程负责?
1. 下载资源
2. 管理IPC
3. 显示渲染进程生成的图片 (渲染进程肯定不能碰触显卡啊)

单进程模型, 任务按线程划分? -> 不稳定的啊

withSandbox(Render Process):  => 只是个执行逻辑的fn, 有输出(合成的结果图片)的哦
  1. (x) 硬盘数据
  2. (x) 系统权限
lewenweijia commented 4 years ago
现代多进程浏览器架构?:
1. 浏览器主进程
2. 网络进程(从早期的浏览器进程中独立出来)
3. GPU进程(从早期的大型单体浏览器主进程独立出来)
4. withSandbox(渲染进程)(s)
5. 插件进程(s)

一个页面? <==> 一个渲染进程

职责?:
1. 浏览器主进程: 界面显示(拿渲染进程的合成图片结果的啊), 用户交互, 子进程管理, 提供存储功能
2. 渲染进程(页面): v8线程 + blink排版线程 <--- 浏览器主进程为这个子渲染进程投喂以html/css/js的啊
    然后的然后就产生可以交互和查看的有意义界面的哦
3. GPU进程?: 一开始是为了3d css效果引入GPU的, 后来Chrome的UI也采用了GPU进行渲染, GPU独立
    成进程成了刚需
4. 网络进程?: 由浏览器主进程管理调度进行为页面(渲染进程)的消费材料进行远程获取的啊
5. 插件进程? up 稳定性, 用进程进行隔离, 以保证插件的奔溃不会对页面(渲染进程)和浏览器主进程
   造成影响的啊

多进程架构带来的好处?: 
1. 稳定性, (页面奔溃 -(x)-> 整个浏览器进程的奔溃的啊)
2. 流畅性(一个渲染进程[页面]的卡死(例如js死循环)不影响其他
3. 安全性 ==> withSandbox(渲染进程)

多进程架构带来的代价?:
1. 更多的资源, 维护进程的代价, 多个渲染进程/插件进程之间都有共同的基础结构的副本
2. 更复杂的架构体系 ---> 现代浏览器架构耦合性高 扩展性差

未来的浏览器架构瞻望?:
2016年 -> Chrome团队引入SOA思想(service-oriented architecture)
原来的模块都被分割成独立的服务(service), 都在独立进程, 访问服务必须使用
一开始定义好的接口, 服务与服务之间通过IPC进行通信

资源不足的机器? -> 将某些服务合并到主进程里面的啊
Chrome试图应用到更多的业务场景? -> 移动设备,  VR, 为了支持这些场景?
Chrome的架构体系越来越复杂, Chrome最终选择了SOA <-- 现阶段Chrome团队的一个主要任务

SOA?
1. 现代操作系统
2. 现代后台服务器
3. 现代浏览器?
4. 现代化前端架构?
lewenweijia commented 4 years ago
机遇?
越来越多的业务和应用都逐渐转至浏览器来进行开发的啊, 收割技术 红利?

Chrome默认策略?
每个标签对应一个页面一个渲染进程?

有些进程是服务进程