一、单体结构 VS 分布式结构
单体结构:将所有功能集中在一个项目开发,打包部署。
优点:架构简单,部署成本低;
缺点:耦合度较高。
分布式结构:根据业务功能的具体功能对系统进行拆分,每个业务模块作为独立的项目开发,称为一个服务。
优点:耦合度低,便于业务拓展。
缺点:架构复杂,运维、监控以及部署的难度大。
二、微服务简介
微服务是一种经过良好架构设计的分布式架构方案
微服务架构特征:
- 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发;
- 面向服务:微服务对外暴露业务接口;
- 自治:团队独立、技术独立、数据独立、部署独立;
- 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。
微服务注意点:
- 微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务
- 微服务可以将业务暴露为接口,供其它微服务使用
- 不同微服务都应该有自己独立的数据库
微服务调用方式:基于RestTemplate发起的http请求实现远程调用,http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。
服务调用关系:
服务提供者:暴露接口给其它微服务调用
服务消费者:调用其它微服务提供的接口
提供者与消费者角色其实是相对的,一个服务可以同时是服务提供者和服务消费者