spring cloud alibaba (一)

news/2024/5/5 19:48:11/文章来源:https://www.cnblogs.com/galenblog/p/16662915.html

Spring Cloud Alibaba

官网:https://spring.io/projects/spring-cloud-alibaba

gitHub:https://github.com/alibaba/spring-cloud-alibaba

这节主要目标:

  • 掌握nacos使用
  • 了解服务与服务之间调用

1、简介

1.1、什么是分布式

将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式)

1.2、什么是Spring Cloud

spring cloud提供了一些可以让开发者快速构建分布式应用的工具。

主要解决了分布式中,服务注册发现,远程服务调用,负载均衡,配置中心,链路监控等组件问题。

1.3、什么是Spring Cloud Alibaba

Spring Cloud Alibaba 提供分布式应用开发的一站式解决方案

它包含开发分布式应用程序所需的所有组件。

只需添加一些注解和少量配置,即可构建分布式应用系统。

基于Spring Cloud上进行改进。

1.4、Spring Cloud Alibaba相关组件

组件 作用
nacos 注册中心(服务注册与发现)、配置中心(动态配置管理)
Ribbon 负载均衡
Feign 声明式Http客户端(调用远程服务)
Sentinel 服务容错(限流、降级、熔断)
Gateway API网关(webflux编程模式)
Sleuth 调用链监控
Seata 原Fescar,即分布式事务解决方案

2、添加依赖

一定找对应spirngboot版本的springcloud版本。

一定要注意版本之间的兼容。

ub.com/alibaba/spring-cloud-alibaba

springcolud alibaba版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

添加spring-cloud-alibaba-dependencies

<properties><java.version>1.8</java.version><spring.cloud.version>2021.0.3</spring.cloud.version> <spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
</properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

3、Nacos

nacos github:https://github.com/alibaba/nacos/

nacos官方文档:https://nacos.io/zh-cn/

提供了分布式中的服务注册与发现配置中心管理功能。

3.1、nacos安装

安装有很多方法:

1、从 最新稳定版本 下载 nacos-server-$version.zip 包。

2、通过docker管理。

docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:v2.1.1

安装成功后访问,http://localhost:8848/nacos/#/login

默认账号密码:nacos

3.2、服务注册

1、引用依赖

<!--nacos服务注册/发现-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、添加配置,开启注解

application.properties或者使用application.yaml

server.port=8081
spring.application.name=a-demo
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*

在启动类上开启注解

// 开启服务注册
@EnableDiscoveryClient
@SpringBootApplication
public class ADemoApplication {public static void main(String[] args) {SpringApplication.run(ADemoApplication.class, args);}}

3.3、启动项目,在Nacos 控制台上看到已注册的服务

3.3、配置中心

从nacos引用配置,方便管理

1、引用依赖

<!--nacos配置中心-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--解决版本太高了,无法读取bootstrap.yml文件-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2、添加配置

bootstrap.properties

采用bootstrap是因为优先级高。

spring.application.name=a-demo
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

默认配置名:${spring.application.name}.properties

3、添加naocs配置,测试。

a-demo.properties

4、测试

@SpringBootApplication
@EnableDiscoveryClient
public class ADemoApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext = SpringApplication.run(ADemoApplication.class, args);String userName = applicationContext.getEnvironment().getProperty("user.name");String userAge = applicationContext.getEnvironment().getProperty("user.age");System.err.println("user name :" +userName+"; age: "+userAge);
//        SpringApplication.run(ADemoApplication.class, args);}}

3.4、配置yaml格式

配置中心可以配置yaml 格式

1、配置文件bootstrap.properties

spring.cloud.nacos.config.file-extension=yaml

2、在nacos上添加配置。

测试:

3.5、动态加载

1、默认是动态加载。

// 自动刷新配置,放在配置类上即可。
// @RefreshScope

3.6、命名空间

命名空间用于隔离不同用户的配置。

典型场景是不同环境的配置隔离,例如开发/测试环境和生产环境的隔离。

1、创建新的命名空间

2、使用新的命名空间

bootstrap.properties

spring.cloud.nacos.config.namespace=f11392fe-84e0-48a1-9da5-71052b6a3af1

在新命名空间,创建文件并测试

测试:

服务也可以注册到不同的命名空间上

spring.cloud.nacos.discovery.namespace=f11392fe-84e0-48a1-9da5-71052b6a3af1

3.7、GROUP分组

可以根据分组不同,选择不同的配置。

1、创建新的分组测试

