|
|
|
|
移动端

WOT董明鑫:容器技术在雪球的实践

董明鑫最后表示,雪球目前拥有一千多个容器,项目数量大概有一百多个,规模并不是很大。但是得益于容器技术,雪球部署的效率非常高,雪球的开发人员只有几十个,但是每个月的发布次数高达两千多次。

作者:赵立京来源:51CTO|2018-06-06 10:50

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是顶级IT技术人才学习和人脉拓展不容错过的平台。

在“开源与容器技术”分会场,雪球 SRE 工程师董明鑫带来了《容器技术在雪球的实践》的主题分享,会后,51CTO记者根据董明鑫在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。

【讲师简介】

董明鑫

董明鑫,雪球 SRE 工程师,主要负责保障雪球稳定性、提升资源利用率及提高开发效率等。关注容器生态圈的技术发展。

业务的发展需要容器技术

雪球最初是一个投资者社区。用户在雪球可以关注全市场所有的投资品类,还可以基于行情进行交流,同时也可以快速获取相关资讯。

有很多股民在雪球交流,甚至基于在雪球获得的信息直接作出投资决策,这时,他们就有一个强烈的需求:购买股票!于是雪球与国内券商合作推出了沪深A股交易的业务。由于互联网企业大部分都是在港美股上市,所以雪球还推出了港美股券商雪盈证券,满足用户交易港美股的需求。此外,雪球还做了持牌的基金代销机构蛋卷基金。

基于社区,雪球业务衍生出一些其他商业化的项目:沪深A股交易、港美股交易、基金销售、私募孵化器等。随着业务的发展,不同业务之间受到影响的概率比较高,雪球希望业务之间不被相互打扰,为了满足这种隔离的需求,雪球发现容器技术其实比较合适,因为容器本身镜像比较小,比较灵活,启动速度快,相比虚拟机,更适合雪球的业务发展,经过比较,雪球最终选择了Docker。

在运行过程中,雪球发现,使用Docker需要解决的问题主要有三个:网络连通性、多节点的服务部署更新、以及优秀的监控方案。

在实践中演进

雪球在初期的网络模式是一个二层互通的方案,这个方案的优点是与其它基础设施直接可达,并且性能很高。缺点是管理复杂,需要管理 IP 地址和 MAC 地址;规模受限,容易引发网络风暴;网络隔离实现复杂。

在服务部署方面,雪球尝试了虚拟机。虚拟机的优势一是与原有基础设施相比迁移成本低,二是相比物理机启动快,没有虚拟化的损耗,三是满足了隔离的需求。缺点是迁移、扩容繁琐;管理相对复杂,主要靠文档记录;基本没有流程控制和权限控制。

面对这些缺点,雪球希望做一个平台,实现容器的物理机管理、容器的管理,以及IP和MAC地址和流程控制的管理。于是,雪球变更了发布流程,如下图所示。

发布流程

发布流程

经过一段时间的使用,雪球发现自研的容器管理平台虽然实现了流程控制与权限控制,并且将代码与环境固化,使多版本镜像管理方便了很多,部署效率和扩缩容效率都有所提升,但是,流程控制逻辑与机器管理、网络管理之间耦合严重,而且,无法实现自动选择物理机和自动分配容器 IP,没有自愈功能。于是,雪球引入了Swarm,做了一个三层部署的模式。如下图所示。

网络模式

网络模式 Downward Default

后期,雪球又对此进行了优化,更加自助化的流程解放了运维,加入了更好的调度方案,支持多机房多云环境。

最后,雪球引入kubernetes,每一个项目里可能有多个互联网数据中心(IDC),每一个IDC有不同的集群(Cluster),为每一个项目分配一个命名空间(Namespace),有自己的部署(Deployment)。由于Kubernetes本身的解决方案比较全,而雪球也已经有了很多解决方案,例如日志、负载均衡、监控等。如何才能更低成本的引入Kubernetes,而且让开发尽量不要感知到,最好的办法是做合约的兼容性,最终,雪球只使用了Kubernetes的Deployment和HPA。

董明鑫最后表示,雪球目前拥有一千多个容器,项目数量大概有一百多个,规模并不是很大。但是得益于容器技术,雪球部署的效率非常高,雪球的开发人员只有几十个,但是每个月的发布次数高达两千多次。

以上内容是51CTO记者根据雪球 SRE 工程师董明鑫在WOT2018全球软件与运维技术峰会的采访内容整理,更多关于WOT的内容请关注51cto.com。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

【责任编辑:赵立京 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C++编程你也行

本书是一本优秀的C++教材,内容包括:基础类型、操作符和简单变量,循环和决策,命名空间和C++标准库,用C++编写函数,行为、序列点和求值...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