将来 须要的是 轻量 的 操做系统 而 不是 容器

将来 须要的是 轻量 的 操做系统 , 而 不是 容器 。                 html

 

对于  客户端 、桌面 , 须要的是 知足用户需求的 ,生活化的  智能化的 操做系统 。程序员

对于 服务器端 , 须要 的 是  轻量 的 操做系统 。算法

 

所谓 轻量,  就是  简单 直接 的 给出  服务器 须要 的 功能。  或者说, 服务器端程序 须要 的 功能 , 或者说, 开发者 须要 的 功能 。安全

 

设备驱动  进程调度  虚拟内存  网络通讯 ,  这些 都已经 发展 到   成熟 和  饱和  了。 服务器

并不难。 也并不大。 所谓 并不大 。 是指 , 这些 功能 的 代码量 并不须要 很大 。 在 不运转 时 占用 系统的 资源 很 小 。网络

这些 是 如今 能够作到 的 , 也是 现状 。架构

我在另外一篇文章 《浅谈 操做系统原理》 http://www.javashuo.com/article/p-kfizjtdl-u.html    中 对 操做系统 的 基本 组成 和 原理 做过度析 。框架

 

而  所谓 的  各类  对于  服务器 能力 的 扩展 ,  本质上 , 都是 围绕 网络通讯 为 重点 来 发展 的 。分布式

参考 下面 这 2  篇 文章:工具

https://blog.csdn.net/mawming/article/details/51941771                                                                

https://blog.csdn.net/wodeyuer125/article/details/43274527               

 

将来的 服务器操做系统 , 要实现的, 是 把  网络通讯(Socket) 的 能力 发挥 到  CPU 内存 网卡 的 极限, 就这件事 。

 

还有 另一件事, 就是 线程 的 轻量化 :

减少 线程上下文,减小 线程切换的工做量,线程切换 轻量化,线程 轻量化, 是 操做系统 轻量化 的 一个 方向 。

关于 线程 的 轻量化, 可参考 《后线程时代 的 应用程序 架构》  http://www.javashuo.com/article/p-blioukym-ga.html

 

一个 轻量 的 操做系统, 实现 了上述 的 功能 。 就 足够 了 。

简单明了 的 内核 , 清晰 的 意图 , 明确 的 要 解决 的 问题 。

若是 还不够 , 本身 改写 内核 。 简单明了  意图清晰  的  轻量 操做系统   鼓励  你 这么 作 。

 

若是 须要   “镜像” (用于 部署 程序), 那么  轻量 操做系统 能够 提供 镜像 。

 

将来 ,只须要一块 智能的 主板,能够灵活的配置硬件配伍就行。硬件是指 CPU 内存 外存 等 。

外存的存储空间分配是由外存的固件程序实现 。

 

对于  服务器 能力的扩展 , 还有 集群治理 和 突破一些传统架构上的瓶颈 。

将来 是 服务器 “团队做战” 的时代 , 因此须要 集群治理 。

传统架构上的瓶颈如今能够看到的主要是 同步/互斥(Lock) 可能对将来 并行计算 和 大幅利用多核资源 形成的瓶颈 。 这部分我在 《漫谈 C++ 内存堆 实现原理》    http://www.javashuo.com/article/p-huenfaog-bk.html      文中大概提到 , 主要提到了 堆分配 和 套接字(Socket) 受到 同步/互斥(Lock) 的限制 。

集群治理 并不难 , 能够偏重于硬件 , 经过一些 总线 之类 的方式 , 也能够是比较灵活的 ,偏重于软件的方式 。 软件的方式主要是 网络通讯 , 经过 网络通讯 来实现 服务器 之间的通讯的协做 。

这并不难 , ……  好比 , 我举个例子, …… 

……

能够看看    《利用 MessageRPC 和 ShareMemory 来实现分布式并行计算》    http://www.javashuo.com/article/p-glolrmri-et.html  ,  

说到这里 , 我又要笑了 ,  不是我又推销个人研究成果 , 而是这真的不难 , 就像上面 MessageRPC 和 ShareMemory 这样 , 再加些 协做算法就差很少了吧 ?

我想说的另外一点是 , 这并不难 , 咱们不须要一次又一次的 去 创造一些 “抽象层” , 没有必要 。

一次又一次的 创造 “抽象层” 会让事情复杂 。 实际上 , 这原本是 很简单的一个事情 。

 

堆 确实是比较重要的一个 基础模块 。 是 动态分配 内存 , 动态使用 内存 的 基础 。 算法也有那么一点啰嗦和小复杂 。 但 实现了 堆之后 , 就能够方便的 动态使用 内存了 。

