首页 > 其他分享 >Spring Cloud环境搭建

Spring Cloud环境搭建

时间:2025-01-13 22:01:07浏览次数:3  
标签:COMMENT product 服务 DEFAULT Spring NULL id Cloud 搭建

目录

开发环境安装

JDK

介绍

安装

MySQL安装

服务介绍

服务拆分

服务拆分原则

1. 单⼀职责原则

2.服务自治

3.单向依赖

案例拆分

数据准备

订单服务

商品服务


开发环境安装

JDK
介绍

Oracle从JDK9开始每半年发布⼀个新版本, 新版本发布后, ⽼版本就不再进⾏维护. 但是会有⼏个⻓期维护的版本.
⽬前⻓期维护的版本有: JDK8, JDK11, JDK17, JDK21
在 JDK版本的选择上,尽量选择⻓期维护的版本.
为什么选择JDK17?
Spring Cloud 是基于 SpringBoot 进⾏开发的, SpringBoot 3.X以下的版本, Spring官⽅已不再进⾏维护(还可以继续使⽤), SpringBoot 3.X的版本, 使⽤的JDK版本基线为JDK17. 鉴于JDK21 是2023.09⽉发布的, 很多功能还没有在⽣产环境验证, 所以我们选择使⽤JDK17来学习。

安装

参考---》博客链接

MySQL安装

参考---》博客链接​​​​​​​

服务介绍

⼀个电商平台包含的内容⾮常多, 以京东为例, 仅从⾸⻚上就可以看到巨多的功能

我们该如何实现呢? 如果把这些功能全部写在⼀个服务⾥, 这个服务将是巨⼤的.
巨多的会员, 巨⼤的流量, 微服务架构是最好的选择.
微服务应⽤开发的第⼀步, 就是服务拆分. 拆分后才能进⾏"各⾃开发".

服务拆分

服务拆分原则

微服务到底多⼩才算"微", 这个在业界并没有明确的标准. 微服务并不是越⼩越好, 服务越⼩, 微服务架构的优点和缺点都会越来越明显.
服务越⼩, 微服务的独⽴性就会越来越⾼, 但同时, 微服务的数量也会越多, 管理这些微服务的难度也会提⾼. 所以服务拆分也要考虑场景.

拆分微服务—般遵循如下原则:

1. 单⼀职责原则

单⼀职责原则原本是⾯向对象设计中的⼀个基本原则, 它指的是⼀个类应该专注于单⼀功能. 不要存在多于⼀个导致类变更的原因在微服务架构中, ⼀个微服务也应该只负责⼀个功能或业务领域, 每个服务应该有清晰的定义和边界, 只关注⾃⼰的特定业务领域. 

比如电商系统:

2.服务自治

服务⾃治是指每个微服务都应该具备⾼度⾃治的能⼒, 即每个服务要能做到独⽴开发, 独⽴测试, 独⽴构建, 独⽴部署, 独⽴运⾏.
以上⾯的电商系统为例,每⼀个微服务应该有⾃⼰的存储, 配置,在进⾏开发, 构建, 部署, 运⾏和测试时,并不需要过多关注其他微服务的状态和数据 

比如电商系统: 

3.单向依赖

微服务之间需要做到单向依赖, 严禁循环依赖, 双向依赖
循环依赖: A -> B -> C ->A
双向依赖: A -> B, B -> A

比如电商系统: 

如果⼀些场景确实⽆法避免循环依赖或者双向依赖, 可以考虑使⽤消息队列等其他⽅式来实现。

微服务架构并⽆标准架构, 合适的就是最好的, 不然架构师⼤会也不会各个系统架构百花⻬放
了.
在架构设计的过程中, 坚持 "合适优于业界领先", 避免"过度设计"(为了设计⽽设计).
罗⻢不是⼀天建成的, 很多业界领先⽅案并不是⼀群天才在某个时期⼀下⼦做出来的, ⽽是经
过数年的发展逐步完善. 业界领先的⽅案⼤多是"逼"出来的, 随着业务的发展, 量变导致质变,
新的问题出现了, 当前的⽅案⽆法满⾜需求, 需要⽤新的⽅案来解决. 通过不断的创新和尝试,
业界领先的⽅案才得以形成。

案例拆分

下面我们重点关注如何使⽤Spring Cloud解决微服务架构中遇到的问题。

以订单为例:我们主要关注两个信息,一个是订单信息,另一个就是商品信息。

根据服务的单⼀职责原则, 我们把服务进⾏拆分为: 订单服务, 商品服务 订单服务: 提供订单ID, 获取订单详细信息 商品服务: 根据商品ID, 返回商品详细信息.

数据准备

根据服务⾃治原则, 每个服务都应有⾃⼰独⽴的数据库。
订单服务
-- 建库
create database if not exists cloud_order charset utf8mb4;

use cloud_order;
-- 订单表
DROP TABLE IF EXISTS order_detail;
CREATE TABLE order_detail (
        `id` INT NOT NULL AUTO_INCREMENT COMMENT '订单id',
        `user_id` BIGINT ( 20 ) NOT NULL COMMENT '用户ID',
        `product_id` BIGINT ( 20 ) NULL COMMENT '产品id',
        `num` INT ( 10 ) NULL DEFAULT 0 COMMENT '下单数量',
        `price` BIGINT ( 20 ) NOT NULL COMMENT '实付款',
        `delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,
        `create_time` DATETIME DEFAULT now(),
        `update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( id )) ENGINE = INNODB DEFAULT CHARACTER 
SET = utf8mb4 COMMENT = '订单表';

