微服务相关技术

微服务是一种架构设计风格,微服务的特征,我们尊敬的布道师——马丁富勒大神已经给出了很好的总结。

 

 

简单的说,就是一组被集中管理的、规模较小的服务,每个服务只完成内聚性很强的一组功能,并通过网络彼此协作,时间所限,这里就不对每一条展开解释了,以后有机会可以单独聊下这个话题。这里先把原文链接和一份不错的翻译推荐给大家,大家感兴趣的话可以看一下,原文 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设计的优雅之处。

 

来源:http://mp.weixin.qq.com/s?__biz=MzI5MDEzMzg5Nw==&mid=2660392451&idx=1&sn=fdc552adf2c181b5f34f40d92dfe075c&scene=1&srcid=0902pj8wsDi9Xf6WhqfSl9mk&from=groupmessage&isappinstalled=0#wechat_redirect

posted on 2016-09-03 15:18  时间朋友  阅读(799)  评论(0编辑  收藏  举报

导航