操做系统 的 虚拟内存 可能比 堆 还简单一点 , 由于 虚拟内存 页 的 大小 是固定的 , 而 堆 里的 内存块 的 大小 数量 起始地址 多是任意的 。

 

少搞一点 框架 , 大多数时候 , 库(Lib) 就足够了 , 库 是 最友好 的 。

 

还能够看看我写的另一篇文章    《谈谈在 .Net 平台上的 软件生态 和 软件生产力》    http://www.javashuo.com/article/p-htejkczu-em.html 

《程序员的职业归属》     http://www.javashuo.com/article/p-wbqmkext-ea.html

 

咱们来看看一篇文章    《云架构师进阶攻略(2)》     https://sq.163yun.com/blog/article/215552048311889920?tag=M_tg_546_65

这是一个系列的文章, 这是 第 2 篇, 

文章的内容 不少, 很详实 。

 

咱们再看看文中的一篇 连接 的文章   《容器平台选型的十大模式:Docker、DC/OS、K8S谁与当先?》

https://mp.weixin.qq.com/s?__biz=MzI1NzYzODk4OQ==&mid=2247484679&idx=1&sn=60344c7d43fd8a90324f4f90b9f83aad&chksm=ea151225dd629b33ad01036012457b0afcd43781c694c6e50c720e8156cba6bc4fb1a524c7ab&scene=21#wechat_redirect

 

 

若是 仅仅 是 为了 镜像(部署),

那么 , 操做系统   也能够, 只须要 在 操做系统 里 增长一个 部署工具 就能够了  。

这样 就 不须要 资源分配 容器隔离(安全) 等  复杂技术 ,

固然 也就 无所谓 容器 一说了 ,

只须要 操做系统 集成 一个 部署工具 就能够 。

这样的话, 操做系统(虚拟机)   也能够作到   镜像很小(只包括 应用),  秒级启动,  快速复制  。

 

这里的 镜像 固然不是 虚拟机镜像,  而是 应用 的 镜像 ,

咱们这里所说的是 不须要 频繁 的 建立销毁 虚拟机, 可是能够 快速的 复制和部署 应用镜像 到 虚拟机 上 。

或者说, 建立销毁 虚拟机 的 速度 能够和 复制部署 应用镜像 的 速度 处于 2 个 数量级 上  。

也能够说, 这种方式也使得 迁移 的 速度 不受 虚拟机镜像 大小 的 限制 了 。 

或者说, 迁移 速度 和 虚拟机镜像 大小 无关 了 。

迁移 速度 只和 应用镜像 大小 有关 。

由于在这种架构下, 虚拟机镜像 不包含 应用, 只是标准的 操做系统 。

因此, 

即便是 异地迁移, 异地环境 也应该会提早准备好 须要的 虚拟机镜像(操做系统), 因此 迁移 速度 和 虚拟机镜像 无关,

只和 应用镜像 有关 。

 

事实上, 我在另一篇文章《谈谈 ServerFul 架构》    http://www.javashuo.com/article/p-yzetvfzb-gh.html       中 谈到过 以 服务器(Server) 为 单元(基本计算单位) 的 架构, 

Server + 部署工具 = Server 集团做战

 

即,   “Server + 部署工具”    就能够实现   “Server 的 集团做战”    了 。

 

固然, 部署工具, 包含了一个 镜像 的 标准 和 实现,  我想 这并不难 。

核心算法  就是  复制文件  么 。:)   ^^ ^^ ^^

 

可参考另外一篇文章  《我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager》   http://www.javashuo.com/article/p-ufbwsosk-gv.html

 

有网友说,  “这个所谓的轻量级操做系统,更像一个增强版容器,而不是操做系统” ,

是的, 也不是的, 

虚拟机 操做系统 容器, 原本 就是 同一种 性质的 技术, 能够说 都是 操做系统 技术,

就看 “壳” 在 外 ,仍是 “壳” 在内  。

我之因此 倾向于 轻量操做系统 而不是 容器, 

是由于,

操做系统 是一个 普遍接受 的 入口(抽象层) ,

没有必要 再造一个 入口(抽象层),

再造一个 入口 致使的 结果 就是  复杂   。

实现新的 抽象层(容器) 的 技术 是 复杂的,

使用 容器 的 技术 也是 复杂的,

复杂 一般会 束缚   战斗力   爆发力    张力  。

相关文章
相关标签/搜索