尽管使用了注册中心来解决URL的硬编码等问题,但是如今使用RestTemplate还是存在以下问题: 代码可读性差,编程体验不统一; 参数复杂URL难以维护。 Feign是一个声明式的HTTP客户端,作用于服务消费者,在服务消费者中为服务提供者创建一个HTTP远程调用。官方地址:https://github.com/OpenFeign/feign。其作用就是帮助我们优雅的实现HTTP请求的发送,解决上面提到的问题。 使用 Feign 使用Feign非常简单,大致分为以下步骤: 在pom.xml中引入Feign客户端依赖: 1<dependency> 2...
网关 网关是所有微服务的统一入口。网关的核心功能特性: 请求路由:一切请求都必须先经过网关,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当路由的目标服务有多个时,还需要做负载均衡。 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。 限流:当请求流量过高时,在网关中按照下流的微服务能够接受的速度来放行请求,避免服务压力过大。 在SpringCloud中网关的实现包括两种: Gateway:基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。 Zuul:基于Servlet的实现,属于阻塞式编程。 Spring Cloud Gateway旨在为...
部署 Nacos Server 安装和配置好Nacos后,在nacos的bin目录中使用脚本启动: Windows: 单机启动: 1startup.cmd -m standalone Linux: 单机启动: 1sh startup.sh -m standalone 在浏览器中使用对应的IP和端口访问,如http://localhost:8848/nacos。 默认账号和密码均为nacos。 更多Nacos的部署方式:Nacos 部署 服务注册中心 Nacos 客户端依赖 父工程: 1<!-- 2 Spring Cloud Alibaba 3 包含了Nacos的版本管理 4 --> 5<dependency> 6...
微服务远程调用 在微服务架构中,不同微服务都应该有自己独立的数据库以减少服务之间的冗余。而不同的服务之间可能需要共享数据。但拆分后的服务,它们的数据库是相互独立的,一个服务不可能去调用另一个服务的数据库,所以服务之间的信息共享成为一个问题。 为了解决服务之间的信息共享,微服务通过将业务暴露为接口,以供其它微服务使用。这种服务调用方式与用户调用服务的方式是相同的,都是通过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...
微服务架构 从前的项目是使用单体架构,单体架构是指将业务的所有功能集中在一个项目中开发,打成一个包部署。 单体架构的优点是: 架构简单; 部署成本低。 缺点是模块之间的耦合度高,不利于大型项目开发。 随着互联网行业的发展,服务架构从单体架构逐渐演变为现在流行的微服务架构(属于分布式架构的一种)。 分布式架构是指根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。 分布式架构的优点: 降低服务之间的耦合; 有利于服务升级拓展。 微服务是一种经过良好架构设计的分布式架构方案。 微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责。 自治:团队独立、技术独立、数据独立,独立部...
项目笔记 项目笔记仓库:https://gitee.com/linner_cheng/reggie_note B站视频:黑马程序员Java项目实战《瑞吉外卖》 项目基础功能开发 项目基础功能开发。包含项目前台和后台功能开发还有项目部署。 Redis Redis。包含Jedis和Spirng data redis。 项目优化 Redis缓存。 Sharding-JDBC读写分离。 Swagger API文档。
简介 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...