什么是微服务

168 阅读7分钟

先简单介绍一下从开始学Java到微服务我们采用的架构方式: 单体架构->分布式架构->微服务分布式架构

想要要了解微服务,需要从基础开始,那么什么是单体架构?

单体架构,又称为单体应用架构,是一种传统的软件架构模式。在单体架构中,整个应用程序被构建为一个单一的、独立运行的单元,所有功能模块都部署在同一个应用程序中。这意味着所有的业务逻辑、数据访问、用户界面等都封装在一个单一的代码库中。

单体架构常常被比喻为一个大而臃肿的应用程序。它具有以下特点:

1.  单一代码库:所有的功能模块都在同一个应用程序中,通过共享代码库进行开发和维护。
2.  中心化部署:整个应用程序作为一个整体进行部署,所有模块共享同一个运行环境。
3.  单一数据库:应用程序通常使用单一的数据库来存储所有的数据。
4.  紧耦合:不同模块间的代码和逻辑紧密地耦合在一起,改动一个模块可能会影响其他模块的功能。

单体架构简化了应用程序的开发和部署,但也存在一些挑战。随着应用程序的规模不断增长,单体架构可能变得难以维护、扩展和部署。因此,在需要更好的可扩展性和灵活性时,往往会考虑向微服务架构等其他架构模式的转变。

那我们知道需要向分布式架构转变,需要了解什么是分布式架构:


分布式架构是一种软件架构模式,它将应用程序的不同功能模块分散部署在多个计算机或服务器上,并通过网络进行通信和协同工作。在分布式架构中,各个模块可以独立运行,通过消息传递、远程调用或其他通信方式进行交流,共同完成应用程序的功能。

分布式架构具有以下特点:

1.  可伸缩性:通过将应用程序拆分为多个模块,可以根据需求增加或减少计算资源,从而实现弹性的扩展性。
2.  容错性:分布式架构中的模块可以互相独立运行,即使某个模块发生故障或不可用,其他模块仍然可以继续工作。
3.  并发性:由于功能模块分散部署,可以实现并行处理,提升系统的并发能力和处理能力。
4.  灵活性:分布式架构可以通过增加或替换模块来适应不同的业务需求,同时支持混合使用不同的技术栈。
5. 去中心化: 上面提到的单体架构,其特点有一点就是中心化部署,而分布式架构其有一点就是它是一种去中心化的部署模式,这意味着不同的功能模块分散部署在多台计算机或服务器上,它们可以相互独立地工作,极大的降低了其耦合的强度,需要调用其他层业务的时候,只需要通过网络通信即可完成

分布式架构常常用于构建大型的、复杂的应用系统,如互联网应用、分布式数据库、云计算平台等。它可以提供高可用性、高性能、弹性扩展等优势,但也需要考虑分布式事务、数据一致性等复杂性挑战

我们了解了分布式架构,有人会好奇,既然分布式架构已经那么强了,为什么还有微服务?其实微服务只是一种思想,由于分布式架构实现了去中心化,但有时候在分布式系统中仍然需要一些中心化的组件,如协调节点、管理节点或负载均衡器等用来协调和管理各个节点的工作.因此有一个思想能优化分布式,那于开发而言是一种福音. 微服务就是基于分布式架构的一个优化思想,那么什么是微服务?

微服务是一种架构风格,用于构建应用程序,将一个大型的应用程序拆分为一组小型的、自治的服务。每个微服务都运行在自己的进程中,并通过轻量级通信机制(通常是HTTP或消息队列)来进行相互通信。微服务架构的主要思想是将应用程序按业务功能拆分成多个相对独立的服务,每个服务可以独立开发、部署、扩展和管理,从而实现松耦合和高度可伸缩的系统。

微服务架构的优势包括更高的灵活性、可扩展性和可维护性。每个微服务都可以独立开发和部署,团队可以使用不同的技术栈和开发节奏。此外,微服务可以根据需求进行水平扩展,而不需要对整个应用程序进行扩展。它还可以更容易地隔离故障,因为一个服务的故障不会影响整个系统

我们都知道,用三层架构对我们的项目进行解耦合我们可以用spring boot框架帮我们完成,那么分布式架构的解耦合的框架是什么? 是spring cloud ,那么什么是spring cloud

Spring Cloud是一个开源的微服务框架,它基于Spring框架构建,用于简化分布式系统的开发和部署。它提供了一系列的组件和工具,可以帮助开发人员快速构建、连接和管理分布式系统中的各个微服务。Spring Cloud提供了服务注册与发现、负载均衡、断路器、分布式配置等功能,使得开发人员能够更容易地实现微服务架构,并且以更高效的方式进行部署、扩展和管理。

个人理解下的微服务架构

就用我自己的看法来来看待微服务,我把整个服务看成一箱不同品种的榴莲,要将它部署到每个人手中,此处我可以将人看为一台服务器。将整箱榴莲看作分布式架构,每个榴莲代表一个独立的服务器。我们将每个人看作一个服务器节点,每个人手中都持有一部分榴莲。通过在节点之间相互通信和协作,每个人可以共享和交换自己手中的榴莲,实现数据和资源的分布式处理。这样的分布式架构可以提供高可用性和可伸缩性,类似于将整个服务分散在每个人手中,每个人都负责处理一部分服务请求。

将整箱榴莲看作微服务架构,每个榴莲代表一个微服务。每个人作为一个独立的服务器,手中持有一种榴莲品种的服务。每个人(服务器)提供特定的服务,例如一个人可以提供榴莲切割服务,另一个人可以提供榴莲包装服务。通过将整个服务拆分成多个微服务,每个人只负责自己的服务领域,可以独立进行开发、部署和扩展。用户可以根据自身需求,选择不同人的服务来满足自己的榴莲需求。