SCA(Spring Cloud Alibaba)核心组件
Spring Cloud是若干个框架的集合,包括spring-cloud-config、spring-cloud-bus等近20个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案,Spring Cloud Alibaba可以集成Zuul、Gateway等网关组件,也可集成Ribbon、OpenFeign等组件
开源组件Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
Dubbo:这个就不用多说了,在国内应用非常广泛的一款高性能Java RPC框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大
商业化组件Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。(Config,Nacos)
Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云提供的云存储服务。
Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准的定时(基于Cron表达式)任务调度服务。Nacos(Dynamic Naming and Configuration Service):
是阿里巴巴开源的一个针对微服务架构中服务发现、配置管理和服务管理的平台
功能特性
服务发现与健康检查。
动态配置管理。
动态DNS服务。
服务和元数据管理(管理平台的角度,Nacos也有一个UI页面,可以看到注册的服务及其实例信息[元数据信息]等),动态的服务权重调整、动态服务优雅下线,都可以去做保护阈值可以设置为0-1之间的浮点数,它其实是一个比例值(当前服务健康实例数/当前服务总实例数),防止雪崩效应,牺牲了一些请求,保证了整个系统的一个可用
1.下载安装包 https://github.com/alibaba/nacos
2.将压缩包解压到任意非中文目录下,进到bin目录启动nacos
3.在浏览器访问该网址,我们可以看到nacos的可视化窗口
http://10.48.185.7:8848/nacos/index.html
4.在主项目中导入nacos所需的依赖
<!--Spring Cloud Alibaba微服务组件的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
5.在所需要微服务项目中导入nacos客户端所需的依赖,将原来rureka,bus,config的依赖注释掉,在nacos中整合了这些组件
<!--nacos的客户端依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
将配置文件中不需要的配置注释掉,类中相应的注解也需要注释掉,并添加nacos的服务地址(product生产中的)
page中的配置文件
application.properties
spring.application.name=leq-service-page server.port=9100 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=0216 spring.datasource.url=jdbc:mysql://localhost:3306/leq_sc?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
application.yml
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 hystrix: command: default: circuitBreaker: # 强制打开熔断器,如果该属性设置为true,强制断路器进入打开状态,将会拒绝所有的请求,默认false关闭的 forceOpen: false # 触发熔断错误比例阈值,默认值50% errorThresholdPercentage: 50 # 熔断后休眠时长,默认值5秒 sleepWindowInMilliseconds: 3000 # 熔断触发最小请求次数,默认值是20 requestVolumeThreshold: 2 execution: isolation: thread: # 熔断超时设置,默认为1秒 timeoutInMilliseconds: 2000 # Spring Boot中暴露健康检查等断点接⼝ management: endpoints: web: exposure: include: "*" # 暴露健康接⼝的细节 endpoint: health: show-details: always # 针对的被调⽤⽅微服务名称,不加就是全局⽣效 leq-service-product: ribbon: # 请求连接超时时间 ConnectTimeout: 2000 # 请求处理超时时间 ReadTimeout: 10000 # 对所有操作都进⾏重试 OkToRetryOnAllOperations: true # MaxAutoRetries: 0 # 对当前选中实例重试次数,不包括第⼀次调⽤ MaxAutoRetriesNextServer: 0 # 切换实例的重试次数 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载策略调整 # 开启Feign的熔断功能 feign: hystrix: enabled: true # true 开启Feign中继承Hystrix 熔断器功能 compression: request: enabled: true # 默认不开启 mime-types: text/html,application/xml,application/json # 设置压缩的数据类型,设置为默认值 min-request-size: 2048 # 设置触发压缩的⼤⼩下限,2048为默认值 response: enabled: true # 默认不开启
5. 重启这三个修改的微服务,要确保我们的nacos启动
6.访问查询端口的接口
http://localhost:9100/page/getPort
可以看到我们的熔断和负载均衡还是生效的,前面熔断的依赖我们已经注释掉了,但是熔断和负载均衡还是可以生效的,这更加证明了nacos的强大