微服务是对传统单体服务进行业务拆分,拆分成多个独立的服务。微服务包括服务集群、服务网关、注册中心、配置中心、消息队列、分布式日志服务、系统监控和链路追踪、分布式缓存、分布式搜索、数据库、 Jenkins持续集成服务器以及Docker web自动打包容器,等经过良好架构设计的分布式架构方案。
注册发现
负载均衡
配置管理
网关路由
系统保护
服务授权
熔断降级
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 Boot实现了这些组件的自动装配,从而提供了良好的开箱即用的体验

1、不同的微服务,不要重复开发相同的业务
2、微服务数据独立,不要访问其他的微服务的数据库
3、微服务可以将自己的业务暴露为接口,供其他微服务调用
注意:遵循每个微服务都独立拥有自己的数据库,其他微服务不能访问自己的数据库,只能调用自己暴露的接口。为此使用Java发起HTTP请求来远程调用其他微服务暴露出来的接口。
在Spring中提供了RestTemplate来使用Java发起HTTP请求
/**
* 创建RestTemplate对象并注入Spring
* 容器
* @return
*/
@Bean
public RestTemplate restTemplate() {
return new 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;
}