zoukankan      html  css  js  c++  java
  • 微服务相关技术

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

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

  • 相关阅读:
    Windows 7驱动开发系列(四)WDM模型介绍
    Windows Phone 7 XNA 架构调用流程及第一视角实现介绍
    Windows 7驱动开发系列(一)前言&&WIN7的新特性
    联想的移动应用策略
    Windows 7驱动开发系列(五)WDM驱动设计原则
    如何把浏览器不信任的网址设置为可信任的网点
    https和http有什么区别
    yourphp目录结构
    HTTP与HTTPS的区别
    ico图标在谷歌浏览器中如何显示?
  • 原文地址:https://www.cnblogs.com/doit8791/p/5837192.html
Copyright © 2011-2022 走看看