什么是单体架构
单体式架构是一种传统的软件程序模型,它作为独立自主且不依靠其他应用的统一单元来构建。“单体”一词通常被认为源于冰川这种庞然大物,而这与软件设计中单体式架构的本质也颇为接近。单体式架构是一种单一大型计算网络,它具有一个可将所有业务问题耦合在一起的代码库。要对此类应用进行更改,需要访问代码库并构建和部署服务端接口的更新版本来更新整个堆栈。如此一来,更新便会受限,且较为耗时。
单体架构的优点是:
- 代码简单、易于理解和开发
- 部署和运行比较简单
- 可以共享资源,节省成本
- 可以方便地进行单元测试
什么是微服务
微服务既是一种架构,也是构建软件的方法。在微服务中,应用被拆分成最小的组件,彼此独立。不同于将所有组件内置于一个架构中的传统单体式应用构建方法,在微服务架构中,所有部分相互独立,通过合作来完成同一个任务。其中的每一个组件或流程都是一个微服务。这种软件开发方法强调细粒度、轻量化,力求在多个应用中共享相似的流程它是针对云原生模型优化应用开发的主要组件。
微服务的架构风格就是以一系列小服务的方式开发系统, 每个小服务都独立运行,他们之间采用轻量级的API通讯。 必须围绕业务能力来实现。通过全自动的方式来独立部署。
每一个微服务的性能是通过扩展的方式实现的。基于3个维度
X轴: 拷贝 – 水平复制,即在负载均衡服务器后增加多个web服务器
Y轴: 拆解 – 是功能分解,将不同职能的模块分成不同的服务
Z轴:扩展– 是对数据库的扩展,即分库分表
微服与单体架构区别
-
应用程序规模 单体架构的应用程序规模比较大,通常包含用户界面、应用逻辑和数据库。而微服务架构将一个大型应用程序拆分成多个小的服务,每个服务都只包含一部分功能,规模比单体架构的应用程序要小得多。
-
应用程序的部署和运行 单体架构的应用程序是一个单一的可执行文件,部署和运行比较简单。而微服务架构将应用程序拆分成多个小的服务,每个服务都可以独立部署和运行,需要管理多个服务和服务器。
-
开发和维护成本 单体架构的应用程序代码集中在一个代码库中,开发和维护成本较低。而微服务架构需要开发和维护多个小的服务,开发和维护成本较高。
-
扩展性 单体架构的应用程序难以扩展,因为整个应用程序必须一起扩展。而微服务架构每个服务都可以独立扩展,易于扩展。
-
系统复杂度 微服务架构的系统复杂度比单体架构要高,因为需要管理多个服务和API接口。需要考虑服务发现、路由、负载均衡、容错、监控等分布式系统的难点。
微服务的特性
微服的特性包括了技术特性、业务特性、运营特性如下:
微服的架构模式
微服务的设计模式是由一组设计模式组合出来的
这张图是跟微服务相关的所有的设计模式,主要涉及如下方面:
包括服务隔离、集成测试、日志追踪与监控、松耦合、页面的聚合、安全性、服务发现、故障隔离、通信、网关、服务自治数据库。