AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

用golang写一个操作系统

发布者 gopher   简介 Gopher
发布于 1430384762423  浏览 12265 关键词 Go 
分享到

第1页

⽤用Golang

写 ⼀一 个 操 作 系 统

复睿:李四保



第2页

⾃自我介绍

l
 开发过银⾏行设备 l
 同花顺移动证券 l
 前后参与创⽴立过多家公司 l
 ⽤用Golang写了⼀一个云操作系统



第3页

⾃自我介绍



l
 多个⾏行业 l
 多种职业



电⼒力、⽯石化、银⾏行、证券、⼲⼴广电、电商 研发、产品、运营、公司运营



l
 喜欢各种宗教 l
 喜欢在虚⽆无中创造⼀一个世界



第4页

结缘Golang

l
 ⽜牛B的作者 l
 曾经的痛点 l
 上帝般的⼿手法



第5页

结缘Golang:上帝的⼿手法

l
 斯宾诺莎 l
 盖娅 l
 ⽂文明 l
 互联⺴⽹网



第6页

结缘Golang:上帝的⼿手法

l
 ⼤大道⾄至简 l
 ⽆无⽤用的都会被舍弃 l
 互动和映照 l
 迭代中前⾏行



第7页

⼩小试⽜牛⼑刀:monitor

简介

监控在线系统所有请求的性能,并通过⺴⽹网⻚页进⾏行提供查询功能

功能

模拟ssh登录各server, 采集所有请求的数据 根据服务器、⽇日期、请求,显⽰示所选请求的性能⾛走势图,包括平均和最⼤大响应时间。 选定时期,显⽰示这⼀一天所有请求的请求数⺫⽬目,平均响应时间中,最⼤大响应时间。 可以根据请求数、平均响应时间,最⼤大响应时间对数据时⾏行排序。

代码

1个⽂文件服务器、5个webapi、6个goroutine 部署简单,可以同时在windows和linux上运⾏行 去掉美观的⾏行,只有200来⾏行



第8页

来份硬菜:⽤用Golang写⼀一个操作系统

l
 程序员 VS 码农 l
 Golang VS C++ l
 和朋友的⼀一场对话

说⼀一万句,不如做⼀一件事:⽤用Golang写⼀一个操作系统



第9页

操作系统历史

l
 操作系统 相对完整的控制系统资源,有应⽤用体系 Unix,CP/M,dos、windows,

l
 ⽣生态操作系统 在原有操作系统内核基础上,构建新的应⽤用体系及应⽤用⽣生态 ios、android

l
 云操作系统 chrome os和阿⾥里云os。在上⼀一层操作系统基础之上和⾃自家的云系统进⾏行整合

l
 去中⼼心化的云操作系统 Leither 架构基本和chrome os类似,只是将后端的云系统去中⼼心化,使之脱离巨头的控制



第10页

国内互联⺴⽹网现状

l
 互联⺴⽹网正在整合各个⾏行业,对各个传统⾏行业进⾏行重构 l
 互联⺴⽹网的格局正在固化

⾏行业巨头垄断互联⺴⽹网资源,全⾯面压制创新空间 l
 ⼈人⼯工智能和智能硬件的快速发展,引起了⼈人们对未来的担忧 l
 过度⾏行政监管⽆无处不在,市场机制⽆无法顺畅运⾏行



第11页

互联⺴⽹网的核⼼心:数据

l
 数据是互联⺴⽹网的核⼼心,是⽤用户的主权 l
 数据⽇日益集中化,规则垄断化,使互联⺴⽹网失去了多样性 l
 《失控》作者:未来会有天量的数据只存在⽤用户本地 l
 ⻄西⽠瓜⼤大丸⼦子汤:⼤大数据处在奴⾪隶社会

⽆无底限的运⽤用规则⽇日益伤害⽤用户的权益,普通⽤用户失去了⾃自主性 案例:⻢马云,⼩小⽶米,Facebook



第12页

⾼高压差之下的机会

