无论何种技术实现,其学习过程往往都是枯燥无味的,学的越深就越发如是,IT行业更是如此。需要去实现技术是小部分人的工作,如何让不直接接触技术的人知道我们在做什么、怎么做、为什么这么做就显得有那么点意义了。

开始接触分布式和微服务这两个名词的时候分不清谁是谁,慢慢才知道这些根本不重要,无论是说分布式思想或架构还是微服务思想或架构都能表达出意思。按我的理解,微服务是属于分治思想的一种,而分布式架构是基于微服务思想来实现的更高效率支持无限扩展的超大型项目框架。

PS:分治思想(顾名思义,分而治之,此思想贯穿整个计算机底层至屏幕呈现图像实现过程,从算法到架构。最直接的理解就是牺牲部分存储空间,换取一定的运行效率。通俗点的例子:原本电脑桌面有一堆未命名文件,我每次要找到想要的文件必须每个文件都打开看一遍,直到有一天我学会了命名文件,再把同种文件归类到同个文件夹,再把同类文件夹归类到同个盘,以后就不需要每次都去翻一遍全部文件,而且有新文件类型的话也可以支持扩展文件夹。从全量操作转为分量操作)

单体服务架构

最开始,我们只是让数据库中的数据按照一定设计想法显示在屏幕(客户端)上呈现给用户操作。用户通过客户端发送指令,经过服务器处理后,在数据库中操作数据返回后再渲染给客户端无限反复的过程。

经过这么一系列搭建,网站就具备最基本的数据呈现和交互功能。这时候只需要输入IP地址 +端口号(例如127.0.0.1/8080)就可以访问网站了。而绝大部分人输入网址时候都是例如www.xxxx.com等等地址,这个就需要在客户端和服务器之间加入中间件nginx,实现通过域名来代理原本的数字地址,既可便于记忆,也防止直接暴露出地址。

此时需要脑海里模拟一下公司发展过程。随着时间推移,公司越发壮大,客户越来越多,数据库性能慢慢地到达了瓶颈,经常要处理大量的读写操作,已经不堪重负了,一到高峰期客户一个个投诉:“你们网站怎么这么卡?每点一下就要等几秒才有反应”。经过一系列排查确保非人为导致,为了解决这个问题,就必需要缓解数据库部分压力,第一加入缓存中间件redis,把不会经常被改变且会经常被读的数据放到redis里,从而减轻这部分数据访问给数据库带来的压力,第二将数据库读写分离,一个主要负责读操作,一个主要负责写操作(分治),需要用到数据库中间件mycat负责协调。(前后端分离同理,将页面模块交给前端,后端更专注于数据)

PS:后续会基于本文持续更新mysql数据库和redis缓存底层实现、演变和优化。纵观大略,由浅及深。

至此,单体架构的性能基本到达天花板。但是,客户一天天增多,终有一天会重复以前发生的反应变慢的问题。单体架构要突破瓶颈的方法只能做集群,一套架构不行,复制完再加一套,数据库不行了再加一个数据库,服务器集群、redis集群、数据库集群等等都是这个理。
以服务器集群为图例:

集群前期效果明显,后期性能越发乏力,投入成本与效率提升比例加速变大,直到发现无论怎么增加但效果都一般的时候,分布式架构应运而生。

PS:以上是单体服务演变大致全程了,由于分布式架构中间件数量太多了,下一篇再整理springcloud和主要中间件。

题外话:本文多次提到的分治思想,如何做到让专业的人负责对应的事,大幅提升效率的同时还能便于后续维护扩展,在很多领域都是通用的。例如,大公司把不擅长的非核心领域外包给擅长此领域的公司或团队,蔚来公司考虑到电动汽车的电池寿命会拉低整体汽车价值,让电池实现可拆换,从而用户不需要每次花大量时间把整部汽车拖去维修,还有时下处于风口的华为公司,万物互联所用的芯片设计也是基于此思想,做到了芯片上每块单元都可以拆卸更换升级。

