今天给你们蜻蜓点水的聊一下微服务相关的热门技术。html
若是问什么是微服务?那就很难回答了,并且容易引发争论,由于微服务不是一个技术定义;若是问微服务是什么?具有哪些特征?则比较容易回答,微服务是一种架构设计风格,微服务的特征,咱们尊敬的布道师——马丁富勒大神已经给出了很好的总结。安全
简单的说,就是一组被集中管理的、规模较小的服务,每一个服务只完成内聚性很强的一组功能,并经过网络彼此协做,时间所限,这里就不对每一条展开解释了,之后有机会能够单独聊下这个话题。这里先把原文连接和一份不错的翻译推荐给你们,你们感兴趣的话能够看一下,原文 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。spa
上图是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的金融云的技术方案、架构设计和技术原型工做。
关于EAII
EAII(Enterprise Architecture Innovation Institute)企业架构创新研究院,致力于软件架构创新与实践,加速企业数字化转型。