Cloud 微服务

架构

一 单体架构

1 概念

将项⽬所有模块(功能)打成jar或者war,然后部署⼀个进程。

互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。 比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块,我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

2 优点:

1:部署简单: 由于是完整的结构体,可以直接部署在⼀个服务器上即可。

2:技术单⼀: 项⽬不需要复杂的技术栈,往往⼀套熟悉的技术栈就可以完成开发。

3:⽤⼈成本低: 单个程序员可以完成业务接⼝到数据库的整个流程。

3 缺点:

1:系统启动慢, ⼀个进程包含了所有的业务逻辑,涉及到的启动模块过多,导致系统的启动重启时间周期过⻓;

2:系统错误隔离性差、可⽤性差,任何⼀个模块的错误均可能造成整个系统的宕机;

3:可伸缩性差:系统的扩容只能只对这个应⽤进⾏扩容,⽆法结合业务模块的特点进⾏伸缩。

4:线上问题修复周期⻓:任何⼀个线上问题修复需要对整个应⽤系统进⾏全⾯升级。

5:跨语⾔程度差

6:不利于安全管理,所有开发⼈员都拥有全量代码

二 微服务架构

1 概念

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

2 优势

1.易于开发和维护

⼀个微服务只关注⼀个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对⽐较简单,整个应⽤是由若⼲个微服务构建⽽成,所以整个应⽤也会维持在可控 状态;

2.单个微服务启动较快

单个微服务代码量较少,所以启动会⽐较快;

3.局部修改容易部署

单体应⽤只要有修改,就要重新部署整个应⽤,微服务解决了这样的问题。⼀般来说,对某 个微服务进⾏修改,只需要重新部署这个服务即可;

4.技术栈不受限

在微服务中,我们可以结合项⽬业务及团队的特点,合理地选择技术栈

5.按需伸缩

3 缺点

1、服务太多,导致服务间的依赖错综复杂,运维难度⼤

2、微服务放⼤了分布式架构的系列问题

  • 分布式事务(seata)、

  • 分布式锁怎么处理(redisson),

  • 服务注册与发现(微服务)、

  • 依赖服务不稳定(sentinel)导致服务雪崩怎么办?

3 运维复杂度陡增,部署数量多、监控进程多导致整体运维复杂度提升。

三 Cloud

1 SpringCloud与微服务关系

Springcloud为微服务思想提供了完美的解决⽅案

2 SpringBoot和SpringCloud关系

  • SpringBoot专注于快速⽅便的开发单个个体微服务。

  • SpringCloud是关注全局的微服务协调、整理、治理的框架,它将SpringBoot开发的单体整合并管理起来。

  • SpringBoot可以离开SpringCloud独⽴使⽤开发项⽬,但是SpringCloud离不开 SpringBoot,属于依赖关系。

3 Springcloud与springcloud-alibaba关系

◆ 我们通常说的SpringCloud,泛指Spring Cloud Netflix,也是springcloud第⼀代

◆ SpringCloud Alibaba是SpringCloud的⼦项⽬,是阿⾥巴巴结合⾃身微服务实践,

◆ SpringCloud Alibaba符合SpringCloud标准,依赖于springcloud

四 版本

springboot的版本查看地址:Spring Boot

springcloud的版本查看地址:Spring Cloud

详细版本对应信息 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

你可能感兴趣的:(微服务,架构,云原生)