基于Kubernetes、Docker的机器学习微服务系统设计系列——(二)架构与部署

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xsdjj/article/details/83869105

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

1 系统介绍

1.1 核心功能

  主要完成功能:

  1. 支持Docker镜像化发布,支持Kuberneetes云化部署;
  2. 微服务化设计支持服务自治,支持服务扩缩容;
  3. 支持负载均衡、系统资源监控、资源编排;
  4. 统一设计轻量级通信RESTful API 接口框架,支持JSON格式请求;
  5. 支持多种机器学习算法,支持JSON格式参数配置;
  6. 支持中文分词:RobinSeg(RS)、IKAnalyzer(IK)、JEAnalysis(JE)、MmSeg4j(MS)、PaoDing(PD)、SmallSeg4j(SS)等;
  7. 支持特征选择算法:Document Frequency(DF)、Information Gain(IG)、(χ2)Chi-Square Test(CHI)、Mutual Information(MI)、Matrix Projection(MP)等;
  8. 支持分类算法:k-Nearest Neighbor(kNN)、Naïve Bayes(NB)、Support Vector Machine(SVM)、Normalized Vector(NLV)等;
  9. 支持Web图形化UI机器学习性能评估、数据可视化;

2 系统架构

2.1 云化架构图

  云化微服务机器学习系统架构架构如图所示:

图 1 云化微服务机器学习系统架构图

2.2 架构说明

  整个系统采用云计算的架构设计。系统支持部署在传统的虚拟化技术(如KVM)或云计算IaaS层服务上(如Openstack等)。PaaS层采用Kubernetes+Docker的应用方式。
  整个系统的重点是SaaS层的设计开发,即微服务化的机器学习系统。图 2 所示红框蓝底部分为系统的核心部分。
  系统主要功能模块包括:公共库Comm-lib、微服务核(中文分词、预处理、特征选择、分类器)、RESTful微服务框架(微服务核加载 、HTTP API)、应用服务+WEB、管理维护等。
  公共库Comm-lib:包括基础功能,例如日志、配置、数学计算等;
  RESTful微服务框架:主要统一微服务接口,解耦与业务的关系,统一RESTful API。
  微服务核:按照微服务接口定义,关注自身的业务实现。实现中文分词、预处理、特征选择、分类器的独立功能。
  管理维护:主要包括Docker镜像化制作、发布,Kubernetes、Docker、微服务资源监控,资源的编排功能。
  应用WEB:如果把微服务看出深服务端,那么这里包含浅服务端应用和WEB客户端。服务端处理WEB分类任务的请求、调度和生命周期管理。WEB端显示任务运行的状态和机器学习的结果UI显示,还包括资源的监控显示。

3 云化部署

3.1 部署图

  云化微服务机器学习系统架构架构如图所示:

图 2 云化微服务机器学习系统部署图

3.2 部署说明

  系统部署服务组件主要包括:ETCD、Docker 、Kubernetes Master、Kubernetes Node、Docker Private Registry、Glassfish Server、Flannel。
  ETCD:一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现。ETCD为Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。ETCD为Flannel 存储网络配置、分配的子网以及任何辅助数据(如主机的公网 IP)。
  Docker: 应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  Kubernetes Master:集群的管理控制中心。
  Kubernetes Node:提供Kubernetes运行时环境,以及维护Pod。
  Docker Private Registry:Docker 镜像私仓,存放开发的微服务镜像。
  Glassfish Server:Web 应用服务器,提供web应用的部署。也可以采用镜像化的方式部署。
  Flannel:常用的网络配置工具,用于配置第三层(网络层)网络结构。

3.3 部署实例

  如上图2所示,在一台服务器上部署实例。

  服务器配置如下:
    处理器:2颗Intel Xeon E5-2670 8核16线程
     内存:32G = 8X4G PC3-106000R 1333
     硬盘:240GB SSD + 4TB HDD
   操作系统:Ubuntu 14.04.5 LTS
  使用KVM启动6台虚拟机。

  虚拟机配置:
    处理器:4核
     内存:4G
     硬盘:80GB
   操作系统:CentOS 7.5

  虚拟机网络采用linux系统网桥管理工具配置网桥进行链接。Kubernetes Master和ETCD部署在一台虚拟机上。4台虚拟机作为Kubernetes Node节点,其上部署Docker、Flannel服务。一台作为Docker 私仓,部署Docker服务。

  软件版本
   ETCD版本:3.0.0
   Docker版本:1.12.6
   Kubernetes 版本:1.6.7
   Flannel版本:0.9.1
   Docker镜像仓库版本: 2.5

知更鸟博文推荐
上一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(一)概念与构想
下一篇 基于Kubernetes、Docker的机器学习微服务系统设计系列——(三)RESTful微服务框架
推荐篇 基于Kubernetes、Docker的机器学习微服务系统设计——完整版
研究篇 RS中文分词   |  MP特征选择   |  NLV文本分类   |  快速kNN
作者简介
兴趣爱好 机器学习、云计算、自然语言处理、文本分类、深度学习
E-mail xsd-jj@163.com (欢迎交流)
版权声明:个人原创,请勿抄袭,欢迎引用,未经许可禁止转载. © 知更鸟
展开阅读全文

没有更多推荐了,返回首页