package com.atguigu.springcloud.controller;
import cn.hutool.core.swing.clipboard.ClipboardUtil;
import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment;
import com.atguigu.springcloud.service.PaymentService;
import com.atguigu.springcloud.tool.RandomCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.TimeUnit;
@RestController
@Slf4j
public class PaymentController {
@Resource
private PaymentService paymentService;
@Value("${server.port}")
private String serverPort;
@Resource
private DiscoveryClient discoveryClient;
@PostMapping("/payment/create")
public CommonResult create(@RequestBody Payment payment){
log.info("******传过来的payment是:【"+payment+"】");
int result= paymentService.create(payment);
log.info("******插入结果:【"+result+"】");
if(result>0){
return new CommonResult(200,"插入成功,serverPort是:"+serverPort,result);
}else {
return new CommonResult(444,"插入失败",result);
}
}
@GetMapping("/payment/get/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id){
Payment payment= paymentService.getPaymentById(id);
log.info("******插入结果:"+payment);
if(payment!=null){
return new CommonResult(200,"查询成功,serverPort是:"+serverPort,payment);
}else {
return new CommonResult(444,"查询失败,查询id:"+id,null);
}
}
@GetMapping("/payment/discovery")
public Object discovery(){
//看当前注册中心的服务有哪些
List<String> services = discoveryClient.getServices();
for (String service:services) {
log.info("当前服务名字是为:"+service);
//看当前服务名下的有哪些服务
List<ServiceInstance> instances = discoveryClient.getInstances(service);
for (ServiceInstance instance:instances) {
//service服务名称、instance.getServiceId()id、instance.getHost()主机名、instance.getPort()端口号、instance.getUri()地址
log.info("当前服务【"+service+"】下的服务id:"+instance.getServiceId()+"主机名:"+instance.getHost()+"端口号:"+instance.getPort()+"地址:"+instance.getUri());
}
}
return this.discoveryClient;
}
@GetMapping("/payment/lb")
public String getPaymentLB(){
return serverPort;
}
@GetMapping("/payment/feign/timeout")
public String paymentFeignTimeout(){
try {
TimeUnit.SECONDS.sleep(3);
}catch (InterruptedException e){
e.printStackTrace();
}
return serverPort;
}
//生成随机码
@GetMapping("/payment/getcode/{length}")
public String getCode(@PathVariable("length") int length){
System.out.println("length的值是:"+length);
return RandomCode.CreateCode(length);
}
}
在IT行业中,Spring Cloud是一个广泛使用的开源框架,用于构建分布式微服务系统。它基于Spring Boot,使得开发人员能够轻松地创建和管理云原生应用程序。本文将深入探讨标题" Ideal版SpringCloud框架参考---分布式微服务架构参考"所涵盖的关键知识点,并结合描述中的组件进行详细解析。 Eureka是Spring Cloud中的服务注册与发现组件。它允许微服务实例向中心注册表注册自己的位置信息,同时也提供服务查询功能,以便其他服务能够发现并调用它们。Eureka通过自我保护机制来防止网络分区导致的服务故障,增强了系统的健壮性。 Gateway是Spring Cloud的一个API网关,它作为所有外部请求的统一入口,提供了路由转发、过滤器等功能。Gateway可以实现动态路由、熔断、限流、安全控制等,简化了对复杂流量的管理。它支持Spring Cloud Gateway和Zuul两种模式,为开发者提供了更多的选择。 Hystrix是Netflix开发的一个容错管理工具,旨在防止服务之间的雪崩效应。它通过添加断路器模式,当服务不可用或响应时间过长时,能够快速失败,避免整个系统瘫痪。Hystrix还提供了隔离策略(线程池或信号量)以及健康检查功能,确保服务的稳定运行。 Feign是Spring Cloud中的一个声明式Web服务客户端,它简化了客户端的编写工作。开发者可以通过注解接口定义远程调用的服务,Feign会自动生成实现这些接口的HTTP客户端。它与Eureka、Ribbon等组件集成,可以实现负载均衡和服务调用。 Spring Cloud Config是配置管理工具,它支持服务化配置的集中管理和动态刷新。通过Config Server,各个微服务可以从中心配置仓库获取配置,而不是硬编码在应用中。此外,Config Server还可以与Git集成,方便版本控制和回滚。 在"cloud2020"这个压缩包文件中,可能包含了上述所有组件的示例代码和配置文件,供开发者学习和参考。通过这些实例,新手可以更好地理解如何在实际项目中集成和使用Spring Cloud。 Spring Cloud提供了一套完整的微服务解决方案,涵盖了服务发现、API网关、容错、服务调用和服务配置等多个方面。对于想要构建分布式系统的小白或者正在项目起步阶段的团队,这是一个理想的参考框架。通过深入学习和实践,可以提升系统的可扩展性和稳定性,同时降低开发和维护的复杂度。










































































































































































































































































































- 1

























- 粉丝: 0
- 资源: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Flutter的图片选择与处理插件.zip
- 基于Python的校园食堂订餐系统设计的详细项目实例(含完整的程序,GUI设计和代码详解)
- (源码)基于Vue框架的合成大西瓜游戏.zip
- 语音识别与蓝牙通信的灯控系统LW.zip
- 中学地理-中国的江河湖泊教学网设计与实现LW.zip
- 在线水果销售系统.zip
- 祖丽皮耶文献综述最终定稿版.zip
- (源码)基于STC31xx系列设备的STC3100通用驱动.zip
- 基于Python的小学家校互联平台设计的详细项目实例(含完整的程序,GUI设计和代码详解)
- (源码)基于React和dumi框架的UI组件库.zip
- 基于Python的小说阅读平台设计的详细项目实例(含完整的程序,GUI设计和代码详解)
- (源码)基于MindSpore框架的ByteTrack多目标跟踪系统.zip
- (源码)基于C++的多线程Web服务器.zip
- (源码)基于webpack4.26.1的多页面应用搭建项目.zip
- 基于C++的篮球联赛管理平台设计和实现的详细项目实例(含完整的程序,数据库和GUI设计,代码详解)
- 二手图书交易平台LW.zip



评论0