单一架构与分布式架构的区别

架构

项目的主体结构

  • 实现业务功能的工程模块
  • 为了应对业务功能之外的需求,压力给项目中增加的中间件等其它系统
  • 为了让整个项目能够顺畅、高效的运行,需要把业务功能和中间件以及其它系统有效的结合起来

单一建构

概念

一个工程—>一个war包—>运行在一个tomcat上

allin

单机版

。。。

演变
水平拆分

​ 把原来的一个工程分成多个模块分别进行开发,一定程度上提高了模块化
在这里插入图片描述

垂直拆分

​ 按照业务功能把项目拆分成多个模块工程,但是由于彼此之间是不存在模块之间的调用,所以还不能算作真正的分布式架构。 相当于把一个项目拆分成多个小的项目分别去开发。

在这里插入图片描述

互联网时代的新挑战

  • ​ 高可扩

    ​ 项目设计架构的时候要考虑到功能的持续更新

  • ​ 高性能

    ​ 系统处理一个请求的时间尽可能短,减少用户等待的时间,优化用户体验

  • ​ 高并发

    ​ 用户访问量非常大的时候,会增加系统的并发压力

分布式架构

概念

​ 一个项目拆封成多个模块工程,每个模块工程都是一个war包,运行在各自得Tomcat上,模块之间可以通过网络互相调用。下面这个图的连线只画了一小部分。

在这里插入图片描述

方法的远程调用
本地调用

​ 在同一个项目的内部,不经过网络直接调用方法。不管是我们自己声明的方法还是第三方jar包中的方法都算是本地调用。

远程调用

在这里插入图片描述

意义
  • ​ 对内:让我们实现分布式架构
  • ​ 对外:让我们能够调用第三方接口,就是调用这些第三方的接口能让我们实现我们自己实现不了的功能。
    • 发送短信
    • 查询物流
    • 执行支付
    • 天气预报
思想跨越
SOA

​ Service Oriented Architecture 面向服务的架构

​ 在整个系统中,把相同的功能抽取出来作为一个服务,供系统中的其他模块调用,提高代码的复用性。(部分连线)

在这里插入图片描述

在这里插入图片描述

微服务

http://martinfowler.com/articles/microservices.html

​ 微服务强调的特征:独立,可部署

根据需要可以随意组合 更改的时候不用全改

在这里插入图片描述

技术演进
WebService

​ 解决应用程序之间的跨平台访问问题,基于SOAP/WSADL协议,让应用程序之间可以进行远程通信。

Dubbo+Zookeeper

​ Dubbo:基于RPC远程过程调用框架。官网 dubbo.io

​ Zookeeper:基于树形目录结构,异步通知机制的注册中心。

在这里插入图片描述

SpringBoot+SpringCloud

SpringBoot:开发具体的微服务,使用场景启动器(starter)快速整合第三方中间件

SpringCloud:提供的微服务架构整体管理的一站式解决方案

  • Eureka:注册中心
  • Ribbon:客户端的负载均衡
  • Feign:远程接口的声明式调用
  • Hystrix:远程接口的声明式调用服务的熔断,降级,监控
  • Zuul:网关
相关概念
接口

​ 一个以接口为功能代表的分布式环境下的服务模块

在这里插入图片描述

远程接口的声明式调用
@Controller
public class EmpController{
    
    @Autowired
    private EmpRemoteService empRemoteService;
    
    @RequestMapping("/xxx/xxx")
    public String xxx(){
        //像调用本地方法一样调用远程方法。所有远程方法调用时产生的请求,响应等细节全部被框架屏蔽了
        empRemoteService.xx();
        
        return "xxx";
    }
}
注册中心

​ 远程接口的声明式调用之所以能够实现,就是因为Dubbo或Feign这样的框架,把服务的具体信息存入了注册中心,对程序员在上层进行的具体代码编写全部屏蔽细节。

在这里插入图片描述

分布式架构优缺点
优点
  • 模块化程度更高,有利于分工

  • 有利于提升小木的性能

    • 整体提升

      • 整个项目中每个模块都可以独占一台服务器,整个项目分配到的服务器资源更多
    • 局部提升

      • 由于对项目进行了拆分,所以可以有针对性的对项目中局部的模块进行专门的优化。

        专门的优化

        ​ 纵向:给当前模块所在的服务器增加硬件资源

        ​ 横向;给当前模块配置集群

缺点
  • 结构复杂
    • 调用关系复杂
    • 部署复杂
  • 数据不一致问题
    • Session不一致问题
    • 分布式事务问题
分布式和集群
相同点

​ 都需要使用多台服务器

不同点

​ 分布式:每台服务器上运行的模块不同——异构

​ 集群:每台服务器上运行的模块相同

在这里插入图片描述


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rabbityyhh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值