bootstrap.properties

spring.cloud.nacos.config.group=DEV_GROUP

3.8、公共配置

存在一个配置,多个项目共用配置使用情况。

# 公共配置的 data-id,支持一个应用程序的多个配置,通过下标来指向。
spring.cloud.nacos.config.ext-config[0].data-id=config-common01.properties
# 指定分组,默认DEFAULT_GROUP(非必需)
spring.cloud.nacos.config.ext-config[0].group=GLOBALE_GROUP
# 开启动态配置(非必需)
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[n].data-id。n值越大,优先级越高。

更清晰表示多个项目与配置之间的关联,还可以:

# 多个数据 id,用逗号分隔
spring.cloud.nacos.config.shared-dataids=bootstrap-common.properties,all-common.properties
# 指定动态更新配置
spring.cloud.nacos.config.refreshable-dataids=bootstrap-common.properties

数据Id必须有文件扩展名,可以是properties或者yaml/yml

4、Feign

用于服务与服务之间的调用

声明式,HTTP 形式的 API

例如,a服务调用b服务的接口。

服务都需要在nacos上注册。

1、添加依赖openfeign

<!-- openfeign -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 负载均衡(不添加openfeign会报错) -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

2、启动类添加注解

@EnableFeignClients

3、添加接口

@FeignClient(name = "b-demo")
public interface BdemoServcieFeignClient {@GetMapping("/list")String list();
}

4、b服务的controller

@RestController
public class IndexController {@GetMapping("/list")public String list(){return "这是 B 服务的接口";}
}

5、调用b服务的接口


@RestController
public class IndexController {@AutowiredBdemoServcieFeignClient bdemoServcieFeignClient;@GetMapping("/list")public String getConfig(){String str = bdemoServcieFeignClient.list();return "A服务+"+ str;}
}

启动项目测试:

我们下次继续讲 Gateway 网关。
spring cloud alibaba 2021.0.1.0官方文档:
https://spring-cloud-alibaba-group.github.io/github-pages/2021/en-us/index.html#_introduction

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5763.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flex常用布局