分布式架构的演变过程之单体架构相关推荐

  1. 常见的服务器架构入门:从单体架构、EAI 到 SOA 再到微服务和 ServiceMesh

    前言:架构的演变流程 单体架构 ==> 垂直架构 ==> 前后端分离 ==> EAI架构  ==> SOA架构 ==> 微服务 ==> 微服务2.0 1.单体架构: ...

  2. 系统架构的演变过程(单体应用架构、垂直应用架构、分布式SOA架构、微服务架构)

    文章目录 系统架构演变 单体应用架构 垂直应用架构 分布式SOA架构 什么是SOA 微服务架构 分布式SOA架构和微服务架构对比 系统架构演变 随着互联网的发展,网站应用的规模不断扩大,常规的应用架构 ...

  3. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  4. java分布式架构_Java学习五分钟系列:从单体架构转向分布式架构的难点

    Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念.优缺点和适用场景,想要深入的了解,还需要投入更多的时间. 分布式架构和单体应用架构相比,可以充分利用多机器的性能优势,提高了系统的 ...

  5. 想从单体架构演进到分布式架构,SBA 会是一个不错的选择

    本文分享自华为云社区<从分层架构到微服务架构(五)之服务化架构>,作者:元闰子. 前言 从本文开始,我们进入了<从分层架构到微服务架构>系列中分布式架构的介绍,本文要介绍的是服 ...

  6. 什么是微服务?架构的演变过程

    什么是微服务 一.什么是微服务(microSerive) 1.分布式官网解释 官网: https://www.martinfowler.com/articles/microservices.html ...

  7. 为何从单体架构迁移到微服务这么难?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 面对微服务如火如荼的发展,很多人都在了解,学习希望能在自 ...

  8. 漫谈单体架构与微服务架构(上):单体架构

    最近微服务架构特别火爆,就跟人工智能.区块链一样,软件架构设计如果不提微服务,感觉就像是与世界先进的架构风格和开发技术脱了节似的,各方各面都无法彰显高大上的气质. 本来再打算使用一套系列文章来讨论微服 ...

  9. 单体 soa 微服务 区别_漫谈何时从单体架构迁移到微服务?

    面对微服务如火如荼的发展,很多人都在了解,学习希望能在自己的项目中帮得上忙,当你对微服务的庐山真面目有所了解后,接下来就是说服自己了,到底如何评估微服务,什么时候使用微服务,什么时间点最合适,需要哪些 ...

最新文章

  1. 电磁学讲义6:高斯定理计算电场
  2. 国科大回应:博士生每月不低于4300元!
  3. 转: mysql create view 创建视图
  4. typescript用什么软件写_为什么都2019年了大家还喜欢用TypeScript?
  5. 一个讨论:SAP项目实施的顾问,需要花时间去调试代码了解技术细节吗
  6. 从循环引用谈依赖倒置原则
  7. python 递归函数与循环的区别_提升Python效率之使用循环机制代替递归函数
  8. 2022年中国即时配送行业趋势研究报告
  9. 通用单向链表设计(一)——接口的设计
  10. aaa dot1x (cisco)
  11. 深度学习代码实战——基于RNN的手写数字分类
  12. NameValueCollection Dictionary区别
  13. GitChat · 安全 | 揭秘我国的电子取证技术
  14. 设计模式之Builder模式(链式调用)
  15. 简单的木马编写之服务端篇
  16. 基于波动率的期权交易策略分析
  17. python中减号怎么打_我的python将减号与破折号混淆
  18. 广度优先遍历搜索的最通俗介绍,如何实现广度优先搜索算法?广度优先遍历搜索可用于哪些行业?
  19. HTML期末学生大作业-新闻网页作业html+css
  20. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 2: invalid start byte

热门文章

  1. java查询数据导出excel并返回给浏览器下载
  2. teamviewer LAN 设置代理
  3. W10的AndroidStudio4.0.1的下载安装与配置
  4. lisp+等高线点线矛盾检查_基于AutoCAD平台地形图高程点与等高线点线矛盾检测方法研究与实现...
  5. 初探 sort 方法和 sorted 内置函数
  6. 下载(导出)pdf模板文件(比如:审批单)
  7. vim中复制整个别的文件内容
  8. 文心一言 VS ChatGpt
  9. 文心一言打开f12后进入空白页面
  10. 从mong 主键ObjectId获取插入时间