spring-cloud微服务总结
学习框架
微服务—服务的治理
什么是微服务?
微服务就是单个应用程序开发可以作为小型的服务,单个部署与发布,比如提供方,消费方
这些服务使用轻量级API,通过明确定义的接口进行通信,这些服务是围绕业务功能构建的,每项服务执行一项功能,由于他们是独立运行的,因此可以根据各项服务进行灯芯,部署和扩展,实现应用程序特定功能的需求。
spring-cloud-alibaba微服务解决方案
spring Cloud Alibaba是springCloud的一个子项目,致力于提供微服务开发的一站式解决方案,此项目包含开发分布式微服务的必须组件,方便开发者通过springCloud编程模型轻松使用这些组件来开发分布式应用服务。依托于springCloudAlibaba,只需要添加依赖和少量的配置,就可以实现springCloud应用接入阿里微服务,通过阿里中间件来快速搭建分布式应用系统
springCloudAlibaba核心组件分析
1.服务的限流与降级
sentinel控制台可以实现服务的降级与限流,还可以实时监控限流。
2.服务的注册与发现
通过nacos实现服务的注册,还集成了Ribbon
3.分布式配置管理
Nacos实现了分布式的外部配置,配置更改时自动刷新
4.消息驱动
基于Spring Cloud Stream 为微服务应用构建消息驱动能力。
5. 分布式事务
使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
6.分布式任务调度
提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker上执行。
构建springCloudf聚合项目并进行初始化
在父工程的pom文件下添加依赖,管理版本
以上就是关于微服务的概述,下面介绍的是微服务的具体实现,以及用到的相关组件,好好学哦!!!笔芯
Nacos服务
1.什么是Nacos?
为什么是nacos,就要知道在项目中,可能会用到微服务架构,微服务中把单个应用程序都当做一个个小型的服务,这些服务使用轻量级的API接口进行服务间的通信,这就说明有很多的服务,那我们怎么管理这些服务,怎么进行服务间的通信,为了更好的管理这些服务,建立服务之间联系的纽带,就诞生了Nacos服务注册
2.为什么使用Nacos
Nacos孵化于阿里巴巴,承受住了阿里巴巴近10年的双十一考验
3.怎么用Nacos到微服务?
构建nacos
第一:确保你的nacos配置了JAVA-HOME环境变量,jdk版本在1.8,启动nacos要用到JDK
第二: 保证你的mysql数据库版本在5.7以上,mariaDB版本在10.5以上
第三:下载与安装nacos
1.下载nacos从官网
https://github.com/alibaba/nacos/releases
找到对应的版本
2.下载之后再减压
3.登录mysql执行脚本,这个脚本在解压的nacos文件里,但是要进行配置
mysql执行的命令:source d:/nacos-mysql.sql
经过编辑的脚本
4. 找到默认的配置,基于自己的当前环境进行数据库的配置,配置要连接的数据库
5.
Nacos的启动和访问
Nacos的启动有三种
windows系统启动
在解压的nacos文件的bin目录下,执行cmd,执行命令:startup.cmd -m standalone
linux系统启动
执行命令:./startup.sh -m standalone
在idea里配置启动
访问nacos:浏览器输入地址:localhost:8848/nacos
出现的界面
nacos注册与发现
1.提供者方添加依赖
2.编辑配置文件
3.在写业务
4.注册到nacos服务
消费者服务的调用以及发现
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Cloud Alibaba nacos 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
编辑配置类
server:
port: 8090 #默认为8080
spring:
application:
name: sca-consumer #假如做服务注册,必须写
cloud:
nacos:
discovery:
server-addr: localhost:8848 #nacos server 地址
sentinel:
transport:
dashboard: localhost:8180 #sentinel 控制面板的地址
#port: 8719 #sentinel 客户端端口
web-context-unify: false #关闭url聚合(不让所有url都聚合到context下)
feign:
hystrix:
enabled: true #开启feign方式调用时,服务调用超时等问题
编辑业务–消费者调用提供者–用到了Restemplate对象
RestTemplate是外部资源,要交给spring管理,需要构建