什么是微服务架构?

微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设。微服务架构的本质,是用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。该架构强调的一些准则:单一职责、协议轻量、进程隔离、数据分离、独立部署、按需伸缩。

什么是Kubernetes?

Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能:1) 自动化容器的部署和复制,随时扩展或收缩容器规模。2) 以集群的方式运行、管理跨机器的容器。3) 将容器组织成组,并且提供容器间的负载均衡。4) 解决Docker跨机器容器之间的通讯问题。5) Kubernetes的自我修复机制使得容器集群保持健康状态。

微服务架构(MSA)跟SOA架构有何不同?

微服务架构是伴随敏捷迭代开发而兴起的,更加强调快速敏捷部署和伸缩,适用于功能拆分比较细的场景,粒度也更小、更独立。协议上基于更加轻量化的REST API,供内部各子系统及微服务之间调用。适合业务相对独立、简单的互联网场景。强调服务的独立部署和易伸缩能力。下图是详细的对比:

怎么理解服务注册和服务发现?

微服务架构下,有大量的微服务需要处理。由于微服务的快速和敏捷研发,他们的位置可能会动态变化。因此在运行时需要能够发现服务所在的位置,服务发现可以解决这个问题。

服务注册:注册中心有微服务的实例和位置信息,微服务在启动时向注册中心注册自己的信息,关闭时注销。其它使用者能够通过注册中心找到可用的微服务和相关信息。

服务发现:为了能找到可用的服务和他们的位置信息,需要服务发现机制。有两种发现机制,客户端发现和服务端发现。WEB应用中,比较常用的是服务端发现的方式:客户端/API网关把请求发送到已知位置信息的组件(比如负载均衡器)。组件去访问注册中心,找到微服务的路径信息,并跳转到相应的微服务。

用友iuap云运维平台如何基于Kubernetes实施微服务?

基于平台的微服务部署变得不同于传统模式:能够独立于其他微服务发布或者取消发布; 微服务可以水平扩展(某一个服务比其他的请求量大);能够实现快速的构建和发布;各微服务之间的功能不相互影响。使用基于Kubernetes的方式部署微服务,用户需要的只是定义服务的状态,而不是部署过程。

先来看一下Kubenetes整体框架,如下图所示:主要包括kubecfg、Master API Server、Kubelet、Minion以及Proxy。

Master定义了Kubernetes 集群Master/API Server的主要声明,包括Pod Registry、Controller Registry、Service Registry、Endpoint Registry、Minion Registry、Binding Registry、REST Storage以及Client, 是client(Kubecfg)调用Kubernetes API,管理Kubernetes主要构件Pods、Services、Minions、容器的入口。 Minion负责跟踪Kubernetes 集群中有多少台主机。Pod负责跟踪集群中有多少Pod在运行,及跟Minion的映射关系。

下面我们一起看下,基于Kubernetes是如何进行服务注册发现的,其详细的架构如下图所示:

Kubelet是Kubernetes集群中每个Minion和Master API Server的连接点,Kubelet运行在每个Minion上,是Master API Server和Minion之间的桥梁,接收Master API Server分配给它的commands和work,与持久性键值存储etcd、file、server和http进行交互,读取配置信息。Kubelet的主要工作是管理Pod和容器的生命周期,其包括Docker Client、Root Directory、Pod Workers、Etcd Client、Cadvisor Client以及Health Checker组件。

部署完毕后的Kubernetes集群,其各组件和微服务架构所提出的一些准则的对应关系,如下图所示:

应用以Docker容器的形态,通过Namespace隔离的运行在定义好的Pod当中,各微服务之间的调用变得如此简单,再也不用为微服务的实施和治理烦恼了。

转:http://www.csdn.net/article/a/2016-07-18/3667

用友iuap云运维平台支持基于K8s的微服务架构的更多相关文章

  1. iUAP云运维平台v3.0全面支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  2. 基于.net的微服务架构的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  3. 基于.net的微服务架构下的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  4. 【I·M·U_Ops】------Ⅰ------ IMU自动化运维平台设想

    说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 搞这个平台的初心 由于之前呆的单位所有IT相关硬件资源都要我们 ...

  5. OMS自动化运维平台部署

    OMS自动化运维平台部署 一.基础环境安装 yum -y install mariadb mariadb-devel mariadb-server wget epel-release python-d ...

  6. (1)Linux常用的运维平台和工具

    运维工程师使用的运维平台和工具包括: Web服务器:apache.tomcat.nginx.lighttpd 监控:nagios.ganglia.cacti.zabbix 自动部署:ansible.s ...

  7. 实战:阿里巴巴 DevOps 转型后的运维平台建设

    导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家.   前言   “我是这个应用 ...

  8. 阿里巴巴 DevOps 转型后的运维平台建设

    原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...

  9. devops 运维平台相关知识

    1.https://choerodon.io/zh/community/ (代码 https://github.com/choerodon/choerodon) 猪齿鱼 2.https://www.o ...

随机推荐

  1. 【Bugly安卓开发干货】Android APP 高速 Pad 化实现

    Bugly 技术干货系列内容主要涉及移动开发方向.是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创.转载请标明出处. 怎样能在最快的时间内,实现一个最新 ...

  2. 感谢大家对《Cocos2d-JS开发之旅》的支持

    昨天收到一封读者的来信,给我报了个喜,也提了一些非常好的建议. 他通过短短1个月时间就完成了学习和游戏开发,并发布了Android和iOS平台,真了不起.授人以鱼不如授人以渔,这也是写书的最大喜悦吧. ...

  3. 索引范围扫描(INDEX RANGE SCAN)

    索引范围扫描(INDEX RANGE SCAN)适用于所有类型的B树索引,当扫描的对象是唯一性索引时,此时目标SQL的where条件一定是范围查询(谓词条件为 BETWEEN.<.>等): ...

  4. 使用mapreduce来分析网站的log日志

    近日,有人和我说分析log日志. 之前,就写过,但是忘了总结了,找了半天也没有找到,看了以后要将东西整理了. 无奈,在网上收拾,看到这个人写的,索性,就搬过来,待我找到我写的,在一块补充一下! 所有网 ...

  5. Arduino和C51开发DS1302时钟

    技术:51单片机.Arduino.DS1302时钟.串口通信   概述 本文实现51单片机和Arduino串口实时显示时钟功能,让读者对DS1302能够更好的理解,这次功能也和上节课学到的串口通信运用 ...

  6. jquery版本号升级不兼容的问题:$(&quot;input&quot;).attr(&quot;value&quot;)功能发生改变

    之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$(& ...

  7. ios中tableview网封装(viewcontroller封装)常用的

    下载地址 http://pan.baidu.com/share/link?shareid=3657500168&uk=923776187 使用框架 1:asIHttpRequest库 2;SB ...

  8. linux shell 脚本攻略学习15--如何只列出目录,如何快速切换目录

    工作中经常遇到关于目录方面的问题,例如,如何只列出当前目录下的所有目录,以及如何快速高效的切换目录,而不需要使用鼠标,下面将简单介绍关于这两方面的解决方案: 一.如何只列出目录? 看似简单的任务,其实 ...

  9. Socket编程:之双机通信

    服务端: #include<sys/socket.h> #include<sys/types.h> #include<stdio.h> #include<un ...

  10. Python学习笔记(九)—— 函数

    一.函数调用: 1.python内部函数查询:http://docs.python.org/3/library/functions.html#abs 2.注意调用函数的参数个数和类型. 3.函数名其实 ...