什么是微服务?微服务和传统分布式架构的区别?
这些计算机可以是物理上分散的,也可以是虚拟的,它们通过网络进行通信和协作,共同完成系统的功能。1.独立性: HttpClient 是 Apache HttpComponents 项目的一部分,是一个独立的库,不依赖于Spring框架。:将业务的所有功能集中在一个项目中开发,打成一个包部署,这样的架构简单和部署成本低的特点,但是各个功能之间耦合度很高并且重复的操作过多。: 如果一个节点发生故障,其他
文章目录
一.分布式架构和微服务简述
分布式架构是一种将系统的不同部分分布在多台计算机或节点上的架构设计方式。这些计算机可以是物理上分散的,也可以是虚拟的,它们通过网络进行通信和协作,共同完成系统的功能。分布式架构旨在提高系统的可扩展性、可用性和容错性。
而微服务是分布式架构的一种特定形式,它是一种将软件系统划分为小型、自治的服务单元的设计方法。每个微服务都运行在独立的进程中,并通过轻量级的通信机制(通常是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.容错性: 集群可以通过在多个节点上备份数据和任务来提高系统的容错性,防止数据丢失或任务中断。
简单的来说集群就是将几台服务器集中在一起,处理同一个业务(微服务可以做成集群,微服务的节点也可以集群化)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)