1,学习spring cloud
1.1SpringCloud是什么?
Spring Cloud是一系列框架的有序集合如服务发现注册、配置中心、消息总线、负载均衡、熔断器、数据监控等。
1.2.Spring Cloud 和 Spring Boot的关系
Spring boot 是 Spring 的一套快速配置脚手架 ,可以基于spring boot 快速开发单个微服务。
Spring Cloud是一个基于SpringBoot实现的微服务开发方案;

Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Springboot,属于依赖的关系。
2.系统架构的演变
2.1. 单体架构
1迭代困难 :每次功能的变更或bug的修复都会导致重新部署整个应用
2代码耦合 :项目之间耦合度较高 后期整改困难
3扩展受限: 单独为某一块业务进行扩展 ,无法根据业务模块的需要进行伸缩
4技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务 代码复杂的提升
2.2.分布式架构
分布式:需要按照功能点把系统拆分成独立的功能,单独为某一个节点添加服务器,需要系统之间配合才能完成整个业务逻辑

2.3.微服务
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
-
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
-
面向服务:微服务对外暴露业务接口
-
自治:团队独立、技术独立、数据独立、部署独立
-
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
3.Spring Cloud Alibaba概述
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
4,项目实践

如何跨项目进行调用(不包含依赖关系)???
1,下载nacos
需要在虚拟机当中下载 Nacos 进入它网页
Nacos (全称: Dynamic Naming and Configuration Service ) 是阿里巴巴开源的微服务基础设施 ,核心是服务注册发现 + 分布式配置中心,相当于微服务架构的 "通讯录 + 集中控制面板"
Nacos账号密码/nacos /nacos

接下来就是安装依赖 (依赖版本需要统一)
java
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
| 依赖 | 作用 |
|---|---|
| spring-cloud-commons | Spring Cloud 微服务标准接口 |
| spring-cloud-starter-alibaba-nacos-discovery | Nacos 注册发现实现 |
2,导入nacos地址
同时需要在两个项目当中 写application.yml
java
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.182.132:8848 #nacos服务的地址
application:
name: nacos-provider //项目名字
3,运行
调用者
controller
java
@RestController
@RequestMapping(value = "/consumer")
public class ConsumerController {
@Autowired
//RestTemplate restTemplate:
// Spring 提供的用于发送 HTTP 请求的客户端工具类
private RestTemplate restTemplate;
@Autowired
// 用于发现服务实例的客户端 (Eureka、Consul等)
private DiscoveryClient discoveryClient;
@RequestMapping("/getUserById/{id}")
//@PathVariable 获取路径中的参数
public User getUserById(@PathVariable Integer id) {
// discoveryClient.getInstances("nacos-provider");//获取服务实例
ServiceInstance serviceInstance = discoveryClient.getInstances("nacos-provider").get(0);
String host = serviceInstance.getHost();//获取服务实例的ip
Integer port = serviceInstance.getPort();//获取服务实例的端口号
// String url ="http://127.0.0.1:8080/provider/getUserById/"+id; //需要访问的uid
String url ="http://"+host+":"+port+"/provider/getUserById/"+id;
return restTemplate.getForObject(url,User.class);
}
}
启动类 需要添加 @EnableDiscoveryClient
开启服务注册与发现功能 让当前 Spring Boot 项目成为微服务客户端,自动把自己注册到 Nacos/Eureka 等注册中心,同时能发现其他微服务。
java
@SpringBootApplication
@EnableDiscoveryClient // 服务注册
public class NacosConsumerApp {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApp.class, args);
}
}
启动后在nacos 网页可以发现

进入调用者的 访问路径 进去就是 被调用者的 的路径内容
5,Nacos配置中心 config
项目工程

1,导入依赖
java
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2,启动类

3,bootstrap.yml

4,导入配置
其中配置内容
Data Id:prefix+file-extension
配置格式:yaml
配置内容:...

5,运行项目
