伴鱼技术团队

Technology changes the world

伴鱼开放平台 上线了! 源于实践的解决方案,助力企业成就未来!

伴鱼开源手册

一、我们为什么要开源

1、我们享受了开源软件巨大的福利

在今天,几乎不可能找到一家没有从开源社区中以某种方式获益过的公司。在伴鱼的发展过程中,我们更是深刻感受到如果没有开源软件的帮助,一个初创公司几乎是没有成功的可能,只有站在linux,tidb,mysql,mongodb,kafka,etcd,nginx,es等伟大的开源软件的肩膀上,我们才能快速搭建好系统,快速向用户提供服务并且快速验证我们的想法,不然这一切将是无法想象的。

站在互联网行业来看,我们更会发现如果没有开源软件,创业成本和创业周期都将大幅提高,这对创业者和创业公司的打击将是非常巨大的打击,整个行业也就不可能得到而此蓬勃的发展。所以我们会发现,大量开源软件的帮助是为什么互联网行业创业热度远远高于传统行业的主要原因之一。

投我以木桃,报之以琼瑶,这是伴鱼人的价值观,虽然我们目前还不能给开源社区非常有力的回馈,那么从当下开始加入开源社区,回报开源社区,将是一个非常好的开始,伴鱼在开源道路上一定会全力以赴。

2、我们已经具备了回馈开源社区的能力

开源社区欢迎所有的个人和组织去贡献自己的力量,但是伴鱼人会对自己有更高的要求,不能只为了开源而开源,我们希望能提供更有价值的作品到开源社区,而目前是很合适的时间点,因为我们已经具备了回馈开源社区的能力。伴鱼已经聚集了一群非常优秀并且有技术理想的工程师,在服务治理、中间件、基础平台、质量工程、数据库和运维的自动化等方面都有一些自己见解和积累,可以逐步整理和发布到社区,希望能够帮助到有同样场景和需求的个人和公司,另外在web、安卓和ios基础架构等方面我们也正在积累能量,希望能早一天能够回馈开源社区。

3、鼓励工程师打造代表作

有技术理想的工程师都希望能在自己的职业生涯中打造出自己的代表作,但是并不是每一个工程师都这样的机会来实现,伴鱼会努力营造良好的开源氛围来鼓励工程师来打造自己的代表作,因为伴鱼是一家工程师文化浓厚的公司,我们理解和尊重工程师,我们知道艰巨的挑战和与优秀的同事吸引优秀工程师加入的最重要原因,我们更知道帮助工程师打造一个属于自己的代表作是成就一个工程师最好的方式,而打造优秀的开源作品,是打造代表作最好的方式。

伟大的程序员,都有伟大的代表作,比如Linus Torvalds之于Linux和Git,Kenneth Lane Thompson之于C、Golang和Unix,Guido van Rossum之于Python等,伴鱼也非常希望工程师们都能有自己的代表作,努力把我们工程师的个人简介越写越短,比如:伴鱼工程师、xx开源软件核心开发者。

4、找到优秀的工程师

做开源软件除了回馈开源社区和鼓励工程师打造代表作外,还能在开源社区找到志同道合的工程师来帮助我们改善我们的作品,和公司外面的工程师进行沟通和协作,进一步提高伴鱼的技术水平和技术影响力。并且,如果优秀的工程师通过开源作品了解伴鱼,并且意愿加入伴鱼一起用技术的力量让每一个人都能享受更简单、更高效、更优质的教育体验,那将是我们最高兴的事情。

二、我们该怎么做开源

1、从业务场景中找切入点

伴鱼是一家互联网公司,更是一家在线教育公司,所以除了会碰到互联网公司都会碰到的场景外,同时由于在线教育的地域特殊性,我们从一开始就面临老师用户在国外,学生用户在国内的全球分布式场景,这对用户接入的链路质量和时延有更高的要求,对全球多数据中心有更迫切的需求;由于在线教育是付费用户,所以我们对稳定性会有更高的要求;由于教育需要长周期地的服务用户,所以怎么利用用户学习的数据来帮助用户提高学习效率也是一件非常有挑战的事情。

从在线教育的业务场景出发,我们一步一步解决这些场景对来的挑战,在解决问题过程中产生的方案、架构和系统将是非常有价值和说服力的作品,这些作品回馈到开源社区将是非常有意义的。

2、聚焦打造精品项目

在我们的业务中碰到有挑战的场景,如果开源社区还没有比较好的方案,那么我们可以接受这个挑战,系统化优雅地解决业务场景中碰到的问题。对于严重影响伴鱼业务质量的关键问题,我们需要工程师们重新思考这个问题的解决方案,一定要从根本上解决这个问题,而不只是头痛医头,脚疼医脚,被问题牵着走。在经过广泛的调研和充分的讨论,确定好解决方案后,通过精品项目的形式,让工程师们能聚焦、彻底、系统化地解决这个问题。

在聚焦打造精品项目的过程中,不仅能解决我们业务中的关键问题,并且能够给工程师们提出更高的挑战,鼓励工程师们打造出自己的代表作。这个时候,我们将工程师的代表作贡献到开源社区,已经是一件非常自然和恰当的事情了。

三、我们需要遵守的规则

1、什么项目可以开源

伴鱼在开源社区得到了非常大的帮助,我们也十分非常乐意去分享我们的在解决问题的过程中产生的有价值的设计和作品,所以只要不影响公司核心利益的通用解决方案,经过伴鱼开源委员会批准后,都能贡献到开源社区。

伴鱼一直奉行开放的技术文化,在开源这条路上,伴鱼会坚定的走下去,别无他求,只希望我们的作品能让这个世界变得更美好一点。

2、License

为了能最大化我们开源作品的价值,所以我们选择了 Apache License, Version 2.0 这一个友好的License。

四、我们近期规划

1、分布式id生成器

虽然目前开源社区有许多的分布式ID生成器,但是Golang社区还没有一个比较好的开源方案,伴鱼作为一个服务器端all in Golang的公司来说,去做这一件事情,并且贡献给开源社区是一个很好的选择。

2、通用稳定性平台

微服务时代,除了存储之外,大部分系统其实都是一个Base系统,我们要求对可用性的要求是非常高的,所以通过熔断、降级和隔离等手段保障服务基本可用就变成一件非常重要的事情,而稳定性平台将是彻底、系统化解决这个问题的方案。我们调研了社区的一些开源方案,目前没有能够满足我们的需求的作品,所以我们决定自己打造一个,然后贡献给开源社区,希望能帮助有同样需求的个人和公司。

3、NewSql时代的Proxy

开源社区已经有非常多的Mysql Proxy了,为什么伴鱼还要做自己的Proxy呢?

主要的原因是目前的Mysql Proxy的设计目标都主要是为了解决Mysql数据库在实际场景中遇到的问题,重分库分表等功能,但是目前这些问题已经被NewSql完美解决了,而NewSql时代数据库会更倾向于大集群的方案,所以我们非常需要一个有数据库治理功能的Proxy,提供发现、熔断、降级、监控等等服务治理功能,确保不管任何时候、出现了任何问题,Proxy都能保障后端数据库不受到影响。目前开源社区没有一个Proxy能提供这样的功能,而伴鱼的业务对稳定性要求非常非常高,所以我们决定来打造这样一款Proxy并且开源,让那些像我们一样正在忍受这个问题的工程师们的心情能够更开心一点。

欢迎关注我的其它发布渠道