-- 数据初始化
insert into order_detail (user_id,product_id,num,price)
values
(2001, 1001,1,99), (2002, 1002,1,30), (2001, 1003,1,40),
(2003, 1004,3,58), (2004, 1005,7,85), (2005, 1006,7,94);
商品服务
create database if not exists cloud_product charset utf8mb4;

-- 产品表
use cloud_product;
DROP TABLE IF EXISTS product_detail;
CREATE TABLE product_detail (
        `id` INT NOT NULL AUTO_INCREMENT COMMENT '产品id',
        `product_name` varchar ( 128 ) NULL COMMENT '产品名称',
        `product_price` BIGINT ( 20 ) NOT NULL COMMENT '产品价格',
        `state` TINYINT ( 4 ) NULL DEFAULT 0 COMMENT '产品状态 0-有效 1-下架',
        `create_time` DATETIME DEFAULT now(),
        `update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( id )) ENGINE = INNODB DEFAULT CHARACTER 
SET = utf8mb4 COMMENT = '产品表';

-- 数据初始化
insert into product_detail (id, product_name,product_price,state)
values
(1001,"T恤", 101, 0), (1002, "短袖",30, 0), (1003, "短裤",44, 0), 
(1004, "卫衣",58, 0), (1005, "马甲",98, 0),(1006,"羽绒服", 101, 0), 
(1007, "冲锋衣",30, 0), (1008, "袜子",44, 0), (1009, "鞋子",58, 0),
(10010, "毛衣",98, 0);

标签:COMMENT,product,服务,DEFAULT,Spring,NULL,id,Cloud,搭建
From: https://blog.csdn.net/wmh_1234567/article/details/142307776

相关文章

  • 2025毕设springboot 高校笔记分享系统论文+源码
    系统程序文件列表开题报告内容研究背景在当今信息化高速发展的时代,高校学生的学习方式正经历着深刻的变革。随着互联网的普及和移动智能终端的广泛应用,学生们对于学习资源的获取和分享需求日益增强。然而,传统的笔记记录方式存在诸多不便,如笔记整理繁琐、查找效率低下、缺乏......
  • 2025毕设springboot 高校班级事务管理系统论文+源码
    系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和教育信息化的不断推进,高校班级事务管理正逐步从传统的人工模式向数字化、智能化方向转型。在传统管理模式下,班级信息的传递、文件的存储与分享、任务的分配与跟踪等往往依赖于纸质文档和口头通知,这不仅效率低......
  • 基于SpringBoot的大学生日常消费管理系统
    收藏关注不迷路!!......
  • VScode搭建opencv环境c++,这个是我发的压缩包里面的
    通过网盘分享的文件:D.zip等2个文件链接:https://pan.baidu.com/s/1qiU3rgd4did84F83d3yKnQ提取码:npkg这里面的新建文件夹是软件,不用管D代表配置文件,里面的代码要改路径D里面有两个文件夹,一个是.vscode,里面的文件代码要改,后文会讲到一个是Debugger,这个不要管还有......
  • 高级java每日一道面试题-2025年01月13日-框架篇[Spring篇]-Spring 是怎么解决循环依赖
    如果有遗漏,评论区告诉我进行补充面试官:Spring是怎么解决循环依赖的?我回答:在Java高级面试中,Spring框架如何解决循环依赖是一个重要且常见的问题。以下是对Spring解决循环依赖的详细解释:循环依赖的定义与类型循环依赖是指两个或多个Bean之间互相依赖,形成一个闭环。......
  • 2025毕设springboot 服装搭配推荐系统论文+源码
    系统程序文件列表开题报告内容研究背景随着时尚产业的蓬勃发展,个性化与多样化的服装需求日益增长,消费者在面对琳琅满目的商品时,往往难以快速找到符合自身风格与需求的搭配方案。传统的购物模式受限于时间、空间以及个人审美经验的局限,难以满足现代消费者对于高效、精准搭配......
  • 2025毕设springboot 扶贫助农与产品合作系统论文+源码
    系统程序文件列表开题报告内容研究背景在当今社会,扶贫助农已成为国家发展的重要战略之一。随着信息技术的飞速发展和互联网的普及,如何利用现代科技手段促进农村地区经济发展,提高农民收入,成为亟待解决的问题。传统的扶贫方式往往局限于物质援助,缺乏持续性和内生动力。因此,构......
  • 2025毕设springboot 峰数公司医疗设备管理系统论文+源码
    系统程序文件列表开题报告内容研究背景随着医疗技术的不断进步和医疗需求的日益增长,医疗设备在现代医疗体系中扮演着至关重要的角色。峰数公司作为一家专注于医疗设备供应与服务的公司,面临着设备种类繁多、管理复杂、信息碎片化等挑战。传统的设备管理手段已难以满足当前高......
  • 2025毕设springboot 飞扬城市交通系管理系统设计与实现论文+源码
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速,飞扬城市交通拥堵、交通事故频发等问题日益凸显,给市民的日常出行和城市的经济发展带来了严峻挑战。传统的交通管理方式已难以满足当前复杂多变的交通需求,因此,构建一个高效、智能的城市交通管理系统显得尤为重要。......
  • 2025毕设springboot 飞机票管理系统论文+源码
    系统程序文件列表开题报告内容研究背景随着全球航空业的迅猛发展,飞机已经成为现代社会中不可或缺的交通工具之一。伴随着航班数量的激增,机票管理成为航空公司运营中的关键环节。传统的机票管理方式往往依赖于人工操作,不仅效率低下,还容易出现信息错漏等问题。特别是在高峰期......