容器赋能AI—人工智能在360私有云容器服务上的实践

2019 年 4 月 11 日

容器赋能AI—人工智能在360私有云容器服务上的实践

前言


360 私有云容器服务团队和人工智能研究院团队一起配合,在云端提升机器学习的效能方面进行了深入的研究和实践,为业务提供了“人脸检测”、“花屏检测”、“色情检测”、“宠物检测”、“图片风格化”、“文字识别”、“智能裁图”等多种深度学习服务。


下面主要介绍实践中涉及的“微服务网关与容器服务”技术。


微服务网关(kong)与容器服务


什么是微服务架构


微服务是一种构建软件的架构和方法。在微服务中将以前的单体应用拆分成多个小的组件,并彼此独立。不同于将所有组件内置于一个架构中的传统单体式应用的构建方法,在微服务架构中,所有的部分都是相互独立的(可以使用不同的语言,不同团队来开发不同的服务模块)。通过合作来完成相同的任务。其中的每一个组件或流程都是微服务。总结微服务的特点就是:更小,更快,更强。


可能通过上面对微服务的描述还是不是特别的直观,将传统的单体应用架构和微服务架构进行下比较,就比较直观了。


单体应用架构


最早对于 web 程序的开发(比如 JAVA),通常将整个程序打包到一个 WAR 文件中,然后直接部署到服务器即可。



单体应用架构易于测试和部署,但是在服务的可伸缩性,可靠性, 系统迭代, 跨语言程序, 团队协作等方便没有微服务方便。


微服务架构


为了解决单体应用架构的这些诸多弊端(不是说单体应用架构不好,需要根据不同的业务场景选择不同的服务架构),可以将单体应用架构拆分成多个独立的小的组件。 这样就可以每个团队使用自己的技术栈来实现自己的组件,并在系统迭代的时候独立地进行迭代而不影响整个应用的整体使用。



为什么需要微服务网关


首先介绍下什么是 API 网关,API 网关可以提供一个单独且统一的 API 入口用于访问内部一个或多个 API 服务。API 网关常会提供负载均衡,访问频率限制,认证授权,监控,缓存等功能。


通过 API 网关,可以将内部服务对外部用户隐藏,而暴露给外部用户真实需要的 API,并可以对外部访问进行访问频率的限制同时还可以对外部的用户设置认证授权。来保证应用整体的稳定及安全等等。而网关内部的服务则可以根据自己的需求通过相关的协议(REST API, GRPC)进行通信。



微服务网关(kong)介绍


kong 是一款基于 nginx_lua 模块写的高可用,易扩展的 API 网关。由于 kong 是基于 nginx 的,所以可以水平的扩展多个 kong 服务实例,通过前置的负载均衡配置把请求均匀地分到各个 server,来应对大批量的网络请求。


kong 网关组成:


  • Kong server: 基于nginx的服务器,接收外部的api请求。

  • PostgreSQL: 用来存储操作的数据。


并且 kong 采用插件机制进行功能的定制,插件集在 API 请求响应循环的生命周期中被执行。插件使用 lua 编写。



微服务网关与容器服务结合使用


通过一个具体的例子来描述部署到容器上的服务是如何与微服务网关结合使用的。比如我们现在有人脸检测, 宠物检测, 鉴黄服务等将这个单独的服务组成一个完成的应用实体来对外提供多功能的服务。


  1. 首先在容器服务平台上部署我的三个服务实例(人脸检测,宠物检测,鉴黄服务)。并为这些服务实例申请vip。



  1. 服务注册完成之后,管理端将这三个服务注册到微服务网关(kong),kong会将注册的信息持久化到PostgreSQL数据库。并可以根据不同的业务为各个服务已插件的形式注册认证授权,访问频率限制,CORS等插件。



  1. 当服务注册完成之后,用户端可以基于被授权的用户token去访问他们想要使用的服务。



本文只是简单地介绍了下整体的流程。但是每一个部分都需要用户自己去深入了解了~~


本文转载自公众号“360 技术”:https://mp.weixin.qq.com/s/UzPaTnLaEV51WNOJwhFt0g


2019 年 4 月 11 日 14:521933

评论

发布
暂无评论
发现更多内容

人人都可以掌握的正交试验设计测试用例方法

陈磊@Criss

原创 | 使用JPA实现DDD持久化-R:数据的世界

编程道与术

Java hibernate DDD JDBC jpa

pipreqs:生成python项目的requirements

陈磊@Criss

DockerFile 详解

陈磊@Criss

Docker的Image

陈磊@Criss

优质单元测试的十大标准,你有遵循吗?

项目管理 单元测试 自动化测试

22种超全用户触点采集,易观方舟SDK又更新了

易观大数据

欲速也可达:Battle接口测试训练系统的1分钟快速说明

陈磊@Criss

Nginx的容器部署

陈磊@Criss

jmeter 执行python脚本

陈磊@Criss

该了解一波了!零基础入门Nginx

程序员的时光

nginx Docker

弹性计算的内部概念:弹性扩张、弹性收缩、弹性自愈

陈磊@Criss

PIP的报错Could not fetch URL https://pypi.org/

陈磊@Criss

国内程序员最容易发音错误的单词集合

程序员生活志

程序员 经验总结

最受欢迎的男友职业排行榜Top10

程序员生活志

程序员

如何选择一个性能测试工具(LoadRunner和Locust的一次对比)

陈磊@Criss

高中生写LOL外挂1年狂赚500万,落网前刚买下120万保时捷...

程序员生活志

编程 程序员 外挂

微信小程序的自动化测试框架

陈磊@Criss

企业微信群消息机器人发送开源项目

陈磊@Criss

python判断文件和文件夹是否存在、创建文件夹

陈磊@Criss

Docker 容器连接

陈磊@Criss

Docker的Image

陈磊@Criss

标新立异的日志归档:用更少的内存归档大规模测试日志

陈磊@Criss

Grafana和ES打造的Nginx的仪表盘

陈磊@Criss

Python的Twisted事件驱动的网络引擎框架

陈磊@Criss

Java的Override和Overload

陈磊@Criss

告别下载速度慢!Docker配置阿里云镜像仓库

程序员的时光

Docker 阿里云

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!

程序员生活志

git

Clover:解决Java8和Cobertura的问题以及解决方法

陈磊@Criss

Git删除仓库中的文件和文件夹

陈磊@Criss

快速掌握的测试用例优先级划分方法

陈磊@Criss

容器赋能AI—人工智能在360私有云容器服务上的实践-InfoQ