第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