微服务优缺点
Ⅰ 什么是微服务
“Mesh App and Service Architecture”作为Gartner2016 十大战略技术趋势中之一,里面大量提到微服务的概念。微服务(Microservices)这个概念不是新概念,很多公司已经在实践了,例如Google、Netflix、Facebook、Twiter、Alibaba。微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易得局部改良。
微服务从去年以来一直受到众多开发者的热捧,已经看到有许多项目尝试使用微服务架构,结果很鼓舞人心。然而,在微服务架构带来可独立部署、高扩展与伸缩、自由选择开发语言、高效利用资源、故障隔离等优点,同时也因为服务多带来分布式事务、服务之间通信、监控、部署等新的问题。
提到微服务架构时,我们常常会做的一件事情,就是会拿来与单体架构进行比较,单体架构存在如下缺点:代码维护难度大,臃肿的部署,局限的弹性与扩展能力,阻碍团队与技术革新等等;微服务架构存在如下优点:代码维护简化,可独立部署,高扩展与伸缩,自由选择开发语言等优点。那么单体架构真的如此不堪一击吗?答案显然不是这样,下面我们来看Martin Fowler在其一篇文章里面给出关系图:
上面的图来自 Martin Fowler 的文章,揭示了生产率和复杂度的一个关系。在复杂度较小时采用单体应用(Monolith)的生产率更高,复杂度到了一定规模时,单体应用的生产率开始急剧下降,这时对其进行微服务化的拆分才是合算的。所以说脱离业务场景,空谈架构绝对是耍流氓。异常牛逼的架构设计,如果无法在业务场景中落地实施,也只是空谈。因此架构需要服务于业务,针对不同的业务场景架构设计也会不同,架构设计不必追求高大上,简而美的架构,若能满足业务发展需求,便是好架构。此外,好的架构不完全是设计出来的,随着业务量、请求量的增长,好的架构是演化而来的。微服务架构之所以得到广泛认可,源于对于业务多变性的不可预测,微服务架构能够不断的自演化,进而快速适应业务变化。但相对于单体架构且经过严格定义的大规模开发项目,微服务架构要求大家面对由众多小型服务所构成的复杂生态系统。
鉴于此,如果长期业务规划不需要微服务架构或者团队不具备实施微服务一些基本的条件,不建议各位盲目迈向微服务这一新兴架构领域,或者从试点入手,逐步在团队中推行微服务架构。
Ⅱ 微服务架构的优缺点是什么
Ⅲ 微服务的优点
微服务是指提供单个业务功能的服务,从技术角度看就是一种小而独立的处理过程,类似流程概念,能够自行单独启动或销毁,拥有自己独立的数据库。
一个复杂软件架构是由很多这样小而独立运行(有自己的端口)微服务组成,这些独立处理组件之间通讯是通过与语言无关的API进行,简单协议有同步性质的RMI/RPC和 RESTful Web Services,异步的消息推送和Reactive方式。
这些模块化的方式能够使得公司将项目分解分散到多个开发团队,跨不同业务部门,提供非常充分的灵活性,帮助提高项目的生命周期,加快项目开发完成效率。
每个微服务组件都有自己分配的存储 内存和CPU资源,这就使得硬件利用更加易于优化和跟踪,特别是在基于云的Pass环境,开发团队可以使用他们喜欢的技术,任何语言都可以,只要确保微服务之间是可交互的,能够最终组合起最后的应用。
当管理复杂性会因为采取微服务架构而降低,通常更新其中一个微服务组件不会引起连锁反应,因为微服务之间是松耦合的。
目前使用微服务的企业有:Netflix Twitter Amazon Web Services (AWS), Google, eBay等。
因为有很多应用和服务部署在基于云主机的环境中,微服务架构将会严重依赖容器技术,容器隔离了微服务处理过程,将一个应用切分为一个个小的实例,这些容器中的小实例有自己的端口和虚拟化环境。
广泛使用的容器技术是Docker, 一种基于Linux的开源实现,由很多软件公司支持如 Canonical, Red Hat,和Parallels. PaaS服务支持包括Google App Engine, Red Hat Open Shift,和VMware的 Cloud Foundry,。