这里写自定义目录标题
1、分布式概念
1.1 集群
几台服务器一起实现同一服务
1.1.1节点:集群中的一个服务器
1.2 分布式
将不同的业务分布在不同的地方
1.3 远程调用
服务之间的相互调用
SpringCloud中使用 HTTP+JSON的方式完成远程调用。
1.4负载均衡
分布式系统中,A服务需要调用B服务,B服务在多台服务器中都存在,A调用任意一个服务器均可完成功能。
1.5服务注册/发现&注册中心
A 服务调用 B 服务,A 服务并不知道 B 服务当前在哪几台服务器有,哪些正常的,哪些服务 已经下线。解决这个问题可以引入注册中心。
如果某些服务下线,我们其他人可以实时的感知到其他服务的状态,从而避免调用不可用的 服务。
1.6配置中心
每一个服务最终都有大量的配置,并且每个服务都可能部署在多台服务器上。我们经常需要变更配置,我们可以让每个服务在配置中心获取自己的配置。
配置中心用来集中管理微服务的配置信息
1.7服务熔断&服务降级
a服务调用B服务,B服务调用C服务 ,如果一旦C服务出问题
A、B服务将无法正常运行,可能出现请求积压,最终导致服务雪崩
1.7.1服务熔断
设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开 启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认 的数据
1.8API网卡
在微服务架构中,API Gateway 作为整体架构的重要组件,它抽象了微服务中都需要的公共 功能,同时提供了动态提供路由服务,客户端负载均衡,服务自动熔断,灰度发布,统一认证,限流流控,日志统计等丰富的功能,帮助我们解决很多 API 管理难题。
API网关就像大商场唯一的唯一的一个安检入口,我们从这个入口进来,能放行过来的请求就是后台需要处理的
笔记
从码云把项目拉到idea
首先配置好ssh密钥
创建模块
创建父类的pom文件
修改pom文件
打包方式为pom
修改git忽略文件
添加
**/mvnw.cmd
**/mvnw
**/.mvn
**/target/
1.1 pom 打包形式
在父级项目中的pom.xml文件使用的packaging配置一定为pom。父级的pom文件只作项目的子模块的整合,在maven install时不会生成jar/war压缩包。
怎么解决circle问题
相互包含的两个依赖换版本
@RunWith(SpringRunner.class)
放在测试类上
注解的意义在于Test测试类要使用注入的类,比如@Autowired注入的类,
有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效,
不然直接一个NullPointerExecption
是在Springboot启动类上面添加
是在Springboot启动类上面添加,一般又有dao层才用在这个
添加@MapperScan(“com.winter.dao”)注解以后,com.winter.dao包下面的接口类,在编译之后都会生成相应的实现类
有@MAPPER就不需要加@MapperScan,有一个就行
view中没有service
<component name="RunDashboard">
<option name="configurationTypes">
<set>
<option value="SpringBootApplicationConfigurationType" />
</set>
</option>
</component>
加入这些代码
nacus作为配置中心
作为注册中心
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.md
官方文档
nacos
安装过程中遇到的问题
docker常用命令
docker 镜像: ----java中 class
docker容器 : ----java中 class new 出来的实例对象
安装过程中可以排查那里问题
端口是否可以访问,可以的话就是配置问题,看logs查看错误信息
注册中心,远程调用接口
首先注入feign依赖
org.springframework.cloud
spring-cloud-starter-openfeign
某个接口需要远程调用;那么就在这个接口上注解@FeignClient(“mymall-coupon”)
意思是我可以远程调用,然后里面的意思是,这个接口在注册中心mymall-coupon里面你去找,然后这个接口去哪里实现呢,在接口里注解 @RequestMapping(“/coupon/coupon/member/list”)
public R membercoupon();
意思是在ctroller中这个路径下的方法返回值给我
版本问题
注册不可少三个
启动类上加@EnableDiscoveryClient注解
配置类中加这些
第一个
cloud:
nacos:
discovery:
server-addr: 114.55.208.142:8848
第二个
application:
name: mymall-coupon
#配置中心,怎么动态的修改
首先
注意配置文件里的格式千万不能错误,不能有空格
nacos作为配置中心更多的细节
我想给同一个配置分配不同的空间
比如双十一时候我用11这个空间里的A配置(内容可以不一样,名字一样)
双十二的时候我用12这个空间里的A配置(内容可以不一样,名字一样)
但是系统默认是public这个空间里的配置
踩坑遇到的问题
首先配置文件格式一定要写对
版本问题,是否冲突,是否覆盖
以上是两个常出错的点
微服务怎么配置命名空间呢
coupon的空间放的都是coupon的配置比如dev配置,prod配置,test配置(这些是分组)
网关
满足过滤条件的给你链接到这个相应的网址
建立一个网关的模块
建立的时候选择gateway
网关的yml配置
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq