微服务介绍以及远程调用

简介

什么是微服务

微服务是对传统单体服务进行业务拆分,拆分成多个独立的服务。微服务包括服务集群、服务网关、注册中心、配置中心、消息队列、分布式日志服务、系统监控和链路追踪、分布式缓存、分布式搜索、数据库、 Jenkins持续集成服务器以及Docker web自动打包容器,等经过良好架构设计的分布式架构方案。
微服务介绍以及远程调用_第1张图片

微服务技术栈

微服务治理

注册发现

远程调用

负载均衡

配置管理

网关路由

系统保护

流量控制

服务授权

分布式事务

熔断降级

TCC模型

AT模型

Seata

异步通信技术

MQ消息模型

消息堆积问题

Spring AMQP

仲裁消息

消息可靠性

延迟队列

镜像集群

数据持久化

缓存技术

缓存击穿、雪崩

Redis主从复制

缓存数据同步

多级缓存分层

Lua脚本

Redis数据结构

SpringDataRedis

OpenResty

Nginx本地缓存

Redis分片集群

搜索技术

DSL语句

ES集群

集群脑裂

聚合统计

地理坐标

RestAPI

竞价排名

自动补全

拼音分词

持续集成

DockerCompose

Dockerfile

GrayLog

Jenkins

Docker使用

SkyWalking

Kubernetes

Spring Cloud

Spring Cloud集成了各种微服务功能组件,并基于Spring Boot实现了这些组件的自动装配,从而提供了良好的开箱即用的体验

Spring Cloud和Spring Boot版本的关系

微服务介绍以及远程调用_第2张图片

服务拆分的注意事项

1、不同的微服务,不要重复开发相同的业务

2、微服务数据独立,不要访问其他的微服务的数据库

3、微服务可以将自己的业务暴露为接口,供其他微服务调用

远程调用

注意:遵循每个微服务都独立拥有自己的数据库,其他微服务不能访问自己的数据库,只能调用自己暴露的接口。为此使用Java发起HTTP请求来远程调用其他微服务暴露出来的接口。

使用RestTemplate

在Spring中提供了RestTemplate来使用Java发起HTTP请求

Spring装配RestTemplate
/**
* 创建RestTemplate对象并注入Spring
* 容器
* @return
*/
@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}
使用RestTemplate调用远程接口
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;

public Order queryOrderById(Long orderId) {
    // 1.查询订单
    Order order = orderMapper.findById(orderId);
    // 使用RestTemplate发起HTTP请求
    // 发送GET请求使用getForObject
    // 发送POST请求使用postForOject
    User user = restTemplate.getForObject("http://localhost:8081/user/"+order.getUserId(), User.class);
    order.setUser(user);
    // 4.返回
    return order;
}

你可能感兴趣的:(JAVA,SpringBoot,SpringCloud,微服务,java,数据库)