公共样式:<style>* {margin: 0;padding: 0;}.has-flex {display: flex;}</style> 垂直居中 子元素左右分布 css.father-one {width: 100%;height: 200px;background-color: #fffcef;align-items: center; /*纵轴)方向上的对齐方式。*/justify-content: space-bet…

5.2 创建个人中心页面-前端部分

&#x1f60a;如果写的可以帮到你&#xff0c;可以点个赞吗&#xff0c;你的支持就是我写下去的动力。&#x1f60a; 本文阅读大概 10 分钟, 自己写加思考大概 1 ~ 2 小时。建议&#xff1a;代码可以手抄&#xff0c; 但不要复制。 1. 整体框架 2. 前端页面布局 使用 bootstra…

达梦数据库图形化工具

图形化工具列表 (1)DM数据库配置助手 (2)DM服务查看器 (3)DM管理工具 (4)DM控制台工具 (5)DM数据库迁移工具 (6)DM性能监测工具图形化工具详解 界面展示DM数据库配置助手[dmdba@localhost tool]$ ./dbca.sh DM服务查看器DM管理工具DM控制台工具DM数据库迁移工具DM性能监测工具功…

马拉车算法

这篇博客写的非常清晰 https://zhuanlan.zhihu.com/p/549242325 给定一个字符串,问有多少个以 k,f,c 结尾的回文子串。#include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const int maxn=1e6+5; int n,sum; ll len[maxn…

22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表

人人尽说江南好&#xff0c;游人只合江南老。 春水碧于天&#xff0c;画船听雨眠。 MySQL主从复制 mysql主从复制&#xff1a;分摊读写压力&#xff08;cpu计算压力&#xff09; 写交给主库&#xff0c;读有主从分摊处理&#xff08;原因是写操作较少&#xff0c;读操作较多&…

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 时间片 多任务系统往往需要同时执行多道作业。作业数往往大…

ABAP-LP01和PDF打印机配置

事务代码SPAD1.LP01配置2.PDF配置

Netty+WebSocket整合STOMP协议

1.STOMP协议简介 常用的WebSocket协议定义了两种传输信息类型:文本信息和二进制信息。类型虽然被确定,但是他们的传输体是没有规定的,也就是说传输体可以自定义成什么样的数据格式都行,只要客户端和服务端约定好,得到数据后能够按照约定的语义解析数据就好。相较于Http协议…

猿创征文|我的后端成长之路(985科班两年,我发现了大学正确打开方式)

零.前言 当看到官方的这个活动的时候&#xff0c;我突然感到手指充满了力量&#xff0c;好像是我的键盘要向我尖端放电&#xff0c;谁还不是怀着满腔的热忱来写这篇文章帮助未来的学弟学妹们避坑呢&#xff1f;(其实是为了活动的奖励&#x1f917;)。不过不要在意这些细节&…

本地连接是干什么的?

当您创建家庭或小型办公网络时&#xff0c;运行 windows XP Professional 或 windows XP home edition 的计算机将连接到局域网 (Lan)。 安装 windows XP 时&#xff0c;将检测您的网络适配器&#xff0c;而且将创建本地连接。 像所有其他连接类型一样&#xff0c;它将出现在…

【深蓝学院】- Multiplane Images and Neural Rendering

01 view Synthesis problem Definition 02 View synthesis with multiplane Image(MPI) MPI的缺陷&#xff1a; 不是真正的三维表达不同视角观测的RGB是不变的 与MPI不一样的地方&#xff1a;不是手工设计的&#xff0c;而是整体输入 不同视角的RGB是不一样的 缺陷&#xff1…

Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad

目录 写在前面 一、 torch.optim.SGD 随机梯度下降 SGD代码 SGD算法解析 1.MBGD&#xff08;Mini-batch Gradient Descent&#xff09;小批量梯度下降法 2.Momentum动量 3.NAG(Nesterov accelerated gradient) SGD总结 二、torch.optim.ASGD随机平均梯度下降 三、torc…

【手把手】ios苹果打包——遇见项目实战|超详细的教程分享

六年代码两茫茫&#xff0c;不思量&#xff0c;自难忘 6年资深前端主管一枚&#xff0c;只分享技术干货&#xff0c;项目实战经验 关注博主不迷路~ 文章目录前言weex介绍eeui介绍一、安装CocoaPods1.CocoaPods介绍2.CocoaPods的安装二、登录开发者中心四、添加测试手机设备五、…

2022最新iOS证书(.p12)、描述文件(.mobileprovision)申请和HBuider打包及注意注意事项

制作p12证书1、在钥匙串界面中,选中安装好的开发者证书,【右键】选择导出在弹出的界面中3、在接下来的弹窗中填写p12文件的安装密码(后面他人安装该p12文件时需要输入这个密码,重要)4、继续上面的步骤,这里需要输入电脑的开机密码,p12开发者证书到这里即制作完成。以上就…

【芯片前端】根据数据有效选择输出的握手型FIFO结构探究

前言 之前要做一个一读多写的fifo&#xff0c;也就是master写入数据到fifo中&#xff0c;多个slave读取数据&#xff0c;结构如下图所示&#xff1a; 由于slave需要的数据一致&#xff0c;fifo内只需要例化一个ram以节约空间。这个fifo的具体结构下次博客中再来讨论。在这个fi…

Git 之 revert

转自: Git 之 revertrevert 可以撤销指定的提交内容,撤销后会生成一个新的commit。 1、两种commit: 当讨论 revert 时,需要分两种情况,因为 commit 分为两种:一种是常规的 commit,也就是使用 git commit 提交的 commit; 另一种是 merge commit,在使用 git merge 合并两…

mysql 主从备份原理

mysql 主从备份原理 1.1 用途及条件 mysql主从复制用途实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务主从部署必要条件:主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库2.1 主从原理在备库 B 上通过 change master 命令,…

服务端挂了,客户端的 TCP 连接还在吗?

作者:小林coding 计算机八股文网站:https://xiaolincoding.com大家好,我是小林。 如果「服务端挂掉」指的是「服务端进程崩溃」,服务端的进程在发生崩溃的时候,内核会发送 FIN 报文,与客户端进行四次挥手。 但是,如果「服务端挂掉」指的是「服务端主机宕机」,那么是不会…

[第二章 web进阶]XSS闯关-1

定义:跨站脚本(Cross_Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户浏览网页时就会受到影响。恶意用户利用XSS代码攻击成功后,可能得到包括但不限于更高的权限、会…

K8s简介之什么是K8s

1.概述 欢迎来到K8s入门课程。Kubernetes,也被称为K8s或Kube,是谷歌推出的业界最受欢迎的容器编排器。本K8s教程由一系列关于K8s的文章组成。在第一部分,我们将讨论什么是K8s和K8s的基本概念。 本课程是专为初学者开设的,你可以零基础学习这项技术。我们将带你了解全部K8s的…