
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
单体架构开发是目前大多数软件编程开发程序员都在使用的一种编程开发模式,而本文我们就通过案例分析来简单了解一下,单体架构开发都有哪些注意事项。
一、单体架构
1.1什么时候用单体架构
在创业初期或项目开始时,项目整体功能比较少,开发人员也少,且项目需要用少时间开发出来,用MVP方式快速进行市场验证是否可行,这时候就可以用单体架构进行快速开发。
程序架构设计:
这时候我们开发的单体应用程序,部署在应用服务器上。程序架构可能采用MVC这种程序架构模式。
当然也有可能什么架构都不用,直接撸代码了,所有的程序都混合在一起,这就是所谓的“大泥球”单体,这是一种糟糕的开发方式。
java里常用的MVC框架,比如SpringMVC框架。
划分模块
比如根据上面电商功能架构图,在程序里可以把电商功能划分为相对应的模块,如用户模块,订单模块,商品模块。
这时程序里不管是前台功能,后台功能都有这些模块。
这时候应用程序模块都在一个大的单体项目里,前台功能和管理后台共用一套代码。
模块里的功能
比如前台商品模块,就有商品列表,商品详情页等页面功能。
程序开发
编写程序时可能应用MVC这种程序设计模式来进行程序代码开发。
编写的程序代码部署到应用服务器上,用户的所有数据存储到MySQL数据库里。
程序和MySQL都部署在同一台服务器上。
二、单体架构演进
2.1MySQL性能瓶颈-缓存
随着项目上线,公司对项目加大力度推广和运营,用户数越来越多。
有一天,用户投诉说,商品详情页面浏览好慢。如是你一番操作猛如虎,发现详情页显示慢,性能瓶颈出现在数据库MySQL上,
MySQL在用户访问高峰时,扛不住那么大的访问量。这时你想到的解决方法,可以用缓存来缓存一部分数据,不必每次都到MySQL取数据,可以用Redis来缓存部分商品信息数据。
2.2MySQL读写分离
这时候,你也可能想到另外的一种方法:数据的读写分离,减轻对MySQL访问压力。
经过上面2种措施改进后,商品详情页访问速度开始变快,访问正常了。
但是这种舒服日子没过几个月,又有用户开始反馈页面访问比较慢。
你又一番埋头辛苦分析,发现是单台服务器负载高,单台服务器的性能已经到了极限,它已经承载不了那么多用户的访问。
如是你想,把数据存储和应用程序部署到2台服务器上,减轻服务器的负载压力。
2.3:数据存储和应用程序服务器分离
于是你申请买了一台服务器,把MySQL和Redis都部署在这台新买的服务器上,让原来那台服务器负载得到缓解。
新的架构部署成功后,用户访问页面又恢复正常。
但是随着业务发展越来越好,新增用户越来越多,应用服务器的负载又居高不下了。
这时候要增加新的应用服务器了,这样做是简单的。多台应用服务器形成集群,那怎么访问这些应用服务器?才能使每台服务器负载保持平衡,或者性能好的多接受一些用户访问?这时候就要用到负载均衡了。
2.4集群-分布式
集群-负载均衡(多台应用服务器)
部署多台应用服务器形成一个应用服务器集群,前面用户通过负载均衡器来进行服务的访问。
比较常用的负载均衡软件有Nginx、LVS、KeepAlived等等。
还有硬件负载均衡,比如F5等。
部署后,页面访问又恢复了正常。
过了几个月,数据服务器也出现负载过高情况,这时候可以把Redis缓存和MySQL分离,部署到不同服务器上。
随着数据量增加,把Redis部署为分布式缓存。
数据库分离和Redis分布式缓存
把MySQL和缓存Redis部署到不同的服务器上。
随着缓存数据的增多,Redis也部署为主从模式,然后到RedisCluster集群模式,也就是Redis的分布式缓存。
此时数据存储服务器负载得到缓解,访问恢复正常。
由于业务发展太快,用户变得更多,数据库又出现了性能瓶颈,这时可以对数据库进行分库分表
分库分表
为了进一步的降低数据库由于数据量太多,访问太大而造成的瓶颈,可以对数据库进行分库分表,减轻数据库的访问压力。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。