【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
微服务架构是What??
微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。
每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建
SpringCloud
SpringCloud更像是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
其中包括了:服务注册与发现、服务调用、服务熔断、负载均衡、服务降级、服务消息队列、配置中心管、服务网关、服务监控、全链路追踪、自动化构建部署、服务定时任务调度操作
SpringCloud 技术栈
创建SpringCloud
通常由一个大的maven项目中包括子项目:
maven主项目:
springboot项目2(集成SpringCloud等jar包);
springboot项目2(集成SpringCloud等jar包);
当所有子项目组合起来就是SpringCloud;
SpringCloud项目的版本控制非常严苛。请依据版本来管理其他所依赖框架的版本
RestTemplate
- HttpClient 的实现接口
使用restTemplate访问restful接口非常的简单粗暴无脑
(url,requestMap,ResponseBean.class)这三个参数分别代表:
- REST请求地址
- 请求参数
- HTTP响应转换被转换成的对象类型
@Slf4j
@RestController
public class OrderController {public static final String PAYMNT_URL = "http://localhost:8001";@Resourceprivate RestTemplate restTemplate;@GetMapping("/consumer/payment/create")public CommonResult<Payment> create(Payment payment){return restTemplate.postForObject(PAYMNT_URL+"/payment/create",payment,CommonResult.class);}@GetMapping("/consumer/payment/get/{id}")public CommonResult<Payment> getPayment(@PathVariable("id") Long id){return restTemplate.getForObject(PAYMNT_URL+"/payment/get/"+id,CommonResult.class);}
}
踩坑
发送请求,提示请求成功
{"code": 200,"message": "插入数据库成功","data": 1
}
但是数据为回填为null
请注意在对数据库操作前,两个模块之间接收参数是否使用RequestBody注解接收了!
两模块之间接收消息走的是json,若不使用注解,将会造成数据丢失
@PostMapping("/create")
public CommonResult create(@RequestBody Payment payment){int result = paymentService.create(payment);log.info("********插入结果:"+result);if (result>0){return new CommonResult(200,"插入数据库成功",result);}else{return new CommonResult(500,"插入数据库失败",null);}
}
🥸🏏SpringCloud微服务专栏
- 【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
💕👉博客专栏
- Golang专栏-包含基础、Gin、Goam等知识
- 云原生专栏-包含k8s、docker等知识
- 从0开始学习云计算-华为HCIP证书
- JUC专栏-带你快速领悟JUC的知识!
- JVM专栏-深入Java虚拟机,理解JVM的原理
- 基于Java研究 数据结构与算法-包含贪心算法、加权图、最短路径算法等知识
- Docker专栏-上手热门容器技术Docker
- SpringBoot专栏-学习SpringBoot快速开发后端
- 项目管理工具的学习-设计技术:Maven、Git、Gradle等相关管理工具
- JavaSE-全面了解Java基础
- JS专栏-使用JS作的一部分实例~
- 使用CSS所作的一部分案例