关于微服务整理

  • 微服务架构的优点:
  1. 每个服务都比较简单,只关注于一个业务功能。
  2. 微服务架构方式是松耦合的,可以提供更高的灵活性。
  3. 微服务可通过最佳及最合适的不同的编程语言与工具进行开发,能够做到有的放矢地解决针对性问题。
  4. 每个微服务可由不同团队独立开发,互不影响,加快推出市场的速度。
  5. 微服务架构是持续交付(CD)的巨大推动力,允许在频繁发布不同服务的同时保持系统其他部分的可用性和稳定性。
  • 微服务架构的缺点:

微服务的一些想法在实践上是好的,但当整体实现时也会呈现出其复杂性。

  1. 运维开销及成本增加:整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成需要构建/测试/部署/运行数十个独立的服务,并可能需要支持多种语言和环境。这导致一个整体式系统如果由20个微服务组成,可能需要40~60个进程。
  2. 必须有坚实的DevOps开发运维一体化技能:开发人员需要熟知运维与投产环境,开发人员也需要掌握必要的数据存储技术如NoSQL,具有较强DevOps技能的人员比较稀缺,会带来招聘人才方面的挑战。
  3. 隐式接口及接口匹配问题:把系统分为多个协作组件后会产生新的接口,这意味着简单的交叉变化可能需要改变许多组件,并需协调一起发布。在实际环境中,一个新品发布可能被迫同时发布大量服务,由于集成点的大量增加,微服务架构会有更高的发布风险。
  4. 代码重复:某些底层功能需要被多个服务所用,为了避免将“同步耦合引入到系统中”,有时需要向不同服务添加一些代码,这就会导致代码重复。
  5. 分布式系统的复杂性:作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。
  6. 异步机制:微服务往往使用异步编程、消息与并行机制,如果应用存在跨微服务的事务性处理,其实现机制会变得复杂化。
  7. 可测性的挑战:在动态环境下服务间的交互会产生非常微妙的行为,难以可视化及全面测试。经典微服务往往不太重视测试,更多的是通过监控发现生产环境的异常,进而快速回滚或采取其他必要的行动。但对于特别在意风险规避监管或投产环境错误会产生显著影响的场景下需要特别注意。
  • 关于微服务架构的取舍
  1. 在合适的项目,合适的团队,采用微服务架构收益会大于成本。
  2. 微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。
  3. 需要避免为了“微服务”而“微服务”。
  4. 微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。

微服务优点

  • 每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求。
  • 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
  • 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
  • 微服务能使用不同的语言开发。
  • 微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, bamboo 。
  • 一个团队的新成员能够更快投入生产。
  • 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
  • 微服务允许你利用融合最新技术。
  • 微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合。
  • 微服务能够即时被要求扩展。
  • 微服务能部署中低端配置的服务器上。
  • 易于和第三方集成。
  • 每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。

微服务架构的缺点

  • 微服务架构可能带来过多的操作。
  • 需要DevOps技巧 (http://en.wikipedia.org/wiki/DevOps).
  • 可能双倍的努力。
  • 分布式系统可能复杂难以管理。
  • 因为分布部署跟踪问题难。
  • 当服务数量增加,管理复杂性增加。

原文地址:https://www.cnblogs.com/q149072205/p/9376435.html

时间: 2024-08-30 18:31:59

关于微服务整理的相关文章

分布式、集群和微服务概念整理

整理来源于 https://www.cnblogs.com/xishuai/p/6039838.html 集群是个物理形态,分布式是个工作方式. 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 1:分布式是指将不同的业务分布在不同的地方.而集群指的是将几台服务器集中在一起,实现同一业务. 分布式中的每一个节点,都可以做集群.而集群并不一定就是分布式的. 举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务

分布式、集群和微服务相关概念整理(转载)

本来主要内容转载自:http://www.cnblogs.com/xishuai/  集群是个物理形态,分布式是个工作方式,微服务是一种架构风格 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 微服务:是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下,每个任务代表着一个小的业务能力. 1:分布式是指将不同的业务分布在不同的

你离 精通微服务 只差一个阿里资深架构师整理的微服务实战文档

前言 什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微".什么是"服务", 微,狭义来讲就是体积小.著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计.开发.测试.运维所有人加起来 只需要2个披萨就够了 ). 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

本文转自:http://mt.sohu.com/20160803/n462486707.shtml 最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 .近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时

微服务(Microservice)那点事

原文出处: 云栖社区 WHAT – 什么是微服务 微服务简介 这次参加JavaOne2015最大的困难就是听Microservice相关的session,无论内容多么水,只要题目带microservice,必定报不上名,可见Microservice有多火.最喜欢其中一页.关于这个典故,可以参考this,此图适用于一切高大上的名字——技术有SOA,Agile,CLOUD,DevOps等等,古代有道,气,八卦等等.此类名词的最大特点就是 一解释就懂,一问就不知,一讨论就打架. 微服务的流行,Mart

NET实现的DDD、CQRS与微服务架构

WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例 最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索.现将自己的思考和收获整理成文,分享给大家. 微服务架构 在介绍源代码之前,我还

15年资深架构师详解:一个大型互联网公司的微服务转型实践

微服务是一个比较大的话题,基于我的过往经历,本文将以 Netflix 为例,分享一个大型互联网公司如何从一个 Monolithic 的 APP 成功转型到微服务.文章主要涉及微服务的产生历史,应用场景,与单片服务区别,微服务带来的技术.企业组织结构等方面挑战,以及如何合理地选择单片服务构架和微服务构架等内容. 微服务的产生历史 如下图,是微服务在 Google 的搜索结果: 自 2014 年以来,微服务开始被关注,搜索的人越来越多,并在 2016 年左右达到顶峰.从地域来看,很多国家都在关注,如

微服务架构(Microservices)

说在前面 好久没写博文了,心里痒痒(也许是换工作后,有点时间了吧).最近好像谈论微服务的人比较多,也开始学习一下,但是都有E文,看起来半懂不懂的. Martinfowler的<微服务>,也算是入门必读了.有人翻译过,但是只有一半.还是自己练练手吧. 微服务 "微服务架构"一词在过去几年里广泛的传播,它用于描述一种独立部署的软件应用设计方式.这种架构方式并没有非常准确的定义,但是在业务能力.自动部署.端对端的整合.对语言及数据的分散控制上,却有着显著特征. "微服务

微服务&mdash;&mdash;Martin Flower【翻译】

原文地址 本文内容 微服务 微服务风格的特性 组件与服务 围绕业务功能进行组织 产品不是项目 强化终端及弱化通道 分散治理 分散数据管理 基础设施自动化 容错性设计 设计改进    微服务是未来吗 其它 微服务系统多大 微服务与SOA 多语言多选择 实践标准和强制标准 让做对事更容易 断路器circuit breaker和产品中现有的代码 同步是有害的   微服务 "微服务架构"一词在过去几年里广泛的传播,它用于描述一种独立部署的软件应用设计方式.这种架构方式并没有非常准确的定义,但是