微服务简介

1、什么是SOA?(面向服务的软件架构、Service Oriented Architecture)

  SOA代表了面向服务的架构。 SOA是一种使用松耦合的黑盒子服务构建业务应用的体系架构,这些服务可以通过编排连接在一起以实现特定的功能。

       面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

2、主要特点是什么?

A) SOA组件是松耦合的。当我们说松耦合,这意味着每一个服务是自包含单独存在的逻辑。

B) SOA服务是黑匣子。在SOA中,服务隐藏有内在的复杂性。他们只使用交互消息,服务接受和发送消息。通过虚拟化一个服务为黑盒子,服务变得更松散的耦合。

C) SOA服务应该是自定义: SOA服务应该能够自己定义。

D) SOA服务维持在一个列表中: SOA服务保持在一个中央存储库。应用程序可以在中央存储库中搜索服务,并调用相应服务。

E) SOA服务可以编排和链接实现一个特定功能: SOA服务可以使用了即插即用的方式。

F) 因为SOA不依赖于任何技术,因此SOAP、RPC、REST是对SOA的不同实现。

3什么是微服务

微服务的本质就是将复杂的服务拆分成单独的个体,个体之间通过统一的协议相互沟通的一个过程。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成,每一个微服务都是一个独立的进程,服务之间相互协调,服务之间通过轻量级通信机制来通信(如HTTP的restful)。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

彻底的组件化和服务化,Docker容器,进程隔离;微服务的目的是有效的拆分应用,实现敏捷开发和部署。

核心:其一足够构成一个独立小应用(从DB到UI),其二微服务应用之间只能通过serviceAPI进行交互,其三一般运行在云虚拟机或者更轻的Docker容器上。

4.微服务和SOA对比

两者的主要差异如下:

  • 服务拆分粒度:SOA首先要解决的是异构系统应用的服务化;微服务强调的是服务拆分尽可能小,最好是独立的原子服务。
  • 服务依赖:传统的SOA服务,由于需要重用已有的资产,存在大量的服务间依赖;微服务的设计理念是服务自治、功能单一独立,避免依赖其他服务产生耦合,耦合会带来更高的复杂度。
  • 服务规模:传统SOA服务粒度比较大,多数会采用将多个服务合并打成war包的方案,因此服务实例数比较有限;微服务强调尽可能拆分,同时很多服务会独立部署,这将导致服务规模急剧膨胀,对服务治理和运维带来新的挑战。
  • 架构差异:微服务化之后,服务数量的激增会引起架构质量属性的变化,例如企业集成总线ESB逐渐被P2P的虚拟总线替代;为了保证高性能、低时延,需要高性能的分布式服务框架保证微服务架构的实施。
  • 服务治理:传统基于SOA Governance的静态治理转型为服务运行态微治理、实时生效。
  • 敏捷交付:服务由小研发团队负责微服务设计、开发、测试、部署、线上治理、灰度发布和下线,运维整个生命周期支撑,实现真正的DevOps。

 

 5.微服务的优点和缺点

优点:

1)  每个微服务相对较小

        开发者易于理解

        IDE处理效率快,利于提高劳动生产率

        Web容器压力小,容器启动速度快,易于提供劳动生产率和生产环境部署速度

2) 每个微服务都可以独立部署,简化了部署新服务版本的流程

3) 易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务

4) 改善故障隔离。一个服务宕机不会影响其他的服务

5) 每个服务可以独立的进行开发和部署

6) 无需长期使用同一套技术栈

缺点

1).开发者需要应对创建分布式系统所产生的额外的复杂因素。

  目前的IDE主要面对的是单体工程程序,无法显示支持分布式应用的开发

  测试工作更加困难

  需要采用服务间的通讯机制

  很难在不采用分布式事务的情况下跨服务实现功能

  跨服务实现要求功能要求团队之间的紧密协作

2).部署复杂。

3).内存占用量更高。

原文地址:https://www.cnblogs.com/ntbww93/p/9110991.html