什么是微服务?微服务和传统分布式架构的区别?


一.分布式架构和微服务简述

分布式架构是一种将系统的不同部分分布在多台计算机或节点上的架构设计方式。这些计算机可以是物理上分散的,也可以是虚拟的,它们通过网络进行通信和协作,共同完成系统的功能。分布式架构旨在提高系统的可扩展性、可用性和容错性。

而微服务是分布式架构的一种特定形式,它是一种将软件系统划分为小型、自治的服务单元的设计方法。每个微服务都运行在独立的进程中,并通过轻量级的通信机制(通常是HTTP或消息队列)与其他微服务进行交互。每个微服务都专注于执行特定的业务功能,可以独立部署、更新和扩展。微服务架构有助于实现系统的模块化、灵活性和可维护性。

总而言之:微服务是一种经过良好架构设计的分布式架构方案

二.为什么要引入分布式架构?它和传统的单体服务有什么区别?

传统的单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署,这样的架构简单和部署成本低的特点,但是各个功能之间耦合度很高并且重复的操作过多

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。这种架构降低了服务耦合还有利于服务升级拓展

三.微服务

分布式架构固然优点很多,但分布式架构的要考虑的问题有:

服务拆分粒度如何?
服务集群地址如何维护?
服务之间如何实现远程调用?
服务健康状态如何感知?

有了以上问题,微服务技术就顺应而出了:

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
1.单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
2.面向服务:微服务对外暴露业务接口
3.自治:团队独立、技术独立、数据独立、部署独立
4.隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

几种常见的微服务框架对比:
在这里插入图片描述

1.SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
在这里插入图片描述
既然springcloud可以使用http协议,就可以使用http协议调用另外一个服务的restful路径

这里使用的是RestTemplate
在这里插入图片描述
在这里插入图片描述

2.RestTemplate 和 HttpClient 的区别

RestTemplate:
1.Spring框架依赖: RestTemplate 是 Spring Framework 的一部分,它提供了一种简化的方式来发送HTTP请求并处理HTTP响应。因此,如果使用Spring框架,RestTemplate 是一个很好的选择。

2.高级封装: RestTemplate 提供了一些高级封装,使得发送HTTP请求和处理响应更加简单。它内置了对JSON、XML等格式的支持,并提供了一些便捷的方法,例如 getForObject() 和 postForObject()。

3.注入和配置: 在Spring应用中可以通过依赖注入将 RestTemplate 注入到的组件中并且可以通过配置来自定义其行为。

HttpClient:
1.独立性: HttpClient 是 Apache HttpComponents 项目的一部分,是一个独立的库,不依赖于Spring框架。可以在任何Java应用中使用它,而不仅限于Spring应用。

2.低级控制: 相对于 RestTemplate,HttpClient 提供了更多的底层控制。可以更精确地配置连接管理、请求和响应处理等方面的细节。

3.灵活性: HttpClient 是一个通用的HTTP客户端库,不仅仅用于RESTful服务。可以使用它来发送任何类型的HTTP请求,而不仅仅是GET和POST。

3.提供者与消费者

  • 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
  • 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

服务调用关系

  • 提供者与消费者角色其实是相对的,即一个服务可以同时是服务提供者和服务消费者

四.集群

集群是由多台计算机(通常称为节点或主机)通过网络连接在一起,协同工作以提供共同的计算资源或服务的组合。这组计算机一起形成一个单一的系统,被视为一个整体。集群的目标通常是提高系统的可靠性、可扩展性和性能。

在一个集群中,各个节点可以独立运行,但它们能够共享资源和工作负载。这允许系统在节点之间分配任务,以便更高效地完成工作。集群可以用于各种目的,包括提供高性能计算、支持大规模并行处理、增强系统的可用性,以及构建分布式服务。

集群可以分为几种不同类型,其中两个主要类型是:

1.高性能计算集群(HPC): 用于处理需要大量计算资源的科学和工程应用程序。这种类型的集群通常包含大量处理器和内存,以便并行执行计算密集型任务。

2.服务器集群: 用于提供网络服务或应用程序,如网站托管、数据库服务、应用服务器等。这种类型的集群通常旨在提高可用性和性能,通过将负载分布到多个节点来处理大量请求。

集群的优势包括:

1.高可用性: 如果一个节点发生故障,其他节点仍然可以继续工作,确保系统的可用性。

2.可扩展性: 随着需求的增加,可以通过添加更多的节点来扩展集群的计算能力。

3.负载均衡: 集群可以通过在节点之间均匀分配工作负载来提高性能,防止某个节点成为系统的瓶颈。

4.容错性: 集群可以通过在多个节点上备份数据和任务来提高系统的容错性,防止数据丢失或任务中断。

简单的来说集群就是将几台服务器集中在一起,处理同一个业务(微服务可以做成集群,微服务的节点也可以集群化)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值