前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务相关技术概览

微服务相关技术概览

作者头像
yuanyi928
发布2018-04-02 15:26:24
8110
发布2018-04-02 15:26:24
举报
文章被收录于专栏:EAWorldEAWorld

今天给大家走马观花的聊一下微服务相关的热门技术。

如果问什么是微服务?那就很难回答了,而且容易引起争论,因为微服务不是一个技术定义;如果问微服务是什么?具备哪些特征?则比较容易回答,微服务是一种架构设计风格,微服务的特征,我们尊敬的布道师——马丁富勒大神已经给出了很好的总结。

简单的说,就是一组被集中管理的、规模较小的服务,每个服务只完成内聚性很强的一组功能,并通过网络彼此协作,时间所限,这里就不对每一条展开解释了,以后有机会可以单独聊下这个话题。这里先把原文链接和一份不错的翻译推荐给大家,大家感兴趣的话可以看一下,原文 http://martinfowler.com/articles/microservices.html,翻译 http://www.36dsj.com/archives/42305(复制地址在游览器打开)

那么微服务为什么这么火呢?微服务到底带来了哪些业务价值?太多了,我们随便列一下~~

还有一个常见问题就是,微服务和SOA到底是啥关系,这又是一个引起很多争论的问题,对这个问题,我认为最好的解答来自Nguyen Quang Tung。

英文还挺押韵,简单的说就是SOA讲的是多个系统之间的集成,微服务讲的是系统内部的架构风格。

前面介绍了微服务的概念和价值,接下来介绍一下常见的微服务实现框架。

最成功的就是Netflix,就是拍纸牌屋的那家公司,开源出来的一系列项目,统称为NetflixOSS,OSS就是Open Source Software的缩写了。Netflix以前是出租光碟的,现在摇身一变成了微服务时代的领军人物,即使是Java领域最成功的微服务框架——Spring Cloud,也很多参照的Netflix OSS,实在是太励志了!

我们可以看到,无论是Netflix OSS和Spring Cloud,都提供了服务注册和发现、集中配置、集中日志、服务网关和路由、容错/熔断等能力,这些能力也是微服务框架的必须能力。

这里每一个模块都可以讲上几小时,所以也不展开讲了,先简单看一下Netflix OSS的一个比较有意思的模块,业务容错/熔断模块Hystrix。

上图是Hystrix的调用流程,开发微服务模块的时候,引用下Hystrix,然后按它的框架实现,就可以让Hystrix把外部对你的微服务调用都管理起来,支持同步、异步和React模式,如果调用出错、超时或者过载,Hystrix会帮你做出相应的保护措施。下图是Hystrix的控制台,可以看到各个微服务的资源使用情况、调用次数、响应时间都数据。

其他模块我们就先不看了,后面我们可以安排专题讨论,挨个模块讲一遍~~

提到微服务就不能不提容器技术,容器技术对微服务架构的落地起了极大的促进作用,原因很简单,一个完整的操作系统太大了,如果里面只跑了一个微服务,那操作系统本身的资源开销,相对微服务,就太大了,而容器为微服务提供了一个轻量的运行环境。

那么我们看一下Linux容器的核心技术:

容器“本身”其实指的是LinuxNamespace和CGroup这两个技术的组合,其他像Lxc、Lxd、Docker等,其实都是容器的用户空间操作工具。

接下来讲的是当今最热门的容器管理工具,Docker

环境的轻量化,其实是容器的价值,Docker只是做了一个非常易用的容器管理工具,环境的版本化和可堆叠,是Docker的创新之处,环境的版本化使环境可以像代码一样管理,环境的可堆叠使环境易于修改和组装。

当然,这里说的Docker指的是Docker的核心功能,即Docker Engine,Docker公司还发布了Docker Swarm、Docker Compose等容器管理工具,已经成长为一个数据中心级的容器管理解决方案厂商。

提到Docker就不能不提Docker的欢喜冤家Rkt,本来Docker和底层的操作系统(如后面要讲到的CoreOS)、上层的容器编排技术(如后面要讲到的Kubernetes)是和平共处互相合作的,但是燕雀焉知鸿鹄之志,Docker想自己搞定端到端的解决方案,功能越做越厚,这样就很难再和上下游对接了,所以CoreOS和Kubernetes只好另起炉灶,搞了自己的容器管理工具Rkt,并定义了相应的技术标准——AppC

Rkt相比Docker,主要的改进在安全性上。而AppC对应用封装的考虑更多一些。

接下来再介绍下为容器而生的操作系统——CoreOS

CoreOS的最大优点是天生的集群化、容器化和可靠的自动升级,类似的操作系统还有RancherOS、Redhat的Atomic和VMware的Photon,这里就不一一列举了。

在容器技术栈中,我们最后看一下Kubernetes

Kubernetes是个基于容器的微服务治理框架,可以帮助用户注册和发布微服务、通过自动故障恢复保持微服务的可用性、为微服务提供自动伸缩和滚动升级等能力,功能非常完备。

Kubernetes的概念比较简单,只有Pod(一组容器,对应一个微服务实例)、RC(用了创建微服务实例的副本)、Service(一个逻辑概念,用来对外提供服务)和Label(用来表示上面三个概念之间的关系),而这四个简单的概念即可支撑上层应用的千变万化,这是kubernetes设计的优雅之处。

热门技术介绍完毕,最后我们看一下这些技术在普元数字化企业云平台内的应用。

平台自动化和部署自动化部分使用了CoreOS、Docker/Rkt和Kubernetes,在API Gateway、服务发现、容错/熔断、监控和日志等方面,使用了Netflix OSS的几个组件。

普元原有的集成、流程和数据产品,在数字化企业云平台里也会微服务化,第三方的应用可以通过Service Broker包装成微服务接入到数字化企业云平台中。

今天就到这里,谢谢大家。

关于作者:

宋潇男

EAII-企业架构创新研究院 专家委员

曾任华为云计算产品技术总监,现任普元云计算架构师,负责产品规划、市场推广、技术合作等工作。所参与研发的云计算产品在中国银联、中国石油等客户获得应用。曾负责国家电网第一代云资源管理平台以及中国银联基于OpenStack的金融云的技术方案、架构设计和技术原型工作。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 EAWorld 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档