聊聊公司的技术栈



公司的技术栈

    公司经历了1年的发展,慢慢也使用了很多技术服务。感觉创个业把上海学到的全部知识都搬出来了。我们主要技术栈如下

技术团队组成

    公司技术团队主要由前端 + 后端组成。运维岗 和 App研发岗 都算在后端或者前端里面去了。目前招聘的大部分后端是写PHP的,但是如果会Python 或者Go 会加分。这里不讨论语言的哪些破事。组建团队要根据当地的人才组成和自己公司的实力出发。例如我个人强项是PHP和Python,Java虽然会但是基本都忘记的差不多了,那我就会以我擅长的招聘,总不能来了全是Go,我自己都不知道如何去评价代码质量了。

网络

    就像我其他文章里面说的,我懂个锤子的网络。都是被逼出来的,公司搬迁到新的办公室。那么大的办公室网络总得搞起来,不说多么正规,最起码要保证上网速度了。那就提前了解下,慢慢知道这些网络设备是干什么的的了。为了省钱,我们所有的网络设备都是二手的,有的通过朋友低价援助的。公司大致区域图如下



机柜放在A区空调房里面,放了三个交换机(2个48口,一个24口)和一个路由器,三个个人电信光猫。如下图 。可能有人会问为什么为撒三个电信光猫? 没撒就是穷


前端

    我们的App使用React Native ,这个是我们深思熟虑之后的解决。首先招聘两个纯App开发人员我们养不起并且意义不大,这样我们就只能转求于其他方案。国内有很多类似uni app等比较成熟的方案,但是有一次看到uniapp 打包出来的小程序代码之后我就放弃了,人完全没办法看。后面和以前上海的一个原生开发聊 他目前使用flutter ,但是他推荐了React Native 和 Flutter ,我自己用了下Flutter 之后发现不行这个太复杂,需要的时间成本相对更大。试了下 React Native发现这个只要前端就可以搞定了(前提是目前也有很多第三方扩展包,非常方便)。后来知乎了下发现国内的CRN(携程RN)和MRN(美团RN)都是基于RN基础之上修改的。所以就决定RN了。在后来的使用中也发现基本也满足我们的需求并且成本低很多

大数据

    业务催生技术发展这计划真是真理,很多技术的发明不是平白无故想出来的,都是具体业务需求倒逼出来的,当然不乏天才在业务到一定阶段预测到需要有新的解决方案的。

    最开始我们处理几百万的数据不用大数据工具也是可以解决的,突然某个业务数据一下子进入到上亿的级别。发现目前的东西就不好使了。幸好我在安居客那段时间公司就有大数据这种业务了,对这些工具不算陌生。硬着头皮搞。基于我们主要是搜索更快当然选择了ElasticSearch。为了同步日志到ES,我们用FileBeat 同步到 Redis ,然后 LogStash 从 Redis里面取出来同步到ES(具体为什么不直接从FileBeat 到 ES 后面有专门文章介绍)。

服务

Squid

    这个是解决内网代理上网问题,详情请查看:局域网内网机器上网实操

Varnish

    这个是年前才上的,为了解决nginx响应问题。由于我们有个业务请求量非常大,所以想到了加入内存缓存代理服务,通过Varnish缓存静态文件给予请求更快的响应,这样就可以承受更大的请求量。虽然这样做有一定的效果,但是像这种大访问量业务是多个方面影响的,例如带宽等等等等。所以需要综合考虑。

Selenium集群

    我们有一个业务要频繁的访问网页,简单的curl只能作为一个参考,毕竟有些页面JS会做很多事情,所以就需要无头浏览器了。那我们每个服务器单独部署肯定不好管理,就想到咏鹅Selenium集群。

参考文章

交流 经验
编程浪子走四方:CodeRonin