课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,下面我们就一起来了解一下,程序员常用软件架构方法都有哪些。
1、单体架构(Monolithic)
单体应用时代:应用程序无论如何分层,都是一个解决方案,或者说都是一个项目,这里的“解决方案”和“项目”不是我们使用的VisualStudio里面的概念,终的程序代码都会在一个进程里运行。
优点:开发简单,集中管理,没有分布式的损耗,都是系统进程内的通信。
缺点:不好维护,升级困难,耦合严重,无法应付高并发和大数据场景,无法快捷迭代。
(1)、只能采用同一种技术,很难用不同的语言或者相同语言不同版本开发不同模块。
(2)、系统耦合性太强,其中一个模块有问题,这个系统就会瘫痪,一个模块升级,整个系统就得停机维护。
(3)、要上线,必须一起上线,互相等待,无法快速相应市场需求。
(4)、集群负担大,如果想要集群,只能对整个系统进行集群,即使一个模块有压力。
2、垂直拆分
随着业务规模的越来越庞大,系统设计就越来越复杂,大的系统就开始进行业务的垂直拆分。比如:有专门做商品秒杀的部门,有专门做生鲜商品的部门,有专门做超市的部门,等等,当然这是根据部门天生划分的,也有根据业务需求进行系统划分的。
优点:垂直拆分,系统独立部署和维护,每个系统在自己进程内执行,分而治之。
缺点:拆分越多,存储越复杂,系统间重复的东西也越多,单个系统还是单体模式。
3、分布式服务
随着业务系统的越来越庞大,软件系统设计起来越来越复杂。为了避免过度复杂的业务需求,开始对业务系统的进行垂直拆分,形成多个独立的业务系统,如果多个系统之间要通信,可以通过跨进程的技术完成通讯。但是垂直拆分也导致了大量重复代码、重复模块的产生,比如:用户模块、日志模块、支付模块、认证授权模块等,这样分散的代码也给系统的维护和升级带来了困难。我们对业务重新划分,把独立的模块接口化、服务化,提高重用,这个时候,我们就开始进入了分布式服务的时代。(分布式的一要务就是不要分布式)
优点:
1、独立进程部署,独立进程运行,独立演化。服务之间可以做到高内聚,低耦合。
2、独立开发和维护,业务解耦,无论是业务系统还是分布式服务都独立演化。
3、分布式管理
4、隔离性增强
5、由一系列服务组装成系统,不用重复建设,模块、代码可以复用。
缺点:
1、数据一致性(多服务完成一个任务)和系统的可用性(集群)成为问题
2、数据库也进行了拆分。
3、维护、设计、架构成本增加,调试、纠错更难。
4、网络传输分布式损耗成本
5、不适合高并发和大数据的环境。
4、微服务架构
微服务的出现时分布式架构已经很成熟了,架构中各种问题已经有了很成熟的解决方案,对于现在的业务系统来说,分布式架构已经变成了一种常规手段,这个时候,微服务就出现了。微服务架构是一个用分布式服务拆分业务逻辑,完成解耦的架构模式(架构风格)。
微服务肯定是分布式的一种,是在分布式技术成熟之后,然后把分布式当成解耦手段来架构系统-----因为拆分的服务很细致,服务数量规模开始变多了,服务的体量开始缩小了,由以前几个大的服务,转变为多个独立运行的、原子性质的服务。
微服务重要的特性是:
(1)、可用性:描述一个系统在一段时间内提供有用资源的能力,从而减少停工时间,而保持其服务的高度可用性。
(2)、伸缩性:根据需求动态添加和删除系统中资源的能力,是水平或垂直扩展的专门实现。
集群(负载均衡)可以解决系统的高可用和伸缩特性。
优点:
(1)、可以使用不同语言或者相同语言的不同版本开发各个模块。
(2)、系统耦合性低,各个模块分而治之,独立部署,独立发布,独立维护。
(3)、可以更快的相应市场的需求,更符合敏捷开发。
(4)、可以对不同模块使用集群策略,哪里有问题治哪里。
缺点:
(1)、开发难度更大,系统结构更复杂。
(2)、运行效率低,网络调用成本很大。
5、SOA面向服务架构
Service-OrientedArchitecture面向服务架构:是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。