1. SaaS
软件即服务,是一种通过互联网提供软件服务的模式。供应商将软件统一部署在自己的服务器,用户按照自己的需求,向供应商订购所需要的服务。就比如我们使用的阿里云服务器,我们只需要根据自己的使用需求,选择内存、镜像、使用时长等参数。供应商(阿里云)就会根据我们的这些选择,确定这台云服务器所需要的价格,付款后即可立即使用。
特点:
- 服务通过网络进行访问。
- 用户可按需求定制化服务。按需租赁、按需付费。
- 简单:用户无需担心硬件环境。对所购买的服务只需要注册安装即可上手使用。
- 灵活:随用随买。如果不需要该服务的时候,也能很便捷的停用。
2.服务架构
一个完整的服务,是由许多的小模块组成的。每个模块的功能都不尽相同。因在在确立系统架构的时候,就要对各个功能进行分析,判断该功能在以后是否有复用、扩展的可能性,或者是功能需要调整的复杂性。首先在这里引出微服务的概念。
微服务是一种架构风格:(特点:高内聚,低耦合)
1. 一组小服务
2. 每个服务运行在独立进程中
3. 服务之间使用轻量级通信
4. 服务可独立部署
5. 是基于业务能力实现
6. 无集中式管理
-
微服务的特点
1. 单一职责;微服务中每一个服务都对应唯一的业务能力 2. 轻量级的通信; 3. 隔离性,运行在自己的进程中,不会相互干扰; 4. 有自己的数据,数据的独立性,每个微服务都有自己的数据库; 5. 面向服务:技术实现的多样性,对外只提供Rest风格的接口。各个服务的具体实现互不影响
-
微服务的优缺点
微服务的优缺点大多源于它的特点 优点 1. 独立。服务与服务之间松耦合,无论是在开发阶段或部署阶段都是独立的。 2. 能够快速响应, 局部修改容易, 一个服务出现问题不会影响整个应用。 3. 每个微服务都很小,高内聚。而且对划分出来的服务也便于任务的分配,提高开发效率 缺点 1. 对架构水平要求高 2. 分布式系统过于复杂。跟踪问题难,管理难度高。
3.spring-cloud-alibaba的架构体系
-
一些组件
1. Sentinel:限流,服务熔断、降级。从多个角度保证服务之间的稳定性。 2. Nacos:注册中心+配置中心 3. Dubbo:分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。 4. Seata:是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,能处理一个典型的分布式事务过程
-
Dubbo----远程服务调用的分布式框架
Dubbo架构
节点角色说明:
Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Container: 服务运行容器。 Monitor: 统计服务的调用次调和调用时间的监控中心。
调用关系说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
结合项目结构分析,主要分为三层
1. Face层:提供访问(远程调用的接口)。
2. Produce层:充当Provider。是对Face层接口的具体实现。
3. Web(Controller)层:充当Consumer。调用服务。
关于注解:
@DubboService:负责暴露并提供服务
@DubboReference:引用服务
@DubboService将服务暴露出去,在配置文件中写明了包扫描的地址。那么服务启动的时候,就会去对应的包下扫描。
把所暴露出的服务初始化进容器中。然后通过@DubboReference就能把对应的服务引用过来。