SPRINGCLOUD讲义
王瑞
2019-12-1
[公司名称]
[公司地址]
目录
1 请求与服务的模拟 (3)
1.1 微服务 (3)
1.2 示例 (3)
1.2.1 数据库 (4)
1.2.2 Products服务 (5)
1.2.3 数据库访问与JPA (8)
1.2.4 服务层接口与实现 (10)
1.2.5 控制器 (12)
1.2.6 测试添加商品/查询商品 (13)
1.2.7 Order服务 (17)
2 注册中心与Eureka (21)
2.1 注册中心 (21)
2.2 Eureka (22)
2.2.1 设置Eureka服务 (23)
2.3 向注册中心注册服务 (25)
2.3.1 配置Eureka Client (25)
2.3.2 从注册中心获取注册的服务 (27)
3 Eureka Server的高可用 (30)
3.1 设置多个注册中心 (30)
3.1.1 注册中心1 (30)
3.1.2 注册中心2 (31)
3.2 向多个注册中心注册服务 (34)
3.3 消费者可以从多个服务中心获取数据 (34)
3.3.1 测试 (35)
4 负载均衡与Ribbon (36)
5 熔断机制与断路器 (42)
5.1 Hystrix (43)
5.1.1 隔离 (44)
5.1.2 降级 (44)
5.2 Hystrix使用 (44)
5.2.1 熔断并降级 (47)
1请求与服务的模拟
1.1微服务
简单来说,微服务就是将一个单体项目中的各个功能部分,分解成一个个的独立的项目。各部分之间通过提供各自的服务来实现项目的整体交互。
SpringBoot为微服务提供了一个基本的基础框架。本章节以SpringBoot为基础,实现一个服务的交互。为后面详细的介绍SpringCloud提供实例基础。
1.2示例
本示例中有两个服务,其中Order服务是为最终用户服务的,Order服务要用到Products服务。在系统的内部在Order与Products之间就形成了Products为服务的提供者,而Order是服务的消费者。
示例技术实现:
?数据库采用MariaDB(一个MySQL兼容数据库)
?Products服务使用JPA访问MariaDB数据库。接受RESTFul请求样式。返回JSON数据。
?Order服务,使用Spring提供的RestTemplate(一个基于http请求,并能处理返回结果的框架)访问Products服务。
1.2.1 数据库
数据库名:
products 。
用户名:products 、密码:products 。
1.2.2Products服务
项目名:demo-ProductsService
创建Spring Boot Starters项目,选择“Spring Data JPA”、“Spring Web”。添加MariaDB数据库客户端依赖。
1.2.3数据库访问与JPA
JPA是Java标准的数据持久化框架。底层使用Hibernate实现。
Spring实现了对JPA的支持。并提供了JpaRepository和JpaSpecificationExecutor接口及实现。
?DAO的定义
1.2.4服务层接口与实现
1.2.5控制器
1.2.6测试添加商品/查询商品
添加一个商品:新建一个add_product.html页面,放在静态目录下。
url:http://localhost:8888/static/add_product.html
返回:
?查询商品
url:http://localhost:8888/product/2
1.2.7Order服务
Order服务,也是一个Spring Boot Starters项目,该项目要调用Products服务提供的商品信息。
创建项目:选择“Spring Boot Web”即可。
?调用Products服务
访问Products服务的相应URL,可以返回JSON形式的商品数据。我们可以用Java代码发起这样的请求,可以通过HttpURLConnection、URL等相关类来访问,并处理返回的结果。Spring为我们提供了RestTemplate类型,我们可以将该对象由Spring来进行管理并在合适的时机使用。
RestTemplate为我们提供了便捷的使用,并可以返回处理好的结果。
?使用RestTemplate访问服务