专栏名称: 待字闺中
深度分析大数据、深度学习、人工智能等技术,切中实际应用场景,为大家授业解惑。间或,也会介绍国内外相关领域有趣的面试题。
目录
相关文章推荐
材料科学与工程  ·  北大回应韦东奕健康问题 ·  8 小时前  
材料科学与工程  ·  北大回应韦东奕健康问题 ·  8 小时前  
酷玩实验室  ·  不再迷信全屋定制,当代年轻人爱上手搓家具 ·  昨天  
江西市场监管  ·  “碳”索绿色发展!这项成效显著→ ·  昨天  
江西市场监管  ·  “碳”索绿色发展!这项成效显著→ ·  昨天  
51好读  ›  专栏  ›  待字闺中

谈谈创业公司的技术选型

待字闺中  · 公众号  · 程序员 科技自媒体  · 2016-09-21 02:54

正文

请到「今天看啥」查看全文



创业,要有“无论什么技术我们都可以实现而且比其他人做的更好”的信念,这是创业赋予你最大的自由,抓住这个自由。



我们选择的技术


下图是我们后台系统选择的一部分技术栈:



一、Go 语言


我经历过的两家公司, Google 主要用 C++,阿里用 Java。前者是一种存在天生设计缺陷的语言,而且 C++ 的开发效率真不算高,即使是对 Google 这样的工程团队,也做了 Style Guild 来规避 C++ 存在的雷区。 而 Java 过于臃肿,缺乏原生的多线程支持,运行环境庞大不适合容器化微服务,如果你给 Java 程序打过 docker 包就知道了,动辄上百兆的运行时。


从创业的第一天,我们选择 Go 作为后台系统开发语言,现在看来是我们做过的最好的决定之一。Go 的优点包括:原生支持多线程编程,可编译为 standalone binary 无需运行时环境(docker 镜像一般 10 几兆就搞定了),自带格式化工具能够统一团队的编程风格,极适合写微服务,而且学习上手快,Java 或者 C++ 程序员只要一个星期就可以达到熟练运用的水平。


创业以来我们用 Go 从头实现了整套后台系统,包括 RTMP 直播服务器、用户体系、交易、IM、搜索、监控、小二后台,我们甚至用 Go 写机器学习代码和机械臂控制程序(我们在用的 Google 的tensorflow 最近也加入了 Go 语言支持) … 实践证明 Go 完全可以胜任所有的后台开发工作,而且有极高的效率和工程实现质量。


二、Kubernetes


我们是微服务的坚定践行者,微服务技术的核心是容器编排系统,现在最流行的三个容器编排系统是 Kubernetes,Mesos,Swarm。


通过比较我们选择了 Kubernetes(简称 k8s),因为 Kubernetes 的设计最吸引我们,有 Google 支持,社区活跃度和发展前景俱佳。我们整个后台系统基于 Kubernetes,并且已经完全微服务化,有 80 多个微服务数百个容器在运行。


我们在实战中使用 Kubernetes 的几点经验如下。


1、二进制版本和配置版本要做分离,且代码化


微服务的配置 yaml 文件 checkin 到 git 代码库,而且做 binary/config 分离,分别控制二进制和配置环境的版本,所有的线上部署的改动都在代码中反映出来。举个 k8s 中微服务配置的例子,如下图。


这是我们一个微服务的 deployment 文件,我们用 git 的版本号做 docker 镜像的 tag(jenkins 自动打包后加上去的),docker 镜像里只包含 binary 文件,配置文件通过 configmap 的 volume mount 为容器内的一个目录,而且配置文件也做了版本号控制,数据库密码等不走代码,而是由集群管理员手工输入为 kubernetes 的 secret,不留任何记录,从而避免了敏感信息的泄露。







请到「今天看啥」查看全文