文章目录
- 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官网
在使用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 netfilx | Spring cloud alibaba | |
---|---|---|---|
服务注册/发现 | Eureka | Eureka | Nacos |
服务调用 | OpenFeign | Feign | Dubbo |
配置中心 | SpringCloudConfig | Archaius | Nacos |
服务网关 | SpringCloudGateway | Zuul | SpringCloudGateway |
负载均衡 | SpringCloud LoadBalance | Ribbon | Dubbo |
3.环境搭建
在电脑上安装jdk17,并配置环境变量
- 安装jdk17
- 配置jdk17环境变量
在xshell虚拟机上安装jdk17 或 jdk1.8都可
CenterOs安装jdk17教程
在xshell虚拟机上安装mysql
下载好后链接mysql试试
4.服务拆分原则
1.单一职责
单一职责原则原本是面对对象设计中的一个基本原则,它指的是一个类应该专注于单一功能。不要存在多于一个导致类变更的原因。
2.服务自治 自己独立治理
每一个服务都可以独立开发,构建,部署,运行,测试
比如企业管理
每个部分负责每个部门的事情,并且尽可能少的受其他团队影响
研发部门只负责需求功能的开发,而不负责需求文档的书写和 UI 的设计,并且其他部门的人员变动,流程变更,也尽可能少的影响研发部门。部门和部门之间尽可能自治。
3.单向依赖
微服务之间需要做到单项依赖,不能存在循环依赖,双向依赖
如果一些业务场景,存在循环依赖或者双向依赖,采用其他方式去解决,比如分布式消息等
5.数据准备
分开建库,准备数据库表的搭建。
我们工程搭建有两种方法:
1.与Javaee一样,在idea中一个一个的搭建,并建不同的类
2.采用父子工程的方式搭建
5.1订单服务
根据订单ID,获取订单详情
写一个简单的订单服务来举例父子项目搭建以及代码实现:
在项目里右键点击Module新建子工程,以及父工程(新建两个Module即可)
在工程中选择java,jdk17,maven项目,名字按需取即可
再次返回我们主项目创建时的.xml文件可以看到,他名下有两个新的Module文件创建完成,如下图所示:
在子工程的.xml文件中引入所需依赖(springboot,springweb,mysql,mybatis…)
引入项目打包依赖
在二号子工程中也一样引入这几个依赖,到此我们前期准备工作就完毕了,可以开始写代码了。
先创建目录结构,config配置类,controller控制层,mapper数据访问层,model实体类层,service服务层
然后依次写入对应的代码
启动类:
.yml配置文件:
结果展示:
5.2商品服务
根据商品ID,获取商品信息
先创建目录结构,controller控制层,mapper数据访问层,model实体类层,service服务层
然后依次写入相应代码:
启动类:
.yml配置文件:
运行结果:
订单服务与商品服务关系:
当前项目存在问题:
1.url是写死的,如果IP地址发生变化,需要修改代码
2.如果多级部署,如何处理?
3.返回结果如何公用,url非常容易写错
4.接口对外开放,有一定风险
…
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