什么是微服务

在说微服务之前让我先来谈谈项目架构的演变过程;

1.1 单一的应用架构

早期,网站访问量没多少,只需要一台服务器就绰绰有余了
在这里插入图片描述

  1. 架构说明
    全部功能集中在一个项目里面(All in one)
  2. 架构优点
    项目架构简单,前期开发成本低,周期短,小型项目的首选。
  3. 缺点
    模块之间耦合度太高,其中一个升级其他都得升级
    开发困难,各个团队开发最后都要整合一起
    系统的扩展性差
    不能灵活的进行分布式部署
    技术栈受限,只能使用一种语言开发
    解决高并发只能通过集群,成本高

1.2 垂直的应用架构

随着互联网的发展,用户越来越多,当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键
在这里插入图片描述

  1. 架构说明
    按照业务进行切割,形成小的项目,项目直接通过RPC等方式通信,交换数据等
    2.架构优点
    耦合度降低
    技术不会受限制,不同系统可以使用不同语言开发
    项目不会无限扩大
    3.缺点
    项目间公共的逻辑重复,没办法复用
    界面和业务逻辑没有分离

1.3 SOA架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。流动计算架构的最佳实践阿里的Dubbo

在这里插入图片描述

  1. 架构说明
    将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁,使用RPC等方式进行通信
  2. 架构优点
    重复功能或模块抽取为服务,提高开发效率、可重用性高、可维护性高
    可以针对不同服务制定对应的技术方案。
    界面和业务逻辑实现分离
  3. 架构缺点
    各系统之间业务不同,因此很难确认功能或模块是重复的,不利于开发和维护
    抽取服务的粒度大

到此SOA架构已经很接近了微服务架构了,SOA和微服务可以说是一脉相承,大神Martin Fowler提出者一概念可以说是把SOA的理念进行升华了,精进了一步。其核心思想是在应用程序开发领域,用一系列小服务实现单个应用程序的方法,或者微服务的目的是有效地分割应用程序,实现敏捷开发和部署,可以用不同的编程语言编写。SOA可以更加一般化和不那么精确。

1.4 微服务架构

说了那么多,也知道了各个架构的优缺点,接下来我们来聊聊什么是微服务

微服务体系结构是一种体系结构模式或体系结构风格,它提倡将单个应用程序划分为一组小型服务,每个服务运行在各自独立的流程中,这些服务相互协调,为用户提供最终价值。服务之间使用轻量级通信机制进行通信(通常是基于http的RESTful API)。每个服务器都是围绕特定的业务构建的,可以独立部署到生产环境、类似生产的环境等等。此外,应尽量避免联合,服务管理机制,为一个特定的服务,应该是基于业务上下文,选择适当的语言,工具,和构建,是连接到互联网来识别和翻译的轻量级集中管理协调这些服务,你可以用不同的语言编写服务,也可以使用不同的数据存储。

从开发者角度来说:微服务的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从务技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。
在这里插入图片描述

我们再来看看微服务去优缺点

  1. 架构说明
    在服务治理架构上延伸,抽取的粒度更细,尽量遵循单一原则,采用轻量级框架协议(HTTP协议)传输。
  2. 架构优点
    去中心化的思想,不在使用ESB作为通信的桥梁,服务、系统之间可以相互访问。
    粒度更细,有利于提高开发效率。
    可以针对不同服务制定对应的技术方案。
    适用于产品迭代周期短
  3. 架构缺点
    粒度太细导致服务太多,维护成本高。
    负载均衡、事务等问题对技术团队的挑战及成本问题。
最后我们再看一下SOA和微服务的区别
功能SOA微服务
组件大小大业务逻辑单独任务或者小块业务逻辑
耦合通常松耦合总是松耦合
公司架构任何类型小型、专注于功能交叉团队
管理着重中央管理着重分散管理
目标确保应用能够交互操作执行新功能、快速拓展开发团队
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微服务分布式是两个相关但不同的概念。 微服务是一种架构风格,将一个应用程序拆分成一组小型的、独立的服务单元,并通过API进行通信。每个服务单元都可以独立开发、部署和扩展,这提高了系统的可靠性和可维护性。 分布式是指一个应用程序在多台计算机上运行,并通过网络进行通信。分布式系统通常由多个服务组成,这些服务可以在不同的计算机上运行。 因此,微服务可以是分布式架构的一部分,但不是必须的。一个应用程序可以是分布式的,但并不是微服务架构。 ### 回答2: 微服务是一种软件架构的设计理念和模式,将一个大型的应用程序拆分成多个小型的服务,每个服务都独立部署、独立运行,且具有独立的数据存储和交互接口。这些服务之间通过轻量级的通信机制进行交互,可以使用HTTP、消息队列等方式进行通信。每个微服务都专注于实现一个特定的业务功能,因此可以独立开发、测试和部署,提高了系统的可维护性、可扩展性和灵活性。 分布式是指在多台计算机上分布运行多个程序,通过网络连接进行通信和协作,共同完成一个任务或提供一个服务。分布式系统的特点是在不同的计算机节点上部署不同的程序和服务,这些节点通过网络进行通信,共享和传输数据。分布式系统可以提供高可用性、高性能和可扩展性等优势,同时也面临着节点故障、通信延迟、一致性问题等挑战。 微服务分布式是两个不同的概念,微服务是一种架构设计的思想,而分布式是一种计算机系统的运行方式。微服务可以在分布式系统中应用,将一个大型的分布式系统拆分成多个小型的微服务,每个微服务可以运行在不同的节点上,通过网络进行通信和协作,最终完成整个系统的功能。因此,微服务可以看作是一种分布式系统的架构方式,而分布式不一定是微服务架构。 ### 回答3: 微服务是一种软件架构风格,它将一个大型应用程序拆分为一组更小、更独立的服务单元,每个服务单元都可以独立开发、部署、扩展和管理。这些服务单元之间通过轻量级的通信机制进行交互,如HTTP或消息队列。 微服务架构具有以下特点: 1. 每个微服务独立部署,可以使用不同的技术栈和语言编写。 2. 每个微服务都有自己的数据存储,可以使用不同类型的数据库或存储。 3. 微服务之间通信通过API进行,可以使用各种通信机制。 4. 可以根据需要对每个微服务进行独立的扩展,提高系统整体的弹性和性能。 5. 每个微服务都可以独立进行升级和维护,不会影响其他微服务的运行。 分布式是一种计算机系统的架构,其中多个独立的节点通过网络进行通信和协调,共同完成一个任务或提供一个服务。在分布式系统中,各个节点之间相互协作,共享资源,通过消息传递或远程调用等方式进行通信。分布式系统通过将工作负载分散到多个计算机节点上,提高了系统的可靠性、可扩展性和性能。 分布式系统具有以下特点: 1. 系统中的节点可以位于不同的物理位置,通过网络进行通信。 2. 节点之间共享资源,例如数据库、文件系统或计算资源等。 3. 分布式系统中的节点可以独立工作,并通过协调和通信实现任务的分工和协作。 4. 分布式系统需要考虑节点故障、网络延迟和并发控制等问题。 5. 分布式系统可以提高系统的可靠性和性能,并具有高可用性和可扩展性。 总结来说,微服务是一种软件架构风格,将大型应用程序拆分成小的服务单元,而分布式是一种计算机系统架构,多个独立节点通过网络通信和协调来完成任务或提供服务。微服务是一种分布式系统的实践方式之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值