SpringCloud——SpringCloud简介、Eureka注册中⼼的使⽤
⽬录
⼀、系统架构演变之路
1.1 单⼀应⽤架构
当⽹站流量很⼩时,只需要⼀个应⽤,所有功能部署在⼀起,减少部署节点成本的框架称之为集中式框架。此时,⽤于简化增删改查⼯作量的数据访问框架(ORM)是影响项⽬开发的关键。
1.2 垂直应⽤架构
当访问量逐渐增⼤,单⼀应⽤增加机器带来的加速度越来越⼩,将应⽤拆成互不相⼲的⼏个应⽤,以提升效率。此时,⽤于加速前端页⾯开发的Web框架(MVC)是关键。
1.3 分布式服务架构
当垂直应⽤越来越多,应⽤之间交互不可避免,将核⼼业务抽取出来,作为独⽴的服务,逐渐形成稳定的服务中⼼,使前端应⽤能更快速的响应多变的市场需求。此时,⽤于提⾼业务复⽤及整合的分布式服务框架(RPC)是关键。
1.4 ⾯向服务(SOA)架构
典型代表有两个:流动计算架构和微服务架构;
流动计算架构:
当服务越来越多,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需增加⼀个调度中⼼基于访问压⼒实时管理集容量,提⾼集利⽤率。此时,⽤于提⾼机器利⽤率的资源调度和治理中⼼(SOA)是关键。流动计算架构的最佳实践阿⾥的Dubbo。
微服务架构
与流动计算架构很相似,除了具备流动计算架构优势外,微服务架构中的微服务可以独⽴部署,独⽴发展。且微服务的开发不会限制于任何技术栈。微服务架构的最佳实践是SpringCloud。
⼆、初识Spring Cloud
⼤家谈起的微服务,⼤多来讲说的只不过是种架构⽅式。其实现⽅式很多种:Spring Cloud,Dubbo,华为的Service Combo,Istio…。那么这么多的微服务架构产品中,我们为什么要⽤Spring Cloud?因为它后台硬、技术强、众基础好,使⽤⽅便;
2.1 Spring Cloud简介
Spring Cloud从技术架构上降低了对⼤型系统构建的要求和难度,使我们以⾮常低的成本(技术或者硬件)搭建⼀套⾼效、分布式、容错的平台,但Spring Cloud也不是没有缺点,⼩型独⽴的项⽬不适合使⽤。
Spring Cloud是⼀系列分布式微服务技术的有序整合,把⾮常流⾏的微服务的技术整合到⼀起。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。
2.2 Spring Cloud的版本
SpringCloud是⼀系列框架组合,为了避免与框架版本产⽣混淆,采⽤新的版本命名⽅式,形式为⼤版本名+⼦版本名称
⼤版本名⽤伦敦地铁站名:
⼦版本名称三种
SNAPSHOT:快照版本,尝鲜版,随时可能修改
M版本,MileStone,M1表⽰第⼀个⾥程碑版本,⼀般同时标注PRE,表⽰预览版
SR,Service Release,SR1表⽰第⼀个正式版本,同时标注GA(Generally Available),稳定版
2.3 SpringCloud与SpringBoot版本匹配关系
SpringBoot SpringCloud
1.2.x Angel版本
1.3.x Brixton版本
1.4.x Camden版本
1.5.x Dalston版本、Edgware
2.0.x Finchley版本
2.1.x Greenwich GA版本 (2019年2⽉发布)
鉴于SpringBoot与SpringCloud关系,SpringBoot建议采⽤2.1.x版本
三、模拟微服务业务场景
模拟开发过程中的服务间关系。抽象出来,开发中的微服务之间的关系是⽣产者和消费者关系。
⽬标:模拟⼀个最简单的服务调⽤场景,场景中保护微服务提供者(Producer)和微服务调⽤者(Consumer),⽅便后⾯学习微服务架构注意:实际开发中,每个微服务为⼀个独⽴的SpringBoot⼯程。
3.1 创建服务的⽗⼯程
⽬标: 新建⼀个⽗项⽬itheima_parent
实现步骤:
1. 创建springboot的⼯程
2. 配置依赖坐标,SpringBoot的parent、以及SpringCloud的依赖管理坐标
实现过程:
1. 创建maven⼯程,itheima_parent
2. 配置依赖坐标
3. 添加起步依赖坐标:SpringBoot、SpringCloud
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
springcloud难学吗</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.2 创建服务提供者(provider)⼯程
⽬标: 新建⼀个项⽬provider_service,对外提供查询⽤户的服务
实现步骤:
1. 创建SpringBoot⼯程
2. 勾选依赖坐标
3. 数据库连接信息
4. 创建User表、创建实体UserBean
5. 编写三层架构:Mapper、Service、controller,编写查询所有的⽅法
6. 配置Mapper映射⽂件
7. 在application.properties中添加MyBatis配置,扫描l和mapper
8. 访问测试地址
实现过程:
1. 创建SpringBoot⼯程
2. 勾选依赖坐标
3. 数据库连接信息
4. 创建User表、创建实体User
-- 创建数据库
CREATE database springcloud CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 使⽤springcloud数据库
USE springcloud;
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
CREATE TABLE`tb_user`(
`id`int(11)NOT NULL AUTO_INCREMENT,
`username`varchar(100)DEFAULT NULL COMMENT'⽤户名',
`password`varchar(100)DEFAULT NULL COMMENT'密码',
`name`varchar(100)DEFAULT NULL COMMENT'姓名',
`age`int(11)DEFAULT NULL COMMENT'年龄',
`sex`int(11)DEFAULT NULL COMMENT'性别,1男,2⼥',
`birthday`date DEFAULT NULL COMMENT'出⽣⽇期',
`created`date DEFAULT NULL COMMENT'创建时间',
`updated`date DEFAULT NULL COMMENT'更新时间',
`note`varchar(1000)DEFAULT NULL COMMENT'备注',
PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=2DEFAULT CHARSET=utf8 COMMENT='⽤户信息表';
-
- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO`tb_user`VALUES('1','zhangsan','123456','张三','13','1','2006-08-01','2019-05-16','2019-05-16','张三');
INSERT INTO`tb_user`VALUES('2','lisi','123456','李四','13','1','2006-08-01','2019-05-16','2019-05-16','李四');
实体bean:
public class User {
private Integer id;//主键id

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。