微服务远程调用 在微服务架构中,不同微服务都应该有自己独立的数据库以减少服务之间的冗余。而不同的服务之间可能需要共享数据。但拆分后的服务,它们的数据库是相互独立的,一个服务不可能去调用另一个服务的数据库,所以服务之间的信息共享成为一个问题。 为了解决服务之间的信息共享,微服务通过将业务暴露为接口,以供其它微服务使用。这种服务调用方式与用户调用服务的方式是相同的,都是通过URL来远程调用接口。 在微服务远程调用中,有一下两种角色: 服务提供者(Provider):一次业务中,被其它微服务调用的服务。 即提供接口给其它微服务的服务。 服务消费者(Consumer):一次业务中,调用其它微服务的服务。 即调用其它微服务提供的接口的服务。...

微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务。 父工程 微服务是一种分布式开发,要将一个项目拆分为若干个服务,所以会有很多个服务模块。而要统一管理这些服务模块,可以创建一个父工程来管理。 在Maven中,用来统一管理的父工程是一个不包含实际代码,只含有pom.xml的模块。通过在pom.xml定义一些统一的信息(如依赖、依赖的版本等等),从而来管理整个工程。 父工程Maven依赖(pom.xml): 1<project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3...

微服务架构 从前的项目是使用单体架构,单体架构是指将业务的所有功能集中在一个项目中开发,打成一个包部署。 单体架构的优点是: 架构简单; 部署成本低。 缺点是模块之间的耦合度高,不利于大型项目开发。 随着互联网行业的发展,服务架构从单体架构逐渐演变为现在流行的微服务架构(属于分布式架构的一种)。 分布式架构是指根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。 分布式架构的优点: 降低服务之间的耦合; 有利于服务升级拓展。 微服务是一种经过良好架构设计的分布式架构方案。 微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责。 自治:团队独立、技术独立、数据独立,独立部...

导入依赖 Knife4j的依赖坐标如下: 1<dependency> 2 <groupId>com.github.xiaoymin</groupId> 3 <artifactId>knife4j-spring-boot-starter</artifactId> 4 <version>3.0.2</version> 5</dependency> 配置类 编写(或修改)配置类: 1@Configuration 2@EnableSwagger2 // 开启Swagger2 3@EnableKnife4j // 开启Knife4j 4public class WebMvcConfig extends...

介绍 Sharding Jdbc是一个用于实现数据库读写分离的框架。 依赖 Sharding Jdbc依赖坐标: 1<dependency> 2 <groupId>org.apache.shardingsphere</groupId> 3 <artifactId>sharding-jdbc-spring-boot-starter</artifactId> 4 <version>4.0.0-RC1</version> 5</dependency> 配置 配置application.yaml: 1spring: 2 sharding-sphere: # 旧版为 shardingsphere 3 datasource: # 数据源有多个...

数据类型 Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型: 字符串 —— string 哈希 —— hash 适合存储对象。 列表 —— list 按照插入顺序排序,可以有重复元素。可以用来做任务队列。 集合 —— set 无序集合,没有重复元素(后插入的元素会覆盖已有的相同元素)。 有序集合 —— sorted set 有序集合(使用分值进行排序),没有重复元素。 常用命令 Redis命令符不区分大小写,但是key是区分大小写的。 更多命令请参考Redis中文网。 字符串操作命令 1SET key value 设置指定key的值。 key相同的情况下,后设的值会覆盖前面的值...

简介 MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具(依然可以使用MyBatis里的工具),旨在简化开发、提供效率。更多详情请访问MyBatisPlus官网(官网有两个地址,https://mp.baomidou.com/或https://mybatis.plus)。 基于Spring使用MybatisPlus,在构建Spring工程时需要勾选MySQL和MyBatis相关技术。由于Spring并未收录MP,所以需要手动导入坐标: 1<dependency> 2 <groupId>com.baomidou</groupId> 3...

多模块开发 多模块开发有以下两种: 按照功能拆分。 按照模块拆分。 例如,将项目中的DAO类拆分出来作为一个独立的模块。然后使用Maven将该模块作为依赖导入项目中。 假设现在已经将项目中的实体类拆分出来作为maven-dao模块。该模块也使用Maven构建,然后导入该项目所需依赖。经过测试后,将该项目的<groupId>、<artifactId>和<version>导入原本项目。 maven-dao模块的pom.xml中: 1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0"...

简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。 SpringBoot开发分为如下几步: 创建新模块,选择Spring初始化,并配置模块相关基础信息。 选择当前模块需要使用的技术集。 开发控制器类。 运行自动生成的Application类。 SpringBoot有两个机制: 依赖管理机制。 自动配置机制。 项目创建及配置 创建项目 注意: 在创建好的工程中不需要创建配置类。 创建好的项目会自动生成其他的一些文件(这些文件目前来说没有任何作用),可以将这些文件删除。 可以删除的目录和文件如下: .mvn .gitignore HELP.md...

简介 SpringMVC是Spring下的一个用于Web表现层开发的技术。相比Servlet,SpringMVC更加高效快捷。 SpringMVC流程如下: 浏览器发送请求到Tomcat服务器; Tomcat接收请求后,将请求交给SpringMVC中的DispatcherServlet(前端控制器)来处理。 DispatcherServlet按照对应规则将请求分发到对应的Bean。 Bean由我们自己编写来处理不同的请求。 每个Bean中可以处理一个或多个不同的请求 URL。 DispatcherServlet和Bean对象都需要交给Spring容器来进行管理。 综上,我们需要编写的内容为: Bean对象; 请求URL和Bean对...