1,微服务技术栈:

注意:微服务不等于SpringCloud,SpringCloud只是微服务技术栈中的其中一部分; image.png

  • 微服务结构图

image.png

  • 注册中心:维护微服务中的每一个节点信息;
  • 配置中心:管理整个微服务结构中的配置信息,实现拉取和更新;
  • 服务网关:将请求路由到微服务集群,并可以实现负载均衡,以及做好服务访问的容错处理,避免出现级联问题,服务保护,隔离等等措施;
  • 在数据层面的数据库集群,每个服务集群都只对应一个数据库;实现数据独立;
  • 在服务集群中,每个服务之间都会提供接口和其他服务搭建节点连接;
  • 微服务的持续集成:
    • 自动化编译:JenKins;
    • 部署容器:Docker,Kubernetes,RANCHER;
    • image.png

      只有微服务结构搭配上持续集成才是一个完整的微服务技术栈体系;

2,单体架构和分体架构

2.1,单体架构:

  1. - **将业务的所有功能集中在一个项目中进行开发,打成一个包进行部署;**
  2. - **优点:**
  3. - **架构简单;**
  4. - **部署成本低;**
  5. - **缺点: **
  6. - **耦合度高;**

2.2,分布式架构:

  -  **将业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务;**
  - **优点:**
     - **降低服务耦合;(松耦合)**
     - **有利于服务升级拓展;**
     - **适合大型项目的搭建;**
  - **缺点:**
     - **架构复杂;**
     - **部署难度高;**
     - **需要解决的问题更多;**
  - **分布式架构要治理(考虑)的问题**:
     - **服务拆分粒度如何?**
     - **服务集群地址如何进行维护?**
     - **服务之间如何实现远程调用?**
     - **服务健康状态如何感知?**

3,什么是微服务?

分布式包含微服务

3.1,介绍:

微服务是一种经过良好架构设计的分布式架构方案;

  - 微服务的**特征**:
     1. **单一职责**:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发;
     1. **面向服务**:微服务对外暴露业务接口,提供给统一标准的接口;
     1. **自治**:团队独立,技术独立,数据独立,部署独立;
     1. **隔离性强**:服务调用做好隔离,容错,降级,避免出现级联问题;

因此,在微服务中不允许跨库查询;

4,微服务的结构:

4.1,常见的微服务框架:

  - **在国内主流的微服务框架有:SpringCloud 和 阿里巴巴的 Dubbo 以及 SpringCloud Alibaba;**
  - **各框架的差异:**

image.png

  - **几种常见的企业需求技术搭配:**
     - **SpringCloud+Feign**:使用SpringCloud技术栈,服务接口使用Restful风格,服务调用采用Fegin方式;
     - **SpringCloudAlibaba+Feign**:使用SpringCloudAlibaba技术栈,服务接口采用Restful风格,服务调用采用Fegin方式;
     - **SpringCloudAlibaba+Dubbo**:使用SpringCloudAlibaba技术栈,服务接口采用Dubbo协议标准,服务调用采用Dubbo方式;
     - **Dubbo原始模式**:基于Dubbo的老旧技术栈,服务接口和调用都采用Dubbo的方式;

Dubbo原始模式只需要将技术栈升级为SpringCloudAlibaba即可;

image.png

* 搭建微服务的思路:

  • 分析需求 —> 什么功能 —> 导入什么启动器(starter) —> 启动类添加相应的注解 —> 在application.yml中的加入对应的配置;