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

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

创业公司的架子

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

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

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


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


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实现的一套相对简单的定时任务系统,根据库表配置多项定时任务实现整体业务的完整性。


破茧成蝶

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

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


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


总结

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

目录
相关文章
|
2月前
|
算法 开发者
技术之路:从迷茫到坚定的探索之旅
在技术的海洋中,每个人都是一艘小船,面对着波涛汹涌的挑战和未知的风浪。本文通过个人的技术成长经历,探讨了如何在不断变化的技术环境中找到自己的方向,以及如何通过持续学习和实践来克服困难,最终实现自我超越。
|
3月前
从零到一:技术创新的个人感悟###
【10月更文挑战第20天】 在技术探索的征途中,每一步跨越都如同在浩瀚宇宙中点亮一颗新星,既照亮了未知的边界,也映照出自我成长的轨迹。本文旨在分享一段从技术小白到创新实践者的心路历程,探讨技术背后的本质、内涵与意义,以及这一过程中对人生哲理的深刻理解。通过亲身经历,展现技术创新如何成为推动个人成长与实现自我价值的桥梁。 ###
48 5
|
机器学习/深度学习 数据采集 人工智能
|
数据可视化 前端开发 持续交付
研发效能提升之路——从天文学的演进说起| 学习笔记
快速学习研发效能提升之路——从天文学的演进说起
研发效能提升之路——从天文学的演进说起| 学习笔记
|
Web App开发 移动开发 JSON
前端成长之路之打好根基
前端成长之路之打好根基
323 0
前端成长之路之打好根基
|
架构师 安全 Java
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
许多人在选择“程序员”这一职业的背后,或多或少都会有故事可讲。本文是我们与一名 Erda 的用户沟通时深度挖掘到的故事,征得本人同意后对其进行了整理,并设立了【开发者故事】这一栏目,旨在收纳广大同学的故事。
287 0
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
|
算法 架构师 Java
从架构师、技术总监转型学习者,组件算法团队
所处的时代背景:快速变化,新算法层出不穷 不变的是什么:数学基础、计算机基础、动手能力 架构师、技术总监不再是公司的核心,最多是被业务蹂躏的角色,被取代的可能性越来越大,学习和应用算法,是将面临40岁的你,一道不可逾越的坎。 下面内容大部分是公司内部的一位年轻的算法工程师的心血,学无止境啊!!
2836 0
从架构师、技术总监转型学习者,组件算法团队
|
人工智能 Kubernetes Cloud Native
开发者如何get技术趋势,实现成长破局?——MVP线上峰会
使众人行,你需要拥有的管理思维;数据库那些事儿,讲讲创新实战;AIoT新技术新场景实战,说干就干!未来已来!云原生战“疫”实操!
968 0
开发者如何get技术趋势,实现成长破局?——MVP线上峰会
|
前端开发 数据可视化 物联网
观点|蚂蚁金服玉伯:我们是如何从前端技术进化到体验科技的?
小蚂蚁说: 王保平,花名玉伯。熟悉前端和SeaJS的人一定对这个名字不陌生。作为前端领域的一枚大大大牛,他现在担任蚂蚁金服体验技术部负责人。本文,他分享了他从前端一路进阶升级到体验科技的个人思考,并详细介绍了体验科技的历史及未来发展,以及本次体验科技开放的愿景。
10587 0
|
分布式计算 大数据 专有云
关涛:接手一个6年的平台型系统,我是如何带领团队破局前行的
12月20日的北京云栖大会上,由云栖社区主办的开发者技术进阶峰会再度开启,在此之前,我们整理了2017杭州云栖大会开发者技术进阶专场上的精彩分享内容。
5319 0