导图社区 四阶段微服务
四阶段微服务,包括公共工程设计及实现、熟悉工程中对象的管理以及测试、NACOS注册中心入门等等,可以了解下。
编辑于2022-01-06 19:39:05四阶段微服务
微服务
练习一:公共工程设计及实现
1.创建01-sca工程的子工程,工程模块名sca-common
2.在sca-common模块工程中创建一个工具类com.jt.common.util.StringUtils,并在类中添加一个判断字符串是否为空的静态方法
3.将sca-common工程以依赖的方式添加到sca-provider工程中
(1).添加springboot web依赖(此依赖中包含了springboot工程需要的很多基础依赖)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
(2).添加sca-common依赖
<dependency> <groupId>com.jt</groupId> <artifactId>sca-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
4.在sca-provider工程中添加一个springboot启动类,类名为com.jt.ProviderApplication
5.在sca-provider工程中写一个单元测试类,类全名为com.jt.util.StringTests,并添加单元测试方法,在这个单元测试方法中使用sca-common工程中写的StringUtils类,测试一个字符串是否为空.
练习二:熟悉工程中对象的管理以及测试
1.在sca-common工程中定义一个com.jt.common.cache.DefaultCache类型.
2.在sca-provider工程将DefaultCache类型的对象交给spring管理,写到启动类即可
总结交给容器管理的方法
方法1:在被引入的类中 @Component把他交给spring管理 还需加依赖 在test测试类中@Autowerid (有强制包体系的要求)
方法2:直接在配置类(启动类) 配置spring bean对象 在test测试类中@Autowerid
方法3: @Import() 配置类用此方式
3.在sca-provider工程中定义个单元测试类DefaultCache,并且在类中定义一个单元测试方法,输出DefaultCache对象的toString方法的返回值。
测试类中的@SpringBootTest和@Autowired注解如果不加 也可以正常运行 但是会造成空值的情况,spring生成的对象的值不会赋予
Nacos注册中心入门
注意事项
服务注册的原理:每隔五秒发送一个消息 也叫心跳包 15秒之内没收到 标为不健康 30秒没收到就视为死亡
如果存在子工程中的POM文件中版本号报错 那可能是父工程的POM写错了
idea中启动nacos和数据库
拓展:在别的系统中也可以启动nacos
诞生背景
服务多了,需要统一管理
Nacos下载,安装,配置,启动,访问(http://ip:port/nacos)
基于Nacos实现服务的注册
1添加依赖,2服务配置,3启动服务并检查
RestTemplate
实现服务的简易调用(服务消费方调用服务提供方)
Nacos服务注册中心应用实践
消费者服务发现及调用(入门)
在sca-consumer方法内部实现远端服务调用,通过一个RestTemplate对象调用远端sca-provider中的服务
服务负载均衡设计的三种方法
1
LoadBalancerClient应用
从nacos注册中心获取服务实例列表,然后本地基于负载均衡算法获取具体服务实例
@LoadBalanced注解应用
描述RestTemplate对象,让系统底层为RestTemplate对象赋能,对请求过程进行拦截
关于如何修改负载均衡策略
配置文件->例如application.yml
sca-provider: #这个是要进行远程调用的服务id(服务名) ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡算法
配置类->例如启功类
@Bean public IRule ribbonRule() { return new RandomRule(); }
基于Feign的远程服务调用
关于为什么使用Feign方式的服务调用
优化结构,简化服务调用过程代码的编写
关于如何基于feign方式实现远程服务调用
依赖,配置,feign接口定义
关于@EnableFeignCleints 注解
描述配置类,例如启动类
关于@FeignClient注解
告诉Feign Starter,在项目启动时,为此注解描述的接口创建实现类-代理类
如何理解基于Feign方式的远程服务调用
声明式远程服务调用,底层封装了服务调用过程。
Feign方式如何实现负载均衡
Feign方式如何实现负载均衡
关于Feign方式远程调用超时配置
关于调用的服务突然不可用了或者调用过程超时了的解决方案
定义FallbackFactory接口的实现
在Feign访问接口中应用FallbackFactory对象
在配置文件application.yml中添加如下配置,启动feign方式调用时的服务熔断处理机制
关于字节码对象(以及一切操作字节码对象的API)
Nacos服务配置中心应用实践
日志
系统默认的日志级别是Info级别
关于配置中心概述
关于配置日志
关于配置日志外显
关于Nacos配置管理模型
读取Namespace:命名空间
读取Group:分组
关于本地缓存开关的使用cache
在服务器访问量比较大时 为了降低服务器压力 在缓存中取数据
Sentinel限流熔断应用实践
关于Sentinel限流入门
直接限流
关联限流
链路限流
流控模式为链路模式时,假如是sentinel 1.7.2以后版本,Sentinel Web过滤器默认会聚合所有URL的入口为sentinel_spring_web_context,因此单独对指定链路限流会不生效,需要在application.yml添加如下语句来关闭URL PATH聚合
热点
sentinel系统规则
sentinel授权规则
拦截器
只要有了配置中心 创建配置文件记得更名为bootstrap.yml 扫描等级最高级
负载均衡的步骤: 1.注入LoadBalancerClient对象 2.基于服务名获取服务实例 3.基于服务实例构建要访问的服务的url 4.返回对象
一旦熔断了,判定方法不可用了,就走回滚的方法
Ribbon是springcloud提供的负载均衡的组件(基于IRule下的算法)
系统启动之后,会初始化配置类,会自动帮我们注入这个loadBalancerClient对象
项目中如何获取服务实例的,使用loadBalancerClient对象,是从官方查到的,是接口,底层是RibbonLiadBalancerClient实现类对象 ,断点看的
三个点代表的是可变参数,必须放在方法参数的最后一个位置,可以穿也可以不传
URI:是一个超级 ,它可以给url传值
虚拟机JVM:Java HotSpot 64位-Bit的虚拟机
springbootTest 优先扫描启动类 先扫描同包 如果同包没有 则向上(一般不写 除非没有启动类)
@Override 要求jdk1.7