欢迎访问千羽的编程时光 https://nateshao.gitee.io或者原文获取更多精彩文章!
本次源码已经收藏到我的GitHub:
https://github.com/nateshao/SpringCloud
Spring cloud是基于SpringBoot基础之上的,如果Spring boot还不会的,可以先看看之前写的文章
S pringBoot入门 小白Java之路,公众号:小白Java之路初次见面,请多多指教。。
1. 系统架构演变
2. 微服务架构说明
SOA使用了ESB组件的面向服务架构:ESB自身实现复杂;应用服务粒度较大,所有服务之间的通信都经过ESB会降低通信速度;部署、测试ESB比较麻烦。
小结:
微服务架构:是一套使用小服务或者单一业务来开发单个应用的方式或途径。
微服务架构特点:
- 单一职责
- 服务粒度小
- 面向服务(对外暴露REST api)
- 服务之间相互独立
与使用ESB的SOA架构的区别:微服务架构没有使用ESB,有服务治理注册中心;业务粒度小。
3. 服务调用方式说明
分析:
- RPC:基于socket,速度快,效率高;webservice、dubbo
- HTTP:基于TCP,封装比较臃肿;对服务和调用方没有任何技术、语言的限定,自由灵活;RESTful,Spring Cloud
4. RestTemplate工程导入
分析:
一般情况下有如下三种http客户端工具类包都可以方便的进行http服务调用:
- httpClient
- okHttp
- JDK原生URLConnection
spring 提供了RestTemplate的工具类对上述的3种http客户端工具类进行了封装,可在spring项目中使用RestTemplate进行服务调用。
@RunWith(SpringRunner.class)
@SpringBootTest
public class RestTemplateTest {
@Autowired
private RestTemplate restTemplate;
@Test
public void test(){
String url = "http://localhost/user/8";
//restTemplate可以对json格式字符串进行反序列化
User user = restTemplate.getForObject(url, User.class);
System.out.println(user);
}
}
5. Spring Cloud概述
- Spring Cloud的组件可以有很多组件;常见的组件有:eureka注册中心,Gateway网关,Ribbon负载均衡,Feign服务调用,Hystrix熔断器。在有需要的时候项目添加对于的启动器依赖即可。
- 版本特征:以英文单词命名(伦敦地铁站名)
6. 创建微服务工程
目标:创建微服务父工程nateshao-cloud-02-mybatis、用户服务工程user-service、服务消费工程user-consumer
分析需求:查询数据库中的用户数据并输出到浏览器
- 父工程nateshao-cloud-02-mybatis:添加spring boot父坐标和管理其它组件的依赖
- 用户服务工程user-service:整合mybatis查询数据库中用户数据;提供查询用户服务
- 服务消费工程user-consumer:利用查询用户服务获取用户数据并输出到浏览器
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring-cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
通过 scope
的import可以继承 spring-cloud-dependencies
工程中的依赖
创建微服务父工程nateshao-cloud-02-mybatis
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>org.examplegroupId>
<artifactId>nateshao-cloud-02-mybatisartifactId>
<packaging>pompackaging>
<version>1.0-SNAPSHOTversion>
<modules>
<module>user-servicemodule>
<module>user-consumermodule>
modules>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.5.RELEASEversion>
<relativePath/>
parent>
<properties>
<java.version>1.8java.version>
<spring-cloud.version>Greenwich.SR1spring-cloud.version>
<mapper.starter.version>2.1.5mapper.starter.version>
<mysql.version>5.1.46mysql.version>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring-cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
<dependency>
<groupId>tk.mybatisgroupId>
<artifactId>mapper-spring-boot-starterartifactId>
<version>${mapper.starter.version}version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.version}version>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-configartifactId>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
7. 搭建配置user-service工程
![9fe3283b38646f2c620615de4420e2b0.png](https://img-blog.csdnimg.cn/img_convert/9fe3283b38646f2c620615de4420e2b0.png)