初识微服务
1、微服务是一种经过良好架构设计的分布式架构实现方案,微服务架构具有以下特征:
- 单一职责: 微服务拆分粒度小,每一个服务都对应唯一的业务功能,做到单一职责,避免重复开发。
- 面向服务: 微服务对外暴露业务接口
- 自治: 团队独立、技术独立、数据独立、部署独立
- 隔离性强: 服务调用做好隔离、容错、降级、避免出现级联问题
2、微服务结构
微服务这种方案需要技术框架来落地。国内知名的微服务框架有SpringCloud和阿里巴巴的Dubbo。
微服务大体架构图如下:
微服务拆分注意事项:
1、不同微服务不要重复开发相同的业务
2、微服务数据独立,不要访问其他微服务的数据库、
3、微服务可以将自己的业务暴露为接口,供其他微服务调用
4、每一个服务有自己单独的数据库
微服务注册中心:
以Eureka架构为例,在此架构中,微服务角色有两类:
- EurekaServer:
服务端,即注册中心,记录每一个微服务的信息。当一个微服务调用另一个微服务时,直接向注册中心获取信息即可。同时进行心跳监控,监控微服务是否存活 - EurekaClient:
- 客户端,即所有单个的微服务都属于客户端。其中当一个微服务调用另一个微服务时,前者作为消费者,后者作为服务提供者。所有微服务都需要定时向注册中心发送心跳,告知存活状态。其中消费者需要调用其他微服务时,向注册中心拉取服务列表,再基于负载均衡,选择一个合适的微服务进行远程调用。
项目中Eureka使用总结:
1、搭建EurekaServer注册中心
- 引入eureka-server依赖
- 添加@EnableEurekaServer注解
- 在application.yml中配置eureka地址
2、服务注册
- 引入eureka-client依赖
- 在application.yml中配置eureka地址
3、服务发现
- 引入eureka-client依赖
- 在application.yml中配置eureka地址
- 给RestTemplate添加@LoadBalanced的负载均衡注解
- 使用服务提供者的服务名称进行远程调用