山东聊城网站设计,wordpress 分页显示,网站ui标准,手表网站建设策划目录
一、服务拆分原则
二、服务拆分示例
1. 案例需求
2. 案例要求
3. 导入SQL语句
4. 实现思路
4.1. 创建父工程 cloud-demo 管理依赖
依赖导入思路
4.2. 创建子工程 order-servic
4.3. 创建子工程 user-servic
4.4. 创建 cloud_order 数据库和表并插入数据
4.5. …目录
一、服务拆分原则
二、服务拆分示例
1. 案例需求
2. 案例要求
3. 导入SQL语句
4. 实现思路
4.1. 创建父工程 cloud-demo 管理依赖
依赖导入思路
4.2. 创建子工程 order-servic
4.3. 创建子工程 user-servic
4.4. 创建 cloud_order 数据库和表并插入数据
4.5. 创建 cloud_user 数据库和表并插入数据
4.6. 子工程 order-service 的构建目录
4.7. 子工程 user-service 的构建目录
4.8. 调出并将启动类显示在Services中
4.9. 配置下项目使用的JDK
三、服务远程调用案例
1. 订单服务
2. 用户服务
3. 案例需求
4. 注册RestTemplate
5. 实现远程调用
6. 重启服务测试 任何分布式架构都离不开服务的拆分微服务也是一样
一、服务拆分原则
不同微服务不要重复开发相同业务微服务数据独立不要访问其它微服务的数据库微服务可以将自己的业务暴露为接口供其它微服务调用
二、服务拆分示例
1. 案例需求
以资料中的微服务 cloud-demo 为例其结构如下 cloud-demo父工程管理依赖
order-service订单微服务负责订单相关业务user-service用户微服务负责用户相关业务
2. 案例要求
订单微服务和用户微服务都必须有各自的数据库相互独立
订单服务和用户服务都对外暴露 Restful 的接口
订单服务如果需要查询用户信息只能调用用户服务的 Restful 接口不能查询用户数据库
3. 导入SQL语句
资料中的 cloud-order、cloud-user 4. 实现思路
4.1. 创建父工程 cloud-demo 管理依赖 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.cloud/groupIdartifactIdd1_cloud-demo/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.versionspring-cloud.versionHoxton.SR10/spring-cloud.versionmysql.version5.1.47/mysql.versionmybatis.version2.1.1/mybatis.version/propertiesparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.9.RELEASE/versionrelativePath//parentdependencyManagementdependencies!-- springCloud --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency!-- mysql驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.version}/version/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies/project
依赖导入思路
1. 创建父工程模块打包方式为 pom 的原因
用在父级工程或聚合工程中用来做 jar 包的版本控制必须指明这个聚合工程的打包方式为 pom
父类打成 pom 包的意义在于父工程不写代码代码都在子工程里写只在父类工程里写 pom.xml 里写 jar 的
版本控制子工程所需依赖的版本
2. 自定义属性在 properties 节点下进行声明依赖版本号管理版本号。
3. SpringCloud 底层是依赖于 SpringBoot 的并且有版本的兼容关系由于本人使用的是 Hoxton.SR10
从而本人选择的是稳定 SpringBoot 发布版本 2.3.9.RELEASE
4.2. 创建子工程 order-servic
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdd1_cloud-demo/artifactIdgroupIdcom.cloud/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdorder-service/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
4.3. 创建子工程 user-servic
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdd1_cloud-demo/artifactIdgroupIdcom.cloud/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIduser-service/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
4.4. 创建 cloud_order 数据库和表并插入数据 4.5. 创建 cloud_user 数据库和表并插入数据 4.6. 子工程 order-service 的构建目录 4.7. 子工程 user-service 的构建目录 4.8. 调出并将启动类显示在Services中 4.9. 配置下项目使用的JDK 三、服务远程调用案例
1. 订单服务
在order-service服务中有一个根据 id 查询订单的接口 根据id查询订单返回值是Order对象其中的user为null
访问地址http://localhost:8080/order/101
结果 2. 用户服务
在user-service中有一个根据id查询用户的接口 访问地址http://localhost:8081/user/1
结果 3. 案例需求
修改order-service中的根据id查询订单业务要求在查询订单的同时根据订单中包含的userId查询出用户信
息一起返回 因此我们需要在order-service中 向user-service发起一个http的请求
调用http://localhost:8081/user/{userId}这个接口
步骤一注册一个RestTemplate的实例到Spring容器
步骤二修改order-service服务中的OrderService类中的queryOrderById方法根据Order对象中的userId查
询User
步骤三将查询的User填充到Order对象一起返回
4. 注册RestTemplate
首先我们在order-service服务中的OrderApplication启动类中注册RestTemplate实例
package com.cloud.order;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;MapperScan(com.cloud.order.mapper)
SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}
5. 实现远程调用
修改order-service服务中的com.cloud.order.service包下的OrderService类中的queryOrderById方法 6. 重启服务测试
重启服务测试发现user不再为null达到远程调用效果