当前位置: 首页 > news >正文

2.初识springcloud

文章目录

  • 1.什么是SpringCloud
    • 1.1版本的介绍
  • 2.Spring Cloud实现方案
  • 3.环境搭建
  • 4.服务拆分原则
  • 5.数据准备
    • 5.1订单服务
    • 5.2商品服务

大家好,我是晓星航。今天为大家带来的是 初识springcloud 相关的讲解!😀

1.什么是SpringCloud

简单来说,SpringCloud就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合:

  • Distributed/versioned configuration 分布式版本配置
  • Service registrationand discovery 服务注册和发现
  • Routing路由
  • Service-to-service calls 服务调用
  • Load balancing 负载均衡
  • Circuit Breakers 断路器
  • Distributed messaging 分布式消息

Spring Cloud 并不是Spring团队研发的框架,它只是把一些比较优秀的解决微服务架构中常见问题的开源框架基于SpringCloud规范进行了整合,并基于SpringBoot的风格,对这些组件进行封装,屏蔽掉了复杂的配置和实现原理,为开发者提供了开箱即用的微服务开发体验.这些开源技术的框架是由各个公司来维护的.Spring Cloud 就是这些微服务的大管家.

1.1版本的介绍

springcloud官网

image-20240528172910249

在使用springcloud时,我们还需要注意版本的区别,在不同的版本中spirngcloud是不一样的,因此我们在使用springcloud来做项目时一定要确定版本,要保证版本的一致性。

2.Spring Cloud实现方案

在SpringCloud的规范下,有很多实现,其中最为出名的是

  • Spring Cloud Netflix
  • Spring Cloud Alibaba

Spring Cloud Netflix

Spring Cloud Netflix是 Netflix OSS(Netflix Open Source Software)在Spring Cloud规范下的实现,包含的组件及其主要功能大致如下:

  • Eureka:服务注册和发现
  • Zuul:服务网关
  • Ribbon: 负载均衡
  • Feign:服务调用组件
  • Hystrix:断路器,提供服务熔断和限流
  • Hystrix Dashboard:监控面板

主键学习:

Springcloud官方Spring cloud netfilxSpring cloud alibaba
服务注册/发现EurekaEurekaNacos
服务调用OpenFeignFeignDubbo
配置中心SpringCloudConfigArchaiusNacos
服务网关SpringCloudGatewayZuulSpringCloudGateway
负载均衡SpringCloud LoadBalanceRibbonDubbo

3.环境搭建

在电脑上安装jdk17,并配置环境变量

  1. 安装jdk17

image-20240528182329346

  1. 配置jdk17环境变量
image-20240528182411927

在xshell虚拟机上安装jdk17 或 jdk1.8都可

image-20240528184139070

CenterOs安装jdk17教程

在xshell虚拟机上安装mysql

image-20240528184107230

下载好后链接mysql试试

image-20240528185327299

4.服务拆分原则

1.单一职责

单一职责原则原本是面对对象设计中的一个基本原则,它指的是一个类应该专注于单一功能。不要存在多于一个导致类变更的原因。

2.服务自治 自己独立治理

每一个服务都可以独立开发,构建,部署,运行,测试

比如企业管理

每个部分负责每个部门的事情,并且尽可能少的受其他团队影响

研发部门只负责需求功能的开发,而不负责需求文档的书写和 UI 的设计,并且其他部门的人员变动,流程变更,也尽可能少的影响研发部门。部门和部门之间尽可能自治。

3.单向依赖

微服务之间需要做到单项依赖,不能存在循环依赖,双向依赖

image-20240528185752641

image-20240528185801935

如果一些业务场景,存在循环依赖或者双向依赖,采用其他方式去解决,比如分布式消息等

image-20240528185822029

5.数据准备

分开建库,准备数据库表的搭建。

我们工程搭建有两种方法:

1.与Javaee一样,在idea中一个一个的搭建,并建不同的类

image-20240530130813272 image-20240530130747802

2.采用父子工程的方式搭建

5.1订单服务

根据订单ID,获取订单详情

写一个简单的订单服务来举例父子项目搭建以及代码实现:

在项目里右键点击Module新建子工程,以及父工程(新建两个Module即可)

image-20240529231425182

在工程中选择java,jdk17,maven项目,名字按需取即可

image-20240529231353797

再次返回我们主项目创建时的.xml文件可以看到,他名下有两个新的Module文件创建完成,如下图所示:

image-20240529231725655

在子工程的.xml文件中引入所需依赖(springboot,springweb,mysql,mybatis…)

image-20240529232002736

引入项目打包依赖

image-20240529232103431

在二号子工程中也一样引入这几个依赖,到此我们前期准备工作就完毕了,可以开始写代码了。

image-20240530130021041

先创建目录结构,config配置类,controller控制层,mapper数据访问层,model实体类层,service服务层

image-20240404202219072

image-20240324112329505

然后依次写入对应的代码

image-20240530130924627 image-20240530130938133 image-20240530130951767 image-20240530131002341 image-20240530131018236 image-20240530131043661

启动类:

image-20240530131109301

.yml配置文件:

image-20240530131140048

结果展示:

image-20240530131502120

5.2商品服务

根据商品ID,获取商品信息

image-20240530131755274

先创建目录结构,controller控制层,mapper数据访问层,model实体类层,service服务层

image-20240404202219072

image-20240324112329505

然后依次写入相应代码:

image-20240530131900458 image-20240530131910732 image-20240530131919459

image-20240530131930664

启动类:

image-20240530131941598

.yml配置文件:

image-20240530132014273

运行结果:

image-20240530132753655

订单服务与商品服务关系:

image-20240530132853653

当前项目存在问题:

1.url是写死的,如果IP地址发生变化,需要修改代码

2.如果多级部署,如何处理?

3.返回结果如何公用,url非常容易写错

4.接口对外开放,有一定风险

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘


http://www.mrgr.cn/news/11506.html

相关文章:

  • 一个干净的python项目(没连数据库啥的)
  • ptrade排坑日记——交易策略报错: ‘NoneType‘ object is not subscriptable 。
  • 百日筑基第六十天-学习一下Tomcat
  • unity的 Assembly definitions- asmdef文件
  • Python网络编程:Web框架基础(Flask/Django)
  • LabVIEW软件反编译
  • Postman接口自动化测试:从入门到实践!
  • Java-BatchProcessingUtil工具类
  • AirSLAM论文翻译
  • 什么是损失函数?
  • 博弈论(Nim游戏的扩展)
  • JAVA毕业设计165—基于Java+Springboot+vue3的二手房交易管理系统(源代码+数据库+11000字论文)
  • CentOS 7下Jumpserver堡垒机离线操作使用概述
  • GPIO(通用输入/输出)、中断(hal库)
  • Ubuntu 24.04 中安装网易邮箱大师
  • 【排序算法】八大排序(下)(c语言实现)(附源码)
  • 新安装的mariadb 对应的my.cnf 对应的配置
  • vue前端更新后需要清空缓存
  • 50000+用户 医疗器械管理软件 网络版
  • Linux-arm64中断现场保护详解