1. 架构
1.1 单体架构
单体架构(Monolithic Architecture)是一种传统的应用程序架构模式,它将整个应用程序作为一个单一的、紧密耦合的单元构建和部署。在单体架构中,应用程序通常由三个主要部分组成:客户端界面、应用服务器和数据库。这些部分都运行在同一个进程或者同一个部署单元中,共享相同的代码库、工具链和开发流程。
-
优点:部署简单、性能优越、开发简单
-
缺点:紧密耦合、难以扩展
1.2 分布式架构
分布式架构(Distributed Architecture)是一种现代的软件架构风格,它将一个大型的、复杂的应用程序分解成多个相互独立的、可以独立部署和运行的子系统,并将这些子系统部署在不同的计算机或服务器上,通过网络通信协议相互连接和协同工作,以实现整个应用程序的功能。
在分布式架构中,每个子系统都是相对独立的,它们可以独立部署、运行和升级,并且可以通过网络通信协议相互连接和协同工作,以实现整个应用程序的功能。分布式架构通常具有高可用性、高可扩展性、高性能等优点,可以应用于各种场景,例如大规模数据处理、高性能计算、云计算、分布式存储、分布式数据库等。
在分布式架构中,各个子系统之间的通信和协同工作需要采用一些机制和协议来保证数据的一致性、可靠性和安全性,例如分布式锁、分布式事务、分布式消息队列、负载均衡、容错机制等。此外,分布式架构还需要考虑一些问题,例如网络延迟、节点故障、数据一致性等,需要采用一些技术和机制来解决这些问题。
1.3 微服务架构
微服务架构(Microservices Architecture)是一种现代的软件架构风格,它将一个大型的、复杂的应用程序分解成多个小型的、相互独立的服务,每个服务都可以独立开发、部署、扩展和升级,并且通过轻量级的通信机制相互协作。每个服务都运行在自己的进程中,可以使用不同的编程语言、框架和技术栈。
在微服务架构中,每个服务都是相对独立的,它们可以独立部署、运行、扩展和升级,并且可以通过轻量级的通信机制相互协作。每个服务都具有明确定义的接口,可以通过不同的协议和技术栈进行通信。微服务架构通常具有高可用性、高可扩展性、高性能等优点,可以应用于各种场景,例如云计算、大规模数据处理、高性能计算、分布式存储、分布式数据库等。
在微服务架构中,各个服务之间的通信和协作需要采用一些机制和协议来保证数据的一致性、可靠性和安全性,例如RESTful API、消息队列、分布式缓存、负载均衡、容错机制等。此外,微服务架构也需要考虑一些问题,例如服务发现、服务治理、服务监控、日志管理等,需要采用一些技术和机制来解决这些问题。
创建技术:SpringCloud、Spring Cloud Alibaba、Dubbo
Dubbo是一种高性能、轻量级的开源RPC框架,它由阿里巴巴公司开发和维护。Dubbo可以支持多种协议和序列化方式,并且具有自动负载均衡、服务注册和发现、服务熔断和降级等功能,使用前需安装注册中心,推荐使用ZooKeeper注册中心。
1.3.1 SpringCloud简介
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
另外,SpringCloud底层是依赖于SpringBoot的,创建一个SpringCloud项目需要导入SpringCloud和SpringBoot相关依赖,并且两者有版本的兼容关系,如下:(需要注意)
Release Train | Release Train |
---|---|
2022.0.x aka Kilburn | 3.0.x |
2021.0.x aka Jubilee | 2.6.x, 2.7.x (Starting with 2021.0.3) |
2020.0.x aka Ilford | 2.4.x, 2.5.x (Starting with 2020.0.3) |
Hoxton | 2.2.x, 2.3.x (Starting with SR5) |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
以下我们都将使用spring boot 2.3.9 和springcloud Hoxton
1.3.2 创建微服务项目
由于微服务项目都是有多个服务,所以需要用到Maven的聚合,继承和属性等知识(详情见Maven高级一章)
1.4 相关概念
1.4.1 集群
集群是指由多个计算机或服务器组成的网络系统,它们通过网络协议和软件技术相互连接和协同工作,以实现高性能、高可用性、高可扩展性的计算和存储能力。
1.4.2 服务消费者
服务消费者(Service Consumer)是指在分布式系统中,使用服务(Service)的应用程序或组件。服务消费者通过中间件或框架向服务提供者发出请求,并接收服务提供者返回的响应结果。
1.4.3 服务提供者
服务提供者(Service Provider)是指在分布式系统中,提供服务(Service)的应用程序或组件。服务提供者通常将其服务注册到中间件或框架中,并等待客户端的请求。
服务提供者与消费者是一个相对的概念。
1.5 RPC框架
RPC框架(Remote Procedure Call)是一种分布式系统中常用的通信协议,它允许应用程序之间通过网络进行远程调用,就像本地调用一样,从而实现不同进程或不同计算机之间的数据交换和共享。RPC框架通常包括客户端、服务端和通信协议三个部分。
在RPC框架中,客户端通过调用远程服务的API,向远程服务发起请求,请求中包含了需要执行的方法名、参数和返回值类型等信息。服务端接收到请求后,解析请求信息,执行相应的方法,并将执行结果返回给客户端。客户端在接收到响应后,就可以继续执行自己的业务逻辑。
RPC框架通常具有以下特点:
-
透明性:RPC框架可以将远程调用的过程封装起来,使得客户端和服务端之间的通信对于调用方来说是透明的。
-
低耦合性:RPC框架可以将客户端和服务端之间的通信解耦,使得它们可以独立演化和扩展。
-
多语言支持:RPC框架通常支持多种编程语言,使得不同语言编写的应用程序也能够相互通信和交互。
-
高性能和低延迟:RPC框架通常采用二进制协议和高效的序列化方式,能够提高系统的性能和响应速度。
常见的RPC框架包括Dubbo、gRPC、Thrift、Apache Axis等。这些框架都具有不同的特点和优缺点,开发者需要根据自己的需求来选择合适的RPC框架。