基于Kubernetes、Docker的机器学习微服务系统设计系列——(一)概念与构想 - Go语言中文社区

基于Kubernetes、Docker的机器学习微服务系统设计系列——(一)概念与构想


基于Kubernetes、Docker的机器学习微服务系统设计
实践篇 (1)概念与构想 (二)架构与部署 (三)微服务框架 (四)中文分词 (五)预处理
(六)特征选择 (七)分类器微 (八)部署配置 (九)应用服务 (十)数据可视化
研究篇 RS中文分词 MP特征选择 NLV文本分类 快速kNN 文本分类

  随着信息技术的进步,互联网的应用日新月异。计算机新技术的发展也是突飞猛进。当前,云计算、AI、机器学习、自然语言处理、物联网等成为热点话题。随之而兴起的技术也是百家争鸣,诸如Kubernetes、容器、微服务、DevOps、OpenStack、深度学习等。
  本篇主要介绍基于Kubernetes、容器(Docker)、微服务技术等在机器学习中的实践应用构想和概念,后续将详细介绍相关知识和实践过程。

系统构想

  系统需要完成的功能点如下图所示:

系统功能点构思

主要完成功能:

  • 支持镜像化发布,支持云化部署;
  • 微服务化设计,支持服务扩缩容;
  • 支持负载均衡、系统资源监控、资源编排;
  • 支持多种机器学习算法,中文分词、特征选择、文本分类;
  • 支持Web图形化UI性能评估与结果展示;
  • ……

微服务化

  微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
  在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA(面向服务的架构)服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。
  用一张经典的图来表现微服务,

单体架构的集群(左)与微服务集群(右)

微服务设计原则

  • 单一职责原则
  • 服务自治原则
  • 轻量级通信原则
  • 接口明确原则

Docker容器

  Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
Docker通常用于如下场景

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

  Docker 架构

Docker 基本架构示意图

  Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Kubernetes

  Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。
使用Kubernetes可以:

  • 自动化容器的部署和复制;
  • 随时扩展或收缩容器规模;
  • 将容器组织成组,并且提供容器间的负载均衡;
  • 很容易地升级应用程序容器的新版本;
  • 提供容器弹性,如果容器失效就替换它,等等…

Kubernetes一些核心概念如下图所示:

Kubernetes 集群示意图

上图可以看到如下组件:

  • Pod
  • Container(容器)
  • Label(标签)
  • Replication Controller(复制控制器)
  • Service(服务)
  • Node(节点)
  • Kubernetes Master(Kubernetes主节点)
知更鸟博文推荐
上一篇 文本分类——快速kNN设计实现
下一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(二)架构与部署
推荐篇 基于Kubernetes、Docker的机器学习微服务系统设计——完整版
研究篇 RS中文分词   |  MP特征选择   |  NLV文本分类   |  快速kNN
作者简介
兴趣爱好 机器学习、云计算、自然语言处理、文本分类、深度学习
E-mail xsd-jj@163.com (欢迎交流)

参考:
[1].
http://www.elecfans.com/d/631815.html
[2].https://www.sohu.com/a/221400925_100039689
[3].http://www.dockone.io/article/932
[4].http://www.docker.org.cn/book/docker/what-is-docker-16.html

版权声明:个人原创,请勿抄袭,欢迎引用,未经许可禁止转载. © 知更鸟
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xsdjj/article/details/83832928
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 20:12:59
  • 阅读 ( 2328 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