微服务:
把大型软件拆分成各种小的服务,
spring -----spring cloud微服务规范 ------- spring Alibaba微服务规范的产品实现
不要寄希望于微服务构架能够解决所有的问题。微服务架构主要解决的是如何快速地开发和部署我们的服务
SpringCloud Alibaba微服务解决方案
1概述
2核心组件分析
2核心组件分析
服务限流降级: 当下载的东西特别大时就要限流
服务注册与发现:公司的信息如注册金
分布式配置管理:更改已发项目的一些不方便更改的信息,独立出来更改
消息驱动能力:快递员为什么先把快递放快递柜子,相当于缓存
分布式任务调度:
定时任务
3解决方案架构设计
sentinel:限流
ribbon:负载均衡
gateway:api网关 类和接口 url 如/notice/select
auth center: 认证中心:不可能每次都去登录 索引需要认证
zipkin/walking:
elk:日志聚合服务:
构建SpringCloud 聚合项目并进行环境初始化
1工程结构
GitCGB2105IVProjects (工作区/空项目)
├── 01-sca //(微服务父工程)
├── sca-provider //服务提供方法
├── sca-consumer //服务消费方法
├── sca-gateway //网关服务
extends /import代码重用的方式
2创建空项目
3项目初始化配置
4创建聚合父工程
01-sca pom.xl
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E4.0.0 com.cy 01-sca1.0-SNAPSHOT org.springframework.boot spring-boot-dependencies2.3.2.RELEASE import pom org.springframework.cloud spring-cloud-dependenciesHoxton.SR9 import pom com.alibaba.cloud spring-cloud-alibaba-dependencies2.2.6.RELEASE import pom org.projectlombok lombokprovided org.springframework.boot spring-boot-starter-testtest org.junit.jupiter junit-jupiter-engineorg.apache.maven.plugins maven-compiler-plugin3.8.1 8 8
5创建服务提供方模块
6创建服务消费方模块
7创建API网关服务模块
总结(Summary) sca-gateway 服务网关就是网络请求
sca-consumer 就是消费模块
sca-provider就是提供模块
解决pom。xml横线问题idea pom.xml横线
课后作业:工程之间 的依赖: 工程代码的复用: 常见问题分析
为什么需要微服务?(对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等)
微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
微服务解决方案有哪些?(大厂自研,中小企业采用开源Spring Cloud Alibaba,Spring Cloud Netfix等 )
微服务设计中需要哪些关键组件(服务的注册,发现,配置,限流降级,访问入口管理,分布式事务管理等)
创建聚合工程的目的?(实现工程之间资源的的共享)
如何修改聚合工程中项目的编译和运行版本?(build->plugins->plugin->maven-compiler-plugin)
maven工程中build元素的作用?(定义项目的编译,打包方式)
maven父工程的packaging元素内的值是什么?(pom)
maven父工程中dependencyManagement元素的作用是什么?(定义项目的版本)
常见Bug分析
依赖或插件无法下载?(本地库冲突,网络,maven配置,版本)
commom:下创建一个类
在其他包中试着调用
common类:
创建stringutils类package com.jt.common.util;
public class StringUtils {
public static boolean isEmpty(String str){
return str==null||"".equals(str);
}
}
编辑provider测试类
package com.jt;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.StringUtils;
@SpringBootTest
public class StringTests {
@Test
void testStringEmpty(){
String content="helloworld";
boolean flag = StringUtils.isEmpty(content);
System.out.println(flag);
}
}
编辑provider启动类
package com.jt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProviderApplication {
public static void main(String[]args){
SpringApplication.run(ProviderApplication.class, args);
}
}
编辑provide pom.xml
org.springframework.boot spring-boot-startercom.jt sca-common1.0-SNAPSHOT



