SpringcloudAlibaba学习⼊门⽰例Springcloud Alibaba学习⼊门⽰例
写在前⾯,建议在进⾏下⾯的步骤前, 。
下⾯是阿⾥团队集成Spring开发的相关微服务的组件
⼀、初始项⽬
1.1、Spring Initializr 项⽬
初始化Maven项⽬,Spring Initializr 有很⽅便的Spring的依赖引⼊
只需引⼊这三个依赖即可,关于Alibaba cloud的依赖,spring暂未引⼊,需要⼿动去加⼊依赖,
解压导⼊IDEA
1.2、完善 l(引⼊alibaba的依赖)
在spring Initializr⾃动构建的Pom中添加如下的依赖
<!--添加SCA-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>com.alibaba.cloud</groupId>-->
<!--<artifactId>spring-cloud-starter-alicloud-acm</artifactId>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>com.alibaba.cloud</groupId>-->
<!--<artifactId>spring-cloud-starter-alicloud-oss</artifactId>-->
<!--</dependency>-->
<!--添加SCAC-->
</dependencies>
<dependencyManagement>
<dependencies>
<!--添加阿⾥ cloud 依赖管理-->
<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>
</dependencies>
</dependencyManagement>
1.3、下载 sentinel 项⽬
只有⼀个jar
1.4、下载和配置 Nacos 项⽬
注意系统的区别(linux,windows,MAC)
⼆、启动 sentinel 和 Nacos
2.1、启动 sentinel
指定端⼝8888,启动
java -jar -Dserver.port=8888 sentinel-dashboard.jar
访问 localhost:8888,默认账号密码是:sentinel/sentinel
2.2、启动 Nacos
,解压,运⾏脚本即可,在 bin下,⾃带的启动脚本
默认端⼝,8848,访问 localhost:8848/nacos
也是⼀个web页⾯
默认密码 nacos,密码 nacos
可以看到 Sentinel 和Nacos⾥⾯都是空的。
三、在初始化项⽬中,配置 Sentinel 、 Nacos
3.1、项⽬的基本⽬录结构
3.2、代码⽰例
3.2.1、配置信息(两个)
bootstrap.properties
spring.application.name=bootiful-alibaba
# sentinel
spring.ansport.dashboard=localhost:8888
# nacos
nacos=localhost:8848
spring.cloud.nacos.discovery.server-addr=${nacos}
spring.fig.server-addr=${nacos}
application.properties
spring.cloud.sentinel.servlet.block-page=/error
3.2.2、java code(5部分)
程序⼊⼝,BootifulApplication
@EnableDiscoveryClient
@SpringBootApplication
public class BootifulApplication {
public static void main(String[] args){
SpringApplication.run(BootifulApplication.class, args);
}
}
```x
SentinelConfig,流量配置
```java
@Configuration
public class SentinelConfig {
@EventListener(ApplicationReadyEvent.class)
public void config(){
springcloud难学吗FlowRule fr =new FlowRule();
fr.setRefResource("/code");
fr.setCount(2);
fr.setGrade(RuleConstant.FLOW_GRADE_QPS);
fr.setLimitApp("default");
FlowRuleManager.loadRules(Collections.singletonList(fr));
}
}
CustomerUrlHandler,阻塞异常处理
@Log4j2
@Component
public class CustomerUrlHandler implements UrlBlockHandler {
@Override
public void blocked(HttpServletRequest req, HttpServletResponse res, BlockException e)throws IOException {
}
}
TestController,测试接⼝
@RestController
public class TestController {
@GetMapping("/code")
public String code(){
return"Hello Code";
}
@GetMapping("/dashboard")
public String dashboard(){
return"Hello Dashboard";
}
@GetMapping("/error")
public ResponseEntity<?>error(){
return ResponseEntity
.status(HttpStatus.TOO_MANY_REQUESTS)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(Collections.singletonMap("error","could't take it anymore!"));
}
}
DiscoveryClientListener ,服务发现
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论