【篇章一】SpringCloud前言 - 单体架构系统

目录

前言

单体架构系统

1.什么是单体架构

2.单体架构的优缺点

关于部署

关于开发和整理

 3.总结


前言

刚毕业的学生党一枚,了解到现在分布式系统 - 微服务体系的火热,自Spring5.0版本的更新,通过百度等各种引擎了解Spring的身影,SpringBoot新颖的名词也是在那个时候,才逐渐接触,回想起临近毕业的前几个月,用springboot + JPA搭建一个小型应用软件,周期效率大幅度缩减,真是叹为观止。关于SpringCloud微服务架构体系的学习,我们首先要了解关于单体架构的含义。

关于单体架构系统的介绍,我们可以从以下几点入手入手:

  1. 什么是单体架构系统
  2. 单体架构的优缺点

单体架构系统

1.什么是单体架构

早期互联网软件行业的架构体系,将视图交互,业务,DB数据交互统一归为一类处理。

从jsp + servlet的mvc体系搭建,到spring + springmvc + mybatis轻量级的框架使用,所有项目无不都是围绕这一特点来进行搭建。而我们所说单体架构也就是:基于MVC设计思想,将所有涉及到的层面统一归为一类项目进行搭建。也可以把它说成:一个war有很多不同场景的业务模块。

举例来说:我们准备设计一款开放式的娱乐平台,需求模块有很多个专栏:如篮球,游戏,主题乐园等。这些所谓的专栏可以理解为应用场景,这里用单体架构来设计的话,就是将篮球,游戏,主题乐园统一放到一个项目中去处理业务,数据交互等。

Ps: 如果我们把这些不同应用场景的业务拆分,针对不同场景的模块需求进行编译,最后再统一集中在一个服务总站去“拿到”我们想用的模块接口,岂不是更好。


2.单体架构的优缺点

从单体架构项目搭建和部署入手:我们可以把它理解为传统项目,从设计的角度分为以下几种(自己所涉及到范围):

上游层次:

                 表示层:用于直接与用户交互,通常表示:网页,UI

                 业务逻辑层:业务处理,通过现实场景来进行业务编译

                 数据访问层:数据库读写操作,得到大量的数据提供至业务处理层

下游层面:

                 网关层:接口拦截处理,常用于用户登录的session处理

                 功能性工具:如加密机制,图文上传,图文识别,数据爬虫等

                 数据源优化:针对不同的数据源进行配置,如创建连接池,最大连接数,最小连接数

                 非关系型数据库优化:Redis,mongoDB,MemcacheDB配置,集群等

                  .........

关于部署:

理解传统项目的大体架构,在项目打包部署的时候,通常已maven指令打成war包,然后将war包部署到tomcat,jetty等这样容器中运行。我们试想一下:可不可以抛弃将war包部署到容器这一繁琐环节,通过maven直接打包到特有的容器中,完成自动化部署配置呢,当然这是可以的,我们可以借助IDEA,Eclipse的远程服务连接插件,将修改的内容文件传送到远端服务器上。

缺点:如上阐述,并非纯粹的自动化部署。如果一个项目,修改的文件量过多,通过上述的方式,而不能一一去比对,在上传的过程中,出现某些非人为因素所导致的文件或某些代码段丢失,严重的会导致整体项目崩溃。--- 兴许你了解过docker就会解决如上问题

 

关于开发和整理

对于一个用户量不是很多的小型应用,维护性并不是那么可观的就能看出来,但这也是它的优点之一,仅仅只是小而已。最典型的LAMP系统,及Linux操作系统,apache,mysql,php,在项目搭建的初始阶段,这种架构的性价比是极为迅速的,开发效率快,成本低,本身用户量小,维护起来也不是困难。

缺点:项目过于庞大,用户量达到上万,上百万时,传统项目显然暴露出它的不足:

           1. 开发相对困难:模块之间的强耦合性过多

           2. 项目管理相对困难:远程仓库有很多不同分支点,可能需要对多个分支点进行代码维护

           3. 测试相对困难:测试人员针对于多个模块需要对不同生产环境进行测试

           4. 代码可读性差:后期需求模块的叠加,可能会出现代码冗余,新来的开发人员接手时可能有些猝不及防的感觉

           5. 高并发的处理:随着用户的越来越多,累计的业务需求不断增多,我们会引入多线程,并发,异步,线程安全,锁,负载均衡,集群等这样的机制,当然我们学习多线程的时候也都知道,对于线程安全锁的实现,性能上大幅度缩减项目的运行效率,除了本质上的线程引入线程池的优化,最大并发数的优化,数据库底层的优化,容器的最大并发数优化,nginx集群,非关系数据库缓存与集群,数据库读写分离,分库分区等等,达到一定的压力值后也会很快冲破瓶颈,能力上还是有限的。


 

 3.总结

           产品的走势,用户量的预算,如果是初期搭建或者用户量不是过于庞大,选择单体架构还是很不错一个选择。成本低,开发效率快,维护也方便,当然前提是初期和用户量少的条件。

            产品用户量过于庞大,则不建议使用单体架构。

针对于项目搭建的初期来说,是有必要去了解不同体系的架构。骨架是产品的根骨,一个好的架构才能成就一款好的产品。对于单体架构体系和分布式架构体系,我们在学习的时候也要对其有个大体的了解,这也是为了以后成为高级工程师,架构师的基础,关于分布式体系,我们也可以去了解一下SOA理念,再结合SpringCloud。


PS: 后续会针对与SpringCloud微服务这里做一个专栏,周期不定,但最长不会超过5天。喜欢可以互相分享,借鉴,不足之处还需大家点拨。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值