架构演进

一、架构演进

1、WEB1.0&WEB2.0阶段

时代背景

web1.0 (单体架构):带宽不足,项目内容少,用户量少,对安全性和稳定性要求不高;
web2.0(单体架构搭建集群):带宽提速,用户量增加,门户网站开始活跃,考虑到安全性和稳定性;
在这里插入图片描述

存在的问题

  • 如何把请求平均的发送给不同的服务器,缓解服务器压力;
  • 集群搭建成功后如何实现session共享;
  • 数据量庞大时,数据库效率变慢,如何优化;

解决方案

  • Nginx- 反向代理解决请求分发,实现负载均衡;
  • Redis- 非关系型数据库,实现session共享;
  • ElasticSearch- 处理海量数据;

在这里插入图片描述

2、垂直架构

  • 随着项目不断更新,单体架构中的模块,功能越来越多,并且压力越来越大,完美体现了低内聚,高耦合;

针对以上问题演进出了垂直架构
在这里插入图片描述

3、分布式架构

随着项目不断迭代,新老功能相互交互,服务器之间要相互通讯;
架构从垂直架构演变到分布式架构

  • 分布式架构落地技术
    在这里插入图片描述
  • 国内的通讯方式有两种:
    - HTTP SpringCloud
    - RPC Dubbo

分布式架构常见问题

  • 服务之间的异步通讯 (MQ-RabbitMQ)
  • 服务之间通讯地址的维护**(Eureka、Ribbon)**
  • 服务降级**(Hystrix)**
  • 海量数据**(Mycat 实现分库分表)**

4、微服务架构

在分布式架构的基础上再次拆分在这里插入图片描述

5、Docker容器化技术

为了解决模块过多,运维成本增加的问题,采用Docker容器化技术来帮助我们管理。

分布式架构下的其他问题

分布式架构帮助我们解决了很多的问题,但是随之也带来了很多问题:

  1. 分布式事务:

最传统的操作事务的方式,是通过Connection链接对象的方式操作,Spring也提供了声明式事务的操作。

为了解决事务的问题,后续会使用到RabbitMQ | LCN方式来解决。

  1. 分布式锁:

传统的锁方式,synchronized | Lock锁,在分布式环境下,传统的锁是没有效果的。

为了解决锁的问题,后续会使用到Redis | Zookeeper来解决。

  1. 分布式任务:

在传统的定时任务下,由于分布式环境的问题,可能会造成任务重复执行,一个比较大的任务,需要可以拆分。

为了解决这个问题,后续会使用到Redis + Quartz | Elastic-Job。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值