l
 ⼲⼴广⼤大⺴⽹网民的各种需求被抑制,包括⼀一些强烈需求 l
 上千万的互联从业⼈人员的创造性被抑制 l
 中⼩小企业和个⼈人对⾃自⾝身数据安全的担忧⽇日益加强



第13页

Leither为此⽽而⽣生!



第14页

Leither是什么?

l
它是⼀一个⼩小程序

前后引⽤用300多M开源代码,多重压缩之后, ⺫⽬目前可执⾏行程序⼤大约只有2到3M

l
 它可以运⾏行在各种常⻅见操作系统下

windows linux android

l
 它可以跑在⽤用户的路由器、PC、甚⾄至⼿手机上



第15页

Leither是什么?

l
 它是⼀一个操作系统 Leither OS

l
 它有⾃自⼰己资源管理体系

动态管理众多在线⺴⽹网民的⺴⽹网络资源、存储资源、运算资源

l
 它有⾃自⼰己的应⽤用体系

现有互联⺴⽹网的⼤大部分服务形态,都可以在Leither上快速构造出来。 可以构造视频⺴⽹网站、微博、微信、IM。。。。。

所有这些应⽤用,⽤用户体验基本不变的情况下 不需要中⼼心服务器存在



第16页

Leither的技术架构



浏 第三⽅方应⽤用



览 结果显⽰示



⽤用户操作



器 数据解析



数据打包



MVC 架构



应 ⽤用 应⽤用发布 层



应⽤用安装



应⽤用管理



数 消息通讯 据 层



⽤用户数据 Swarms



公共数据



⺴⽹网 ⽤用户信息 信⽤用结算



路由



络 ⾃自 好 节 授 担 验 查 维 同 层 ⼰己 友 点 权 保 证 找 护 步





底据 层库



系邮 统件 接模 ⼝口 块



前 端 架 构



WEB Server RPC

邮件⼿手机接⼝口



结果显⽰示 数据解析



第三⽅方应⽤用 ⽤用户操作 数据打包



MVC 架构



浏 览 器



应⽤用发布



应⽤用安装



应⽤用管理



应 ⽤用 层



消息通讯



索引



数据



Swarms



⽤用户信息 信⽤用结算

⾃自 好 节 授 担 验 ⼰己 友 点 权 保 证



路由

查维同 找护步



数 据 层

⺴⽹网 络 层



WEB Server RPC

邮件⼿手机接⼝口



数 据 库



系邮 统件 接模 ⼝口 块



前 端 架 构



底 层



第17页

Leither是什么?

ü 它是⼀一个⽣生态 ü 它有⾃自⼰己的⽣生态成员

应⽤用开发、内容维护、服务提供、系统⽀支撑、传递者、消费者

ü 它有⾃自⼰己的⾦金融体系

通过诺币,将不同⽣生态成员整合在⼀一起

ü 它是⾃自调节的



第18页

Leither的⽣生态结构



价值 实现

价值 传播

系统 ⽀支撑

价值 创造



消费者



传播者



系统⽀支撑



应⽤用开发



内容维护



服务提供



⽤用户 运营、市场、公关 运维 产品、研发



第19页

Leither的-货币

1诺币=1M流量信⽤用 1毫=1K流量信⽤用 1K=1G流量信⽤用



第20页

效率:降低基础设施成本

阿⾥里云2万台服务器 新开的北京中⼼心1万台 http://server.zol.com.cn/452/4522831.html 09年,Google9万台服务器(另说06年45万台)

构建同⾏行规模(⺴⽹网络,存储)⼤大约只需要数千万⼈人民币

类⽐比: ⼀一个是现有的中国电⼒力系统(电⼚厂+电⺴⽹网) ⼀一个是成本低于电费的个⼈人太阳能加⾃自动组⺴⽹网技术



第21页

效率:降低应⽤用开发维护成本

l
 可以⽀支持各种开发语⾔言 php golang java c# js python html5 ⺫⽬目前优先⽀支持html5架构

