我所经历的创业公司是如何做技术的?--《我与开源的故事》

简介: 人类的文明得以快速发展,很重要的一点在于我们可以站在巨人的肩膀上继续探索。而开源世界之于互联网行业来说就是这个巨人之一, 本文将重点阐述作者本人所了解的开源世界,以及如何通过开源项目做出有效个工作产出。

创业公司的架子

设想一下,如果几个人搞创业,起初有少许的启动资金,该怎么样将产品原型落地?

答案基本是先以最小的成本,将产品跑起来,毕竟用户量起初也是非常小的。

此时可能没有复杂的负载均衡接入,没有服务器集群,但也没有大厂拥有的任何自建设施,看似架子简单,但假如没有开源世界的帮助,所有的事情不得不从零搞起来,刀耕火种、茹毛饮血,想想都头大。


起初的基本配置大概是这样:


image.png

即便如此简单,各个模块也需要依赖众多开源世界的帮助,比如APP模块需要引入各个端的开发框架、通讯框架等甚至跨端框架,逻辑服务需要引入服务框架、访问存储的驱动层框架等,存储更是需要完全引入开源的MySQL等。


更何况,上述配置属于demo阶段,演示给投资人看看还行,如果产品上线运营,至少需要满足下面的配置:


image.png

任何一个模块的从零开发,都会耗费巨大,而创业公司更是希望就耗费集中在自身的产品创意的落地上,好钢用在刀刃上。


这里要感谢开源社区所有无私奉献的贡献者,以及为大家提供开源社区平台的Linus,向大家致敬。


通过github,使得创业公司可以借助相关的开源系统和框架顺利搭建公司框架,并专注在自己的业务核心上。


高可用架构

随着业务的发展,公司往往会面临用户的爆发式增长,生产系统故障频频。公司层面下重手处罚,责令上线需选择在业务低峰期进行,一线同学战战兢兢如履薄冰四处救火疲于奔命。究其根本原因在于基础设施、系统架构需要升级。


这是一项庞大的工程,这里只针生产系统的高可用架构展开。


计算机系统服务对外提供服务集中在网络、计算、存储三个层面,所谓的服务器千万网卡、万兆网卡指的就是网络层面单台服务能达到的吞吐上限,所谓的8核、16核CPU指的就是服务器的计算能力,所谓的服务器dd命令里的200M/s指的是存储维度磁盘的读写能力上限。


当QPS(每秒的请求量)达到一定量时,系统的瓶颈可能出现在三个层面的任何一处,好消息是设计良好的架构一般通过水平扩容(即额外增加些服务器)就可以解决网络、计算的瓶颈问题。然而由于存储的中心化体系,使得最后的系统瓶颈往往都出现在存储层面。


通过将生产服务设计成无状态的、幂等的,或者再往上一层将一批服务打包成功能模块无状态、幂等的,就可以实现业务水平扩展的能力,业界叫法不一,有的说是set化、有的说是单元化,总之意思差不多。


存储层面的高可用相对困难一些,因为存储涉及到读和写,涉及到数据一致性,有些金融场景要求更为严格。对此,近期国内的互联网巨头腾讯、阿里分别开源了PhxSQL和OceanBase,非常方便。


如果觉得PhxSQL和OceanBase类产品比较重,难以切入掌控,比如要针对自身业务特点定制一些特性,则需要更轻量更灵活的方案。


MySQL主从同步原理:

image.png

阿里有个有意思的开源方案是otter + canal,其中canal伪装成Slave接收来自所属主库的Binary log,otter做数据的逻辑处理,从而实现数据的单双向同步。


整体方案单向数据流原理图:

image.png


可视化界面大致如下:

image.png

如何做定时任务

做完存储层的高可用,建立多数据中心,接下来需要定时检测多中心的数据一致性。对于熟悉Linux的同学可能首先想到crontab,然而crontab存在局限性,比如单点问题、执行粒度问题等。


github里有很多开源的定时任务系统,如Java语言实现的quartz、Go语言的gocron等,当时我们选用quartz实现的一套相对简单的定时任务系统,根据库表配置多项定时任务实现整体业务的完整性。


破茧成蝶

随着公司更进一步的发展,此时面临着上市,技术层面也需要营造自己的影响力。

结合自身业务的高并发大流量的场景,以及长期的特性迭代与技术沉淀,大家对之前使用的开源技术有了更加深刻的理解,也在细节上有了独特的认识。更重要的是,此时人才济济,我们有能力有精力也有驱动力来重构这一套技术体系,形成更加完善的解决方案。


至此,诞生了更具稳定性更先进的技术框架,最终会回馈到开源社区,良性循环。


总结

前人栽树后人乘凉,乘凉后感谢前人的同时,希望大家能一起保护好这片林子。

目录
相关文章
|
6月前
|
人工智能 监控 安全
一个测试开发的十年心路历程-从改变自己做起
作者天士从事测试开发十多年,期间经历不少角色转换,以下是他在测开成长升级、质量体系建设、专项建设方面的总结,以及职场上的一些思考。
终身成长本质:成长型思维——打败人不成熟,成为高效能人士
终身成长本质:成长型思维——打败人不成熟,成为高效能人士
129 0
|
弹性计算 运维 Kubernetes
腾讯全面上云背后:程序员的技术焦虑和技术理想
腾讯全面上云背后:程序员的技术焦虑和技术理想
282 0
|
存储 SQL 关系型数据库
加入阿里技术团队三年,哪些习惯让我在工作上持续受益?
2017年研究生毕业,我加入阿里巴巴数据库技术团队,从事分布式数据库研发,如今算来已经有三年时间了,在这期间,我深度参与了双十一背后的数据库PolarDB-X从设计到实现的全过程。在这三年的时间里,于我而言,最大的收获来自两方面:
3898 0
加入阿里技术团队三年,哪些习惯让我在工作上持续受益?
|
人工智能 算法 数据库
孕妇最担心的一件事,阿里 AI 正在努力解决
如果有一场糖尿病的中国保卫战,孕期糖尿病将会是第一战场。
967 0
孕妇最担心的一件事,阿里  AI  正在努力解决
|
分布式计算 大数据 专有云
关涛:接手一个6年的平台型系统,我是如何带领团队破局前行的
12月20日的北京云栖大会上,由云栖社区主办的开发者技术进阶峰会再度开启,在此之前,我们整理了2017杭州云栖大会开发者技术进阶专场上的精彩分享内容。
5278 0
|
关系型数据库 MySQL 数据库
褚霸:阿里开源四部曲,从拥抱到回报
6月24日至25日,“第十一届开源中国开源世界高峰论坛”在北京成功召开。阿里云研究员余锋 (花名:褚霸)受邀参加了本次活动,褚霸代表阿里巴巴集团为大家介绍了阿里巴巴与开源的故事。阿里巴巴与开源的关系,褚霸总结为四个阶段,分别是拥抱开源、回馈开源、融合开源和回报开源四个阶段。
8247 0
|
人工智能 云计算
孕妇最担心的一件事,阿里 AI 正在努力解决
在中国,中国妊娠糖尿病发病率高达18.9%左右,每6个孕妇中就有一个“糖妈妈”。病症对妈妈和胎儿危害很大,会增加孕妇妊娠期高血压、胎停育、羊水过多等风险,胎儿早产、巨大儿等的发生率明显升高。
7502 0
|
Java 大数据 程序员
一名IT界“老”技术人关于学习与成长的分享,受益!
Ben Northrop 满 40 岁,本文是他对职业生涯的思考。他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。 我是一名程序员,几个月前刚过完 40 岁生日。某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件。
1354 0