1,微服务技术栈:
注意:微服务不等于SpringCloud,SpringCloud只是微服务技术栈中的其中一部分;
- 微服务结构图
- 注册中心:维护微服务中的每一个节点信息;
- 配置中心:管理整个微服务结构中的配置信息,实现拉取和更新;
- 服务网关:将请求路由到微服务集群,并可以实现负载均衡,以及做好服务访问的容错处理,避免出现级联问题,服务保护,隔离等等措施;
- 在数据层面的数据库集群,每个服务集群都只对应一个数据库;实现数据独立;
- 在服务集群中,每个服务之间都会提供接口和其他服务搭建节点连接;
- 微服务的持续集成:
- 自动化编译:JenKins;
- 部署容器:Docker,Kubernetes,RANCHER;
只有微服务结构搭配上持续集成才是一个完整的微服务技术栈体系;
2,单体架构和分体架构
2.1,单体架构:
- **将业务的所有功能集中在一个项目中进行开发,打成一个包进行部署;**
- **优点:**
- **架构简单;**
- **部署成本低;**
- **缺点: **
- **耦合度高;**
2.2,分布式架构:
- **将业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务;**
- **优点:**
- **降低服务耦合;(松耦合)**
- **有利于服务升级拓展;**
- **适合大型项目的搭建;**
- **缺点:**
- **架构复杂;**
- **部署难度高;**
- **需要解决的问题更多;**
- **分布式架构要治理(考虑)的问题**:
- **服务拆分粒度如何?**
- **服务集群地址如何进行维护?**
- **服务之间如何实现远程调用?**
- **服务健康状态如何感知?**
3,什么是微服务?
分布式包含微服务
3.1,介绍:
微服务是一种经过良好架构设计的分布式架构方案;
- 微服务的**特征**:
1. **单一职责**:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发;
1. **面向服务**:微服务对外暴露业务接口,提供给统一标准的接口;
1. **自治**:团队独立,技术独立,数据独立,部署独立;
1. **隔离性强**:服务调用做好隔离,容错,降级,避免出现级联问题;
因此,在微服务中不允许跨库查询;
4,微服务的结构:
4.1,常见的微服务框架:
- **在国内主流的微服务框架有:SpringCloud 和 阿里巴巴的 Dubbo 以及 SpringCloud Alibaba;**
- **各框架的差异:**
- **几种常见的企业需求技术搭配:**
- **SpringCloud+Feign**:使用SpringCloud技术栈,服务接口使用Restful风格,服务调用采用Fegin方式;
- **SpringCloudAlibaba+Feign**:使用SpringCloudAlibaba技术栈,服务接口采用Restful风格,服务调用采用Fegin方式;
- **SpringCloudAlibaba+Dubbo**:使用SpringCloudAlibaba技术栈,服务接口采用Dubbo协议标准,服务调用采用Dubbo方式;
- **Dubbo原始模式**:基于Dubbo的老旧技术栈,服务接口和调用都采用Dubbo的方式;
Dubbo原始模式只需要将技术栈升级为SpringCloudAlibaba即可;
* 搭建微服务的思路:
- 分析需求 —> 什么功能 —> 导入什么启动器(starter) —> 启动类添加相应的注解 —> 在application.yml中的加入对应的配置;