l
 没有前端和后端之分 只需要对编程要求最低的js程序员再加美⼯工,便可以完成所有开发⼯工作

l
 ⾃自动⽀支持⼤大数据

相⽐比于传统的互联⺴⽹网应⽤用,⽤用户越多,系统的⽀支撑能⼒力越强。同时不需要考虑 应⽤用规模变⼤大之后引发的开发团队失控问题。



第22页

Leither-应⽤用演⽰示:微博

保存⼀一个⼩小⽂文件到桌⾯面,通过浏览器打开。 ⽤用户体验和传统的⺴⽹网⻚页浏览没太⼤大区别: 微博,有新浪微博的⼤大部分功能。



第23页

应⽤用的内部代码展⽰示 api 开发⽅方式 应⽤用发布



第24页

⺫⽬目前阶段:

l
 ⼩小范围内测已过,架构的各体系基本完备,可⾏行性已经验证 l
 ⾃自建节点,⾃自建应⽤用,万⼈人规模左右的内测

现有的微博应⽤用,继续强化



第25页

选Golang的理由

ü 其他语⾔言不适合 ü 丰富的开源资料 ü 跨平台 ü 编绎速度不到3秒 ü 模块化很好,耦合度很低 ü ⼤大量使⽤用google的技术 ü 我喜欢Golang

价值观,哲学思想都⽐比较符合



第26页

其它语⽅方不合适

l
 C或C++ 开发效率低下,最少⼗十⼈人年以上,并且是痛苦的经历

l
 Java 代码臃肿,部署⿇麻烦,不便分发扩散

l
 其它 性能不⾜足,底层接⼝口不⾜足,⽆无法进⾏行系统级的开发

l
 Golang 性能⾜足够,可以操作底层,⽣生成程序⾜足够⼩小,易于分发



第27页

丰富的开源资料

拉下来的github.com⺫⽬目录有300M


  l
 Hprose
  l
 Leveldb
  l
 Ledis
  l
 Beego
  
 
 



第28页

跨平台

按设计要求系统的运⾏行场景有:传统服务器、PC、⼿手机或路由器。 能满⾜足的语⾔言只有:


  l
 C/C++
  
  l
 Java
 

l
 Golang
 



第29页

迭代和重构

前后发布了数⼗十个版本,上百次重构,⽤用golang毫⽆无压⼒力。主要得⼒力于以下特征: l
 极简的语法 l
 快速的编译

以前的同花顺客户端编绎要近20分钟,现在⼩小于3秒 l
 Package和易⽤用的接⼝口

耦合度低 模块化好



第30页

错误处理

l
 初觉的很好 错误和异常是不同的

l
 后⽤用起来很烦 ⼤大量的重复代码

l
 最后觉得很合理

写代码的时间很短,测试和查问题的时间很多,相当多的时间是因为某个错误忽 略或处理的缺失。 多加⼏几⾏行代码占位,视觉提醒和后期查问题都很⽅方便



第31页

Golang的总结


 

l
 ⼤大道⾄至简


 
 
 
 
 
 
 
 gorou8ne,接口,数据结构,Web
  
 

l
 ⽆无⽤用的都会被舍弃


 
 
 
 
 
 
 语法,书写格式,++
 -­‐-­‐的一些特性
  
 

l
 互动和映照


 
 
 
 
 
 
 控制机器不再重要,弱化了指针,弱化了对性能的极致追求。
  
 
 
 
 
 
 
 强化了多核,强化了网络
  
 

l
 迭代中前⾏行


 
 
 
 
 
 Golang很早就形成了闭环;Golang的项目也很适合重构和迭带
  
  硬件时代最佳的系统语言是C/C++;云时代最佳的系统级语言是Golang
 



第32页

结束语

希望能和⼤大家成为朋友

知乎ID:李四保; 微博ID:李四保

希望⼤大家加⼊入到这个项⺫⽬目中



第33页

THANK YOU



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。