您当前的位置: 首页 >  spring

一一哥Sun

暂无认证

  • 1浏览

    0关注

    622博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Day17_01_SpringCloud教程之项目架构演进

一一哥Sun 发布时间:2019-07-07 22:47:02 ,浏览量:1

01_SpringCloud教程之项目架构演进 一. 项目架构演进

随着公司业务量的飞速发展,项目面临的挑战已经远远大于业务,需求量不断增加,技术人员数量也在不断增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进过程.

1. 集中式架构

当网站流量很小时,为了节约成本,可以将所有功能都部署在一起,以减少部署的节点和成本.此时用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键.

1.1 优点
  • 可以快速开发,开发成本低;

  • 部署简单,部署成本低;

1.2 缺点
  • 代码耦合性高,开发维护困难;

  • 无法针对不同模块进行针对性优化;

  • 无法水平扩展,可伸缩性差;

  • 单点容错率低,并发能力差;

  • 交付周期变长;

  • 新人培养周期变长. 

2. 垂直架构

当访问量增大,为了提高并发量和业务需求,我们可以根据业务功能对系统进行拆分.

2.1 优点
  • 系统拆分实现了流量分担,解决了并发问题;

  • 可以针对不同模块进行优化;

  • 方便水平扩展,负载均衡,容错率提高.

2.2 缺点
  • 系统间相互独立,会有很多重复开发工作,代码复用性低;

  • 应用之间耦合度高,相互依赖严重;

  • 各个开发团队各自为战,开发效率低下;

3. 分布式服务

我们可以抽取出核心业务,作为独立服务. 此时用于提高业务复用及整合的分布式调用是关键.

3.1 优点

将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率.

3.2 缺点

系统间耦合度变高,调用关系错综复杂,难以维护.

4. 服务治理(SOA)

SOA:面向服务的架构.

当服务越来越多,此时需要增加一个调度中心,来对访问压力进行实时的管理集群容量,提高集群利用率.

所以此时用于提高机器利用率的资源调度和治理中心(SOA)是关键.

4.1 缺点
  • 服务间会有依赖关系,一旦某个环节出错会影响较大;

  • 服务关系复杂,运维、测试部署困难,不符合DevOps思想.

5. 微服务

所谓的微服务架构,就是将单一程序开发成多个微服务,每个微服务运行处理唯一的业务,并使用轻量级通信机制,通常是HTTP RPC.这些服务一般是根据业务来进行划分和构建,并通过完全自动化部署机制来实现独立部署.这些服务可以使用不同的编程语言,以及不同数据存储技术,从而保证最低限度的集中式管理.

5.1 优点
  • 分解了单体应用提供多个服务的复杂性问题,拆分之后每个服务都有一个用RPC或是MQ或是API定义的边界.由于传统单体应用没有清晰的边界,存在开发,理解,维护,部署的复杂问题;

  • 每个服务都可以有单独的团队维护开发,开发者客户选择自己擅长和合适的技术;

  • 每个服务都可以独立部署,开发者不需要协调因其他服务调用或部署对本服务的影响,从而加快了部署速度,更好的执行AB测试,持续部署变为可能;

  • 每个服务都可以独立扩展.

5.2 缺点
  • 需要考虑和关心更多服务之间调用的问题;

  • 需要考虑多个服务的编排和依赖关系,包括开发和部署;

  • 服务的配置,部署,扩展,监控更复杂.

关注
打赏
1665624836
查看更多评论
立即登录/注册

微信扫码登录

0.1365s