当前位置: 首页 > 后端技术 > Java

SpringCloud2020版最佳实践,你落后了!

时间:2023-04-01 14:13:55 Java

作者:低调的小熊猫\来源:https://ilovey.live/2021/09/2...SpringCloud将命名方式从H版本改为2020.x.x。据说2021年最新版mao没有点名。强迫症使用的不爽组件列表:注册中心:nacos、alternativeeureka、consul、zookeeper配置中心:nacos、alternativescconfig、consulconfigcall:feign,alternative:resttempatefuse:sentinel,alternative:Resilience4jFuse监控:sentineldashboard负载均衡:scloadbalancergateway:springcloudgatewaylink:springcloudsleuth+zipkin,alternatives:skywalking等整体架构图版本关系使用nacos作为注册中心和配置中心下载nacos下载地址:https://github.com/alibaba/nacosimportdatabasecreatemysqldatabasenacos,importconf/nacos-mysql.sqlconfiguredatabasemodifyconf/application.properties#**************Config模块相关配置***************####如果使用MySQL作为数据源:spring.datasource.platform=mysql###CountofDB:db.num=1###DB的连接URL:db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=rootdb.password.0=123456配置启动方式设置nacos单机模式启动,编辑bin/startup.cmd,修改MODE为:setMODE="standalone"启动并运行登录页面:http://localhost:8848/nacos/,以用户nacos登录,并以nacos项目案例登录项目案例源码:https://github.com/java-aoden...项目案例有2个,一个服务提供者provider,一个服务consumer消费者。SpringBoot的基础就不介绍了。推荐这个实用教程:https://www.javastack.cn/cate...在父pom文件中引入相关依赖,如下:1.82.4.42020.0.22020.0.RC1org.springframework.bootspring-boot-dependencies${spring-boot.version}pomimportorg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportcom.alibaba.cloudspring-cloud-alibaba-dependencies${spring-cloud-alibaba.version}pom<范围>import服务提供者provider在pom文件中引入下面依附:org.springframework.bootspring-boot-starter-webcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery配置文件:server:port:8762spring:application:name:providercloud:nacos:discovery:server-addr:127.0.0.1:8848开始入口添加注解:@SpringBootApplication@EnableDiscoveryClientpublicclassProviderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProviderApplication.class,args);}}写一个接口:@RestControllerpublicclassDemoController{@Value("${server.port}")Stringport;@GetMapping("getInfo")publicStringgetInfo(@RequestParam(value="name",defaultValue="nacosConfig",required=false)Stringname){return"我的名字是"+name+",我的端口是"+端口;}}服务消费者consumer在pom文件中引入如下依赖:org.springframework.bootspring-boot-starter-webcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-discoveryorg.springframework.cloudspring-cloud-starter-openfeignorg.springframework.cloudspring-cloud-starter-loadbalancer配置文件server:port:8763spring:application:name:consumercloud:nacos:discovery:server-addr:127.0.0.1:8848在项目的启动入口开启FeignClient功能@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic类ConsumerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ConsumerApplication.class,args);}}写一个FeignClient调用provider服务接口:@FeignClient(value="provider")publicinterfaceProviderClient{@GetMapping("getInfo")StringgetInfo(@RequestParam(value="name",defaultValue="nacosConfig",required=false)Stringname);}编写接口供消费者调用提供者服务接口:@RestControllerpublicclassDemoController{@AutowiredProviderClientproviderClient;@GetMapping("getInfoByFeign")publicStringgetInfoByFeign(){returnproviderClient.getInfo("consumerfeign");}}启动两个项目,出现在nacos服务列表页面。服务调用已成功注册。推荐一个SpringBoot基础教程和实例:https://www.javastack.cn/cate...在浏览器输入http://localhost:8763/getInfo...,浏览器返回响应我的name是consumerfeign,我的端口是8761,可以看出浏览器的请求成功调用了consumer服务的接口,consumer服务也通过feign成功调用了provider服务的接口。使用scloadbanlancer作为负载均衡器,使用springcloudloadbanlancer作为负载均衡器。通过修改provider的端口,然后在本地启动一个新的provider服务,本地有两个provider服务,端口分别为8761和8762。在浏览器上多次调用http://localhost:8763/getInfo...,浏览器会交替显示:我的名字是consumerfeign,我的端口是8761我的名字是consumerfeign,我的端口是8762registryproviderserviceis也将以nacos为配置中心父工程添加nacos配置版本为例,另外一个用于解决最新版本导致的问题:2.0.33.0.4com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config${spring-cloud-alibaba.version}org.springframework.cloudspring-cloud-starter-bootstrap${spring-cloud.bootstrap.version}服务服务商provider添加依赖:com.alibaba.cloudspring-cloud-starter-alibaba-nacos-configorg.springframework.cloudspring-cloud-starter-bootstrap在bootstrap.yml中配置如下内容(必须是bootstrap.yml文件,不是application.ymlfile)file:server:port:8762spring:application:name:providercloud:nacos:config:enabled:trueserver-addr:127.0.0.1:8848file-extension:ymlprefix:providerprofiles:active:dev在上面配置,配置Nacosconfigserver地址,配置扩展名为ymal(目前只支持yml和properties)。注意这里没有配置server.port,在nacos中配置了server.port的属性。以上配置对应Nacos中dataId的格式。nacos的完整格式如下:${prefix}-${spring.profile.active}.${file-extension}prefix默认为spring.application.name值也可以通过配置项spring.cloud进行配置.nacos.config.前缀。spring.profile.active是当前环境对应的profile。有关详细信息,请参阅SpringBoot文档。注意:当spring.profile.active为空时,对应的connector-将不存在,dataId的拼接格式变为${prefix}。${file-extension}file-exetension为配置内容的数据格式,即可以通过配置项spring.cloud.nacos.config.file-extension进行配置。目前仅支持属性和yaml类型。启动nacos,登录localhost:8848/nacos,创建dataid。完整配置如图:源码下载:https://github.com/java-aoden...参考:https://www.fangzhipeng.com/s...\https://spring.io/projects/sp...\https://www.springcloud.cc/\https://blog.csdn.net/llllllll...最近热文推荐:1.1000+Java面试题及答案(2021最新版)2.别再满脑子if/else了,试试策略模式,太爽了